DEVTOOLS-192 Resgen iOS vector
Some checks failed
gitea-openium/resgen.swift/pipeline/pr-master There was a failure building this commit

This commit is contained in:
Quentin Bandera 2024-06-21 09:18:51 +02:00
parent 2357a40fff
commit be4c561ea8
4 changed files with 65 additions and 49 deletions

View File

@ -87,20 +87,9 @@ class XcassetsGenerator {
let convertArguments = parsedImage.convertArguments
if parsedImage.imageExtensions.contains(.vector) {
let output = "\(imagesetPath)/\(parsedImage.name).\(OutputImageExtension.svg.rawValue)"
let tempURL = URL(fileURLWithPath: output)
if imageData.ext == "svg" {
if parsedImage.imageExtensions.contains(.png) {
do {
if FileManager.default.fileExists(atPath: tempURL.path) {
try FileManager.default.removeItem(atPath: tempURL.path)
}
try FileManager.default.copyItem(atPath: imageData.path, toPath: tempURL.path)
} catch {
print(error.localizedDescription)
}
} else if imageData.ext == "svg" {
// /usr/local/bin/rsvg-convert path/to/image.png -w 200 -h 300 -o path/to/output.png
// /usr/local/bin/rsvg-convert path/to/image.png -w 200 -o path/to/output.png
// /usr/local/bin/rsvg-convert path/to/image.png -h 300 -o path/to/output.png
@ -119,6 +108,21 @@ class XcassetsGenerator {
Shell.shell(command1x)
Shell.shell(command2x)
Shell.shell(command3x)
} else {
let output = "\(imagesetPath)/\(parsedImage.name).\(OutputImageExtension.svg.rawValue)"
let tempURL = URL(fileURLWithPath: output)
do {
if FileManager.default.fileExists(atPath: tempURL.path) {
try FileManager.default.removeItem(atPath: tempURL.path)
}
try FileManager.default.copyItem(atPath: imageData.path, toPath: tempURL.path)
} catch {
print(error.localizedDescription)
}
}
} else {
// convert path/to/image.png -resize 200x300 path/to/output.png
// convert path/to/image.png -resize 200x path/to/output.png
@ -135,7 +139,7 @@ class XcassetsGenerator {
}
// Write Content.json
guard let imagesetContentJson = parsedImage.contentJson else { return }
guard let imagesetContentJson = parsedImage.generateContentJson(isVector: imageData.ext == "svg") else { return }
let contentJsonFilePath = "\(imagesetPath)/Contents.json"
let contentJsonFilePathURL = URL(fileURLWithPath: contentJsonFilePath)

View File

@ -8,7 +8,7 @@
import Foundation
enum ImageExtension: String {
case vector
case png
}
struct ParsedImage {
@ -61,10 +61,12 @@ struct ParsedImage {
// MARK: - Assets
var contentJson: String? {
func generateContentJson(isVector: Bool) -> String? {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let imageContent = generateImageContent(isVector: isVector)
guard let data = try? encoder.encode(imageContent) else {
let error = ImagesError.writeFile("Contents.json", "Error encoding json file")
print(error.description)
@ -74,8 +76,10 @@ struct ParsedImage {
return String(data: data, encoding: .utf8)
}
var imageContent: AssetContent {
if imageExtensions.contains(.vector) {
func generateImageContent(isVector: Bool) -> AssetContent {
if !imageExtensions.contains(.png) && isVector {
//Generate svg
return AssetContent(
images: [
AssetImageDescription(
@ -93,7 +97,7 @@ struct ParsedImage {
)
)
} else {
//Generate png
return AssetContent(
images: [
AssetImageDescription(

View File

@ -17,8 +17,8 @@ class ImageFileParserTests: XCTestCase {
#
# SMAAS Support
#
id image_one 25 ? vector
di image_two ? 50 webp vector
id image_one 25 ? png
di image_two ? 50 webp png
d image_three 25 ?
d image_four 75 ?
"""
@ -38,7 +38,7 @@ class ImageFileParserTests: XCTestCase {
XCTAssertEqual(firstImage!.tags, "id")
XCTAssertEqual(firstImage!.width, 25)
XCTAssertEqual(firstImage!.height, -1)
XCTAssertEqual(firstImage!.imageExtensions, [.vector])
XCTAssertEqual(firstImage!.imageExtensions, [.png])
let secondImage = parsedImages.first {
$0.name == "image_two"
@ -47,6 +47,6 @@ class ImageFileParserTests: XCTestCase {
XCTAssertEqual(secondImage!.tags, "di")
XCTAssertEqual(secondImage!.width, -1)
XCTAssertEqual(secondImage!.height, 50)
XCTAssertEqual(firstImage!.imageExtensions, [.vector])
XCTAssertEqual(firstImage!.imageExtensions, [.png])
}
}

View File

@ -127,7 +127,7 @@ final class ParsedImageTests: XCTestCase {
height: 10)
// When
let property = parsedImage.imageContent
let property = parsedImage.generateImageContent(isVector: false)
// Expect
let expect = AssetContent(
@ -157,33 +157,41 @@ final class ParsedImageTests: XCTestCase {
XCTAssertEqual(property, expect)
}
func testAssetVector() {
func testAssetPng() {
// Given
let imageName = "the_name"
let parsedImage = ParsedImage(name: imageName,
tags: "id",
width: 10,
height: 10,
imageExtensions: [.vector])
imageExtensions: [.png])
// When
let property = parsedImage.imageContent
let property = parsedImage.generateImageContent(isVector: false)
// Expect
let expect = AssetContent(
images: [
AssetImageDescription(
idiom: "universal",
filename: "\(parsedImage.name).\(OutputImageExtension.svg.rawValue)"
scale: "1x",
filename: "\(parsedImage.name).\(OutputImageExtension.png.rawValue)"
),
AssetImageDescription(
idiom: "universal",
scale: "2x",
filename: "\(parsedImage.name)@2x.\(OutputImageExtension.png.rawValue)"
),
AssetImageDescription(
idiom: "universal",
scale: "3x",
filename: "\(parsedImage.name)@3x.\(OutputImageExtension.png.rawValue)"
)
],
info: AssetInfo(
version: 1,
author: "ResgenSwift-Imagium"
),
properties: AssetProperties(
preservesVectorRepresentation: true,
templateRenderingIntent: .template
)
)