DEVTOOLS-185 Remplacer le json en dur des images resgen #11

Merged
q.bandera merged 1 commits from DEVTOOLS-186/SVG_resgen into master 2024-04-19 17:02:26 +02:00
4 changed files with 97 additions and 56 deletions

View File

@ -119,7 +119,7 @@ class XcassetsGenerator {
}
// Write Content.json
let imagesetContentJson = parsedImage.contentJson
guard let imagesetContentJson = parsedImage.contentJson else { return }
let contentJsonFilePath = "\(imagesetPath)/Contents.json"
let contentJsonFilePathURL = URL(fileURLWithPath: contentJsonFilePath)

View File

@ -0,0 +1,32 @@
//
// ImageContent.swift
//
//
// Created by Quentin Bandera on 19/04/2024.
//
import Foundation
struct AssetContent: Codable, Equatable {
let images: [AssetImageDescription]
let info: AssetInfo
static func == (lhs: AssetContent, rhs: AssetContent) -> Bool {
guard lhs.images.count == rhs.images.count else { return false }
let lhsImages = lhs.images.sorted(by: { $0.scale < $1.scale })
let rhsImages = rhs.images.sorted(by: { $0.scale < $1.scale })
return lhsImages == rhsImages
}
}
struct AssetImageDescription: Codable, Equatable {
let idiom: String
let scale: String
let filename: String
}
struct AssetInfo: Codable, Equatable {
let version: Int
let author: String
}

View File

@ -42,32 +42,43 @@ struct ParsedImage {
// MARK: - Assets
var contentJson: String {
"""
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "\(name).\(XcassetsGenerator.outputImageExtension)"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "\(name)@2x.\(XcassetsGenerator.outputImageExtension)"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "\(name)@3x.\(XcassetsGenerator.outputImageExtension)"
var contentJson: String? {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
guard let data = try? encoder.encode(imageContent) else {
let error = ImagesError.writeFile("Contents.json", "Error encoding json file")
print(error.description)
Images.exit(withError: error)
}
return String(data: data, encoding: .utf8)
}
var imageContent: AssetContent {
return AssetContent(
images: [
AssetImageDescription(
idiom: "universal",
scale: "1x",
filename: "\(name).\(XcassetsGenerator.outputImageExtension)"
),
AssetImageDescription(
idiom: "universal",
scale: "2x",
filename: "\(name)@2x.\(XcassetsGenerator.outputImageExtension)"
),
AssetImageDescription(
idiom: "universal",
scale: "3x",
filename: "\(name)@3x.\(XcassetsGenerator.outputImageExtension)"
)
],
"info" : {
"version" : 1,
"author" : "ResgenSwift-Imagium"
}
}
"""
info: AssetInfo(
version: 1,
author: "ResgenSwift-Imagium"
)
)
}
// MARK: - Extension property

View File

@ -127,35 +127,33 @@ final class ParsedImageTests: XCTestCase {
height: 10)
// When
let property = parsedImage.contentJson
let property = parsedImage.imageContent
// Expect
let expect = """
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "\(imageName).\(XcassetsGenerator.outputImageExtension)"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "\(imageName)@2x.\(XcassetsGenerator.outputImageExtension)"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "\(imageName)@3x.\(XcassetsGenerator.outputImageExtension)"
}
let expect = AssetContent(
images: [
AssetImageDescription(
idiom: "universal",
scale: "1x",
filename: "\(parsedImage.name).\(XcassetsGenerator.outputImageExtension)"
),
AssetImageDescription(
idiom: "universal",
scale: "2x",
filename: "\(parsedImage.name)@2x.\(XcassetsGenerator.outputImageExtension)"
),
AssetImageDescription(
idiom: "universal",
scale: "3x",
filename: "\(parsedImage.name)@3x.\(XcassetsGenerator.outputImageExtension)"
)
],
"info" : {
"version" : 1,
"author" : "ResgenSwift-Imagium"
}
}
"""
info: AssetInfo(
version: 1,
author: "ResgenSwift-Imagium"
)
)
XCTAssertEqual(property.adaptForXCTest(), expect.adaptForXCTest())
XCTAssertEqual(property, expect)
}
}