Generate images in correct order, show failures
This commit is contained in:
parent
6b6db702f1
commit
ece39cb95e
@ -19,7 +19,7 @@ final class ImageGenerator {
|
|||||||
settings.paths.imagesOutputFolderPath
|
settings.paths.imagesOutputFolderPath
|
||||||
}
|
}
|
||||||
|
|
||||||
private func needsToGenerate(_ version: ImageVersion) -> Bool {
|
func needsToGenerate(_ version: ImageVersion) -> Bool {
|
||||||
if version.wasPreviouslyGenerated {
|
if version.wasPreviouslyGenerated {
|
||||||
return !exists(version)
|
return !exists(version)
|
||||||
}
|
}
|
||||||
@ -44,10 +44,6 @@ final class ImageGenerator {
|
|||||||
// MARK: Image operations
|
// MARK: Image operations
|
||||||
|
|
||||||
func generate(version: ImageVersion) -> Bool {
|
func generate(version: ImageVersion) -> Bool {
|
||||||
guard needsToGenerate(version) else {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if version.type == .avif {
|
if version.type == .avif {
|
||||||
if version.image.type == .gif {
|
if version.image.type == .gif {
|
||||||
// Skip GIFs, since they can't be converted by avifenc
|
// Skip GIFs, since they can't be converted by avifenc
|
||||||
|
@ -72,19 +72,48 @@ extension Content {
|
|||||||
|
|
||||||
private func generateRequiredImages() {
|
private func generateRequiredImages() {
|
||||||
let images = results.imagesToGenerate.sorted()
|
let images = results.imagesToGenerate.sorted()
|
||||||
|
|
||||||
let count = images.count
|
let count = images.count
|
||||||
var completed = 0
|
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 {
|
for image in images {
|
||||||
guard shouldGenerateWebsite else { return }
|
guard shouldGenerateWebsite else { return }
|
||||||
defer {
|
guard imageGenerator.needsToGenerate(image) else {
|
||||||
completed += 1
|
|
||||||
status("Generating required images: \(completed) / \(count)")
|
|
||||||
}
|
|
||||||
if imageGenerator.generate(version: image) {
|
|
||||||
results.created(outputFile: image.outputPath)
|
results.created(outputFile: image.outputPath)
|
||||||
|
didFinishOneImage()
|
||||||
continue
|
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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,6 +71,9 @@ struct GenerationContentView: View {
|
|||||||
GenerationStringIssuesView(
|
GenerationStringIssuesView(
|
||||||
text: "unsaved output files",
|
text: "unsaved output files",
|
||||||
items: $content.results.unsavedOutputFiles)
|
items: $content.results.unsavedOutputFiles)
|
||||||
|
GenerationStringIssuesView(
|
||||||
|
text: "failed image generations",
|
||||||
|
items: $content.results.failedImages) { $0.outputPath }
|
||||||
GenerationStringIssuesView(
|
GenerationStringIssuesView(
|
||||||
text: "missing files",
|
text: "missing files",
|
||||||
items: $content.results.missingFiles)
|
items: $content.results.missingFiles)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user