Generate images in correct order, show failures
This commit is contained in:
@ -72,19 +72,48 @@ extension Content {
|
||||
|
||||
private func generateRequiredImages() {
|
||||
let images = results.imagesToGenerate.sorted()
|
||||
|
||||
let count = images.count
|
||||
var completed = 0
|
||||
|
||||
func didFinishOneImage() {
|
||||
completed += 1
|
||||
status("Generating required images: \(completed) / \(count)")
|
||||
}
|
||||
|
||||
// Finish existing images
|
||||
var newImagesToGenerate: [ImageVersion] = []
|
||||
var avifImagesToGenerate: [ImageVersion] = []
|
||||
for image in images {
|
||||
guard shouldGenerateWebsite else { return }
|
||||
defer {
|
||||
completed += 1
|
||||
status("Generating required images: \(completed) / \(count)")
|
||||
}
|
||||
if imageGenerator.generate(version: image) {
|
||||
guard imageGenerator.needsToGenerate(image) else {
|
||||
results.created(outputFile: image.outputPath)
|
||||
didFinishOneImage()
|
||||
continue
|
||||
}
|
||||
results.failed(image: image)
|
||||
if image.type == .avif {
|
||||
avifImagesToGenerate.append(image)
|
||||
} else {
|
||||
newImagesToGenerate.append(image)
|
||||
}
|
||||
}
|
||||
|
||||
func generate(images: [ImageVersion]) {
|
||||
for image in images {
|
||||
guard shouldGenerateWebsite else { return }
|
||||
defer { didFinishOneImage() }
|
||||
if imageGenerator.generate(version: image) {
|
||||
results.created(outputFile: image.outputPath)
|
||||
continue
|
||||
}
|
||||
results.failed(image: image)
|
||||
}
|
||||
}
|
||||
|
||||
generate(images: newImagesToGenerate)
|
||||
generate(images: avifImagesToGenerate)
|
||||
if completed != count {
|
||||
print("Expected \(count) images processed, but only \(completed) were")
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user