From cf240f8038278194ca209084fb209edeeefcfb16 Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Wed, 4 Nov 2020 17:35:16 +0100 Subject: [PATCH 01/12] Adds ignored_style_guides_ids to the configuration. With this new configuration option we can specify which style guide id's we want to ignore --- Sources/CLI/Commands+Generate.swift | 5 ++++- Sources/PrismCore/Models/Configuration.swift | 5 +++++ Sources/PrismCore/Prism.swift | 7 +++++-- Sources/ZeplinAPI/Models/AssetOwner.swift | 20 +++++++++++++++++--- Sources/ZeplinAPI/ZeplinAPI.swift | 2 +- Tests/ConfigurationSpec.swift | 4 ++++ Tests/TemplateParserSpec.swift | 6 ++++-- 7 files changed, 40 insertions(+), 9 deletions(-) diff --git a/Sources/CLI/Commands+Generate.swift b/Sources/CLI/Commands+Generate.swift index 821a59a..0798af0 100644 --- a/Sources/CLI/Commands+Generate.swift +++ b/Sources/CLI/Commands+Generate.swift @@ -68,7 +68,10 @@ struct Generate: ParsableCommand { throw CommandError.missingToken } - let ownerProject = (projectId ?? config?.projectId).map { AssetOwner.project(id: $0) } + let ownerProject = (projectId ?? config?.projectId) .map { + AssetOwner.project(id: $0, ignoredStyleGuideIds: config?.ignoredStyleGuideIds ?? []) + } + let ownerStyleguide = (styleguideId ?? config?.styleguideId).map { AssetOwner.styleguide(id: $0) } // Make sure we have either a project or a styleguide diff --git a/Sources/PrismCore/Models/Configuration.swift b/Sources/PrismCore/Models/Configuration.swift index 6256e34..00d6f3b 100644 --- a/Sources/PrismCore/Models/Configuration.swift +++ b/Sources/PrismCore/Models/Configuration.swift @@ -26,6 +26,9 @@ public struct Configuration { /// A list of reserved text style identities that cannot be used. public let reservedTextStyles: [String] + + /// A list of ignored style guide ids, that will not be fetched. + public let ignoredStyleGuideIds: [String] } extension Configuration: Codable { @@ -37,6 +40,7 @@ extension Configuration: Codable { self.outputPath = try? container.decode(String.self, forKey: .outputPath) self.reservedColors = (try? container.decode([String].self, forKey: .reservedColors)) ?? [] self.reservedTextStyles = (try? container.decode([String].self, forKey: .reservedTextStyles)) ?? [] + self.ignoredStyleGuideIds = (try? container.decode([String].self, forKey: .ignoredStyleGuideIds)) ?? [] } enum CodingKeys: String, CodingKey { @@ -46,5 +50,6 @@ extension Configuration: Codable { case outputPath = "output_path" case reservedColors = "reserved_colors" case reservedTextStyles = "reserved_textstyles" + case ignoredStyleGuideIds = "ignored_style_guides_ids" } } diff --git a/Sources/PrismCore/Prism.swift b/Sources/PrismCore/Prism.swift index f152d3f..bfa3f37 100644 --- a/Sources/PrismCore/Prism.swift +++ b/Sources/PrismCore/Prism.swift @@ -44,17 +44,20 @@ public class Prism { var spacings = [Spacing]() var errors = [ZeplinAPI.Error]() let projectId: String? = { - guard case .project(let id) = owner else { return nil } + guard case .project(let id, _) = owner else { return nil } return id }() // Wait for styleguide IDs we wish to query - let (styleguideIDs, styleguideErrors) = getStyleguideIDs(for: owner) + let (unfilteredStyleguideIDs, styleguideErrors) = getStyleguideIDs(for: owner) errors.append(contentsOf: styleguideErrors) // Get text styles, colors and spacing separately // for each styleguide + + let styleguideIDs = unfilteredStyleguideIDs.filter { id in !owner.ignoredStyleGuideIds.contains(id) } + for styleguideID in styleguideIDs { group.enter() api.getPagedItems( diff --git a/Sources/ZeplinAPI/Models/AssetOwner.swift b/Sources/ZeplinAPI/Models/AssetOwner.swift index b442e88..dd28bb5 100644 --- a/Sources/ZeplinAPI/Models/AssetOwner.swift +++ b/Sources/ZeplinAPI/Models/AssetOwner.swift @@ -10,20 +10,34 @@ import Foundation /// An asset owner: either a Project or a Styleguide public enum AssetOwner: Equatable, CustomStringConvertible { - case project(id: Project.ID) + case project(id: Project.ID, ignoredStyleGuideIds: [String]) case styleguide(id: Styleguide.ID) + public static func project(id: Project.ID) -> Self { + .project(id: id, ignoredStyleGuideIds: []) + } + public var id: String { switch self { - case .project(let id), + case .project(let id, _), .styleguide(let id): return id } } + public var ignoredStyleGuideIds: [String] { + switch self { + case .project(_, let ignoredStyleGuideIds): + return ignoredStyleGuideIds + + default: + return [] + } + } + public var description: String { switch self { - case .project(let id): return "Project \(id)" + case .project(let id, _): return "Project \(id)" case .styleguide(let id): return "Styleguide \(id)" } } diff --git a/Sources/ZeplinAPI/ZeplinAPI.swift b/Sources/ZeplinAPI/ZeplinAPI.swift index 6eefcff..2f5a887 100644 --- a/Sources/ZeplinAPI/ZeplinAPI.swift +++ b/Sources/ZeplinAPI/ZeplinAPI.swift @@ -120,7 +120,7 @@ public extension ZeplinAPI { var path = "styleguides?offset=\(offset)&status=\(status.rawValue)&limit=\(ZeplinAPI.itemsPerPage)" switch owner { - case .some(.project(let id)): + case .some(.project(let id, _)): path.append("&linked_project=\(id)") case .some(.styleguide(let id)): path.append("&linked_styleguide=\(id)") diff --git a/Tests/ConfigurationSpec.swift b/Tests/ConfigurationSpec.swift index 08f2e04..2205fd2 100644 --- a/Tests/ConfigurationSpec.swift +++ b/Tests/ConfigurationSpec.swift @@ -41,10 +41,14 @@ class ConfigurationSpec: QuickSpec { reserved_textstyles: - fake3 - fake4 + ignored_style_guides_ids: + - "12" + - "13" """ let config = try! decoder.decode(PrismCore.Configuration.self, from: yaml) + expect(config.ignoredStyleGuideIds) == ["12", "13"] expect(config.reservedColors) == ["fake1", "fake2"] expect(config.reservedTextStyles) == ["fake3", "fake4"] } diff --git a/Tests/TemplateParserSpec.swift b/Tests/TemplateParserSpec.swift index 20e820a..25efe17 100644 --- a/Tests/TemplateParserSpec.swift +++ b/Tests/TemplateParserSpec.swift @@ -489,7 +489,8 @@ class TemplateParserSpec: QuickSpec { templatesPath: "./", outputPath: "./", reservedColors: ["blueSky", "clearReddish"], - reservedTextStyles: ["body", "largeHeading"]) + reservedTextStyles: ["body", "largeHeading"], + ignoredStyleGuideIds: []) let parser = TemplateParser(project: project, configuration: configuration) expect { try parser.parse(template: "") } @@ -504,7 +505,8 @@ class TemplateParserSpec: QuickSpec { templatesPath: "./", outputPath: "./", reservedColors: ["blue_sky", "clear_reddish"], - reservedTextStyles: ["body", "large_heading"]) + reservedTextStyles: ["body", "large_heading"], + ignoredStyleGuideIds: []) let parser = TemplateParser(project: project, configuration: configuration) expect { try parser.parse(template: "") } From d13da1c0f2d06f51d2b1faf78b26bceee4dbd6ad Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Wed, 4 Nov 2020 17:49:15 +0100 Subject: [PATCH 02/12] reverting, ignoredStyleGuideIds is now directly passed in the getAssets function --- Sources/CLI/Commands+Generate.swift | 6 ++---- Sources/PrismCore/Prism.swift | 6 ++++-- Sources/ZeplinAPI/Models/AssetOwner.swift | 19 +++---------------- Sources/ZeplinAPI/ZeplinAPI.swift | 2 +- 4 files changed, 10 insertions(+), 23 deletions(-) diff --git a/Sources/CLI/Commands+Generate.swift b/Sources/CLI/Commands+Generate.swift index 0798af0..51be21d 100644 --- a/Sources/CLI/Commands+Generate.swift +++ b/Sources/CLI/Commands+Generate.swift @@ -68,9 +68,7 @@ struct Generate: ParsableCommand { throw CommandError.missingToken } - let ownerProject = (projectId ?? config?.projectId) .map { - AssetOwner.project(id: $0, ignoredStyleGuideIds: config?.ignoredStyleGuideIds ?? []) - } + let ownerProject = (projectId ?? config?.projectId).map { AssetOwner.project(id: $0) } let ownerStyleguide = (styleguideId ?? config?.styleguideId).map { AssetOwner.styleguide(id: $0) } @@ -102,7 +100,7 @@ struct Generate: ParsableCommand { throw CommandError.outputFolderDoesntExist(path: outputPath) } - prism.getAssets(for: owner) { result in + prism.getAssets(for: owner, ignoredStyleGuideIds: config?.ignoredStyleGuideIds ?? []) { result in do { let project = try result.get() diff --git a/Sources/PrismCore/Prism.swift b/Sources/PrismCore/Prism.swift index bfa3f37..c94e70f 100644 --- a/Sources/PrismCore/Prism.swift +++ b/Sources/PrismCore/Prism.swift @@ -34,9 +34,11 @@ public class Prism { /// e.g. for a Project with 2 linked styleguides, Prism performs 7 API calls /// /// - parameter owner: Assets owner, e.g. a project or styleguide + /// - parameter ignoredStyleGuideIds: Additional style guide id's which should be ignored /// - parameter completion: A completion handler which can result in a successful `Assets` /// object, or a `ZeplinAPI.Error` error public func getAssets(for owner: AssetOwner, + ignoredStyleGuideIds: [String] = [], completion: @escaping (Result) -> Void) { let group = DispatchGroup() var colors = [Color]() @@ -44,7 +46,7 @@ public class Prism { var spacings = [Spacing]() var errors = [ZeplinAPI.Error]() let projectId: String? = { - guard case .project(let id, _) = owner else { return nil } + guard case .project(let id) = owner else { return nil } return id }() @@ -56,7 +58,7 @@ public class Prism { // Get text styles, colors and spacing separately // for each styleguide - let styleguideIDs = unfilteredStyleguideIDs.filter { id in !owner.ignoredStyleGuideIds.contains(id) } + let styleguideIDs = unfilteredStyleguideIDs.filter { id in !ignoredStyleGuideIds.contains(id) } for styleguideID in styleguideIDs { group.enter() diff --git a/Sources/ZeplinAPI/Models/AssetOwner.swift b/Sources/ZeplinAPI/Models/AssetOwner.swift index dd28bb5..1af94e9 100644 --- a/Sources/ZeplinAPI/Models/AssetOwner.swift +++ b/Sources/ZeplinAPI/Models/AssetOwner.swift @@ -10,34 +10,21 @@ import Foundation /// An asset owner: either a Project or a Styleguide public enum AssetOwner: Equatable, CustomStringConvertible { - case project(id: Project.ID, ignoredStyleGuideIds: [String]) + case project(id: Project.ID) case styleguide(id: Styleguide.ID) - public static func project(id: Project.ID) -> Self { - .project(id: id, ignoredStyleGuideIds: []) - } public var id: String { switch self { - case .project(let id, _), + case .project(let id), .styleguide(let id): return id } } - public var ignoredStyleGuideIds: [String] { - switch self { - case .project(_, let ignoredStyleGuideIds): - return ignoredStyleGuideIds - - default: - return [] - } - } - public var description: String { switch self { - case .project(let id, _): return "Project \(id)" + case .project(let id): return "Project \(id)" case .styleguide(let id): return "Styleguide \(id)" } } diff --git a/Sources/ZeplinAPI/ZeplinAPI.swift b/Sources/ZeplinAPI/ZeplinAPI.swift index 2f5a887..6eefcff 100644 --- a/Sources/ZeplinAPI/ZeplinAPI.swift +++ b/Sources/ZeplinAPI/ZeplinAPI.swift @@ -120,7 +120,7 @@ public extension ZeplinAPI { var path = "styleguides?offset=\(offset)&status=\(status.rawValue)&limit=\(ZeplinAPI.itemsPerPage)" switch owner { - case .some(.project(let id, _)): + case .some(.project(let id)): path.append("&linked_project=\(id)") case .some(.styleguide(let id)): path.append("&linked_styleguide=\(id)") From 316cf80bc113d820cab875e078f871d03d5ea557 Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Wed, 4 Nov 2020 17:51:17 +0100 Subject: [PATCH 03/12] reverting --- Sources/CLI/Commands+Generate.swift | 1 - Sources/ZeplinAPI/Models/AssetOwner.swift | 1 - 2 files changed, 2 deletions(-) diff --git a/Sources/CLI/Commands+Generate.swift b/Sources/CLI/Commands+Generate.swift index 51be21d..4908b7c 100644 --- a/Sources/CLI/Commands+Generate.swift +++ b/Sources/CLI/Commands+Generate.swift @@ -69,7 +69,6 @@ struct Generate: ParsableCommand { } let ownerProject = (projectId ?? config?.projectId).map { AssetOwner.project(id: $0) } - let ownerStyleguide = (styleguideId ?? config?.styleguideId).map { AssetOwner.styleguide(id: $0) } // Make sure we have either a project or a styleguide diff --git a/Sources/ZeplinAPI/Models/AssetOwner.swift b/Sources/ZeplinAPI/Models/AssetOwner.swift index 1af94e9..b442e88 100644 --- a/Sources/ZeplinAPI/Models/AssetOwner.swift +++ b/Sources/ZeplinAPI/Models/AssetOwner.swift @@ -13,7 +13,6 @@ public enum AssetOwner: Equatable, CustomStringConvertible { case project(id: Project.ID) case styleguide(id: Styleguide.ID) - public var id: String { switch self { case .project(let id), From fd04f77a39182c8da44c1f65278348c6c2a432d4 Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Mon, 7 Dec 2020 11:54:51 +0100 Subject: [PATCH 04/12] Update Sources/PrismCore/Models/Configuration.swift Co-authored-by: Shai Mishali --- Sources/PrismCore/Models/Configuration.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/PrismCore/Models/Configuration.swift b/Sources/PrismCore/Models/Configuration.swift index 00d6f3b..ad229de 100644 --- a/Sources/PrismCore/Models/Configuration.swift +++ b/Sources/PrismCore/Models/Configuration.swift @@ -27,7 +27,7 @@ public struct Configuration { /// A list of reserved text style identities that cannot be used. public let reservedTextStyles: [String] - /// A list of ignored style guide ids, that will not be fetched. + /// A list of ignored Style Guide IDs, that will not be fetched. public let ignoredStyleGuideIds: [String] } From 2861354d428ff77635a0a153e487f717f36a61cb Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Mon, 7 Dec 2020 11:55:37 +0100 Subject: [PATCH 05/12] Apply suggestions from code review Co-authored-by: Shai Mishali --- Sources/PrismCore/Models/Configuration.swift | 4 ++-- Sources/PrismCore/Prism.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/PrismCore/Models/Configuration.swift b/Sources/PrismCore/Models/Configuration.swift index ad229de..09d89e5 100644 --- a/Sources/PrismCore/Models/Configuration.swift +++ b/Sources/PrismCore/Models/Configuration.swift @@ -28,7 +28,7 @@ public struct Configuration { public let reservedTextStyles: [String] /// A list of ignored Style Guide IDs, that will not be fetched. - public let ignoredStyleGuideIds: [String] + public let ignoredStyleGuideIDs: [String] } extension Configuration: Codable { @@ -50,6 +50,6 @@ extension Configuration: Codable { case outputPath = "output_path" case reservedColors = "reserved_colors" case reservedTextStyles = "reserved_textstyles" - case ignoredStyleGuideIds = "ignored_style_guides_ids" + case ignoredStyleGuideIds = "ignored_styleguides" } } diff --git a/Sources/PrismCore/Prism.swift b/Sources/PrismCore/Prism.swift index c94e70f..3d87378 100644 --- a/Sources/PrismCore/Prism.swift +++ b/Sources/PrismCore/Prism.swift @@ -51,7 +51,7 @@ public class Prism { }() // Wait for styleguide IDs we wish to query - let (unfilteredStyleguideIDs, styleguideErrors) = getStyleguideIDs(for: owner) + let (allStyleguideIDs, styleguideErrors) = getStyleguideIDs(for: owner) errors.append(contentsOf: styleguideErrors) From 9eb33e0e743b3632cab167a841371907ecbe02d2 Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Fri, 18 Dec 2020 11:41:58 +0100 Subject: [PATCH 06/12] aligns ignoredStyleGuideIds naming in configuration --- Sources/PrismCore/Models/Configuration.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/PrismCore/Models/Configuration.swift b/Sources/PrismCore/Models/Configuration.swift index 09d89e5..aa53a99 100644 --- a/Sources/PrismCore/Models/Configuration.swift +++ b/Sources/PrismCore/Models/Configuration.swift @@ -28,7 +28,7 @@ public struct Configuration { public let reservedTextStyles: [String] /// A list of ignored Style Guide IDs, that will not be fetched. - public let ignoredStyleGuideIDs: [String] + public let ignoredStyleGuideIds: [String] } extension Configuration: Codable { From a1d5fec03f74a8b8ba15eb9ecd913822142aeb13 Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Fri, 18 Dec 2020 11:42:43 +0100 Subject: [PATCH 07/12] renames unfilteredStyleGuideIDs to allStyleguideIds --- Sources/PrismCore/Prism.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/PrismCore/Prism.swift b/Sources/PrismCore/Prism.swift index 3d87378..89c468f 100644 --- a/Sources/PrismCore/Prism.swift +++ b/Sources/PrismCore/Prism.swift @@ -51,14 +51,14 @@ public class Prism { }() // Wait for styleguide IDs we wish to query - let (allStyleguideIDs, styleguideErrors) = getStyleguideIDs(for: owner) + let (allStyleguideIds, styleguideErrors) = getStyleguideIDs(for: owner) errors.append(contentsOf: styleguideErrors) // Get text styles, colors and spacing separately // for each styleguide - let styleguideIDs = unfilteredStyleguideIDs.filter { id in !ignoredStyleGuideIds.contains(id) } + let styleguideIDs = allStyleguideIds.filter { id in !ignoredStyleGuideIds.contains(id) } for styleguideID in styleguideIDs { group.enter() From 4baff28cba5a1e5fe3fcd239c2bbc9dcb922e7db Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Thu, 14 Jan 2021 10:24:30 +0100 Subject: [PATCH 08/12] renamed ignored_styleguides_ids to ignored_styleguides --- Sources/CLI/Commands+Generate.swift | 2 +- Sources/PrismCore/Models/Configuration.swift | 6 +++--- Tests/ConfigurationSpec.swift | 4 ++-- Tests/TemplateParserSpec.swift | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/CLI/Commands+Generate.swift b/Sources/CLI/Commands+Generate.swift index 4908b7c..24381ad 100644 --- a/Sources/CLI/Commands+Generate.swift +++ b/Sources/CLI/Commands+Generate.swift @@ -99,7 +99,7 @@ struct Generate: ParsableCommand { throw CommandError.outputFolderDoesntExist(path: outputPath) } - prism.getAssets(for: owner, ignoredStyleGuideIds: config?.ignoredStyleGuideIds ?? []) { result in + prism.getAssets(for: owner, ignoredStyleGuideIds: config?.ignoredStyleGuides ?? []) { result in do { let project = try result.get() diff --git a/Sources/PrismCore/Models/Configuration.swift b/Sources/PrismCore/Models/Configuration.swift index aa53a99..f255796 100644 --- a/Sources/PrismCore/Models/Configuration.swift +++ b/Sources/PrismCore/Models/Configuration.swift @@ -28,7 +28,7 @@ public struct Configuration { public let reservedTextStyles: [String] /// A list of ignored Style Guide IDs, that will not be fetched. - public let ignoredStyleGuideIds: [String] + public let ignoredStyleGuides: [String] } extension Configuration: Codable { @@ -40,7 +40,7 @@ extension Configuration: Codable { self.outputPath = try? container.decode(String.self, forKey: .outputPath) self.reservedColors = (try? container.decode([String].self, forKey: .reservedColors)) ?? [] self.reservedTextStyles = (try? container.decode([String].self, forKey: .reservedTextStyles)) ?? [] - self.ignoredStyleGuideIds = (try? container.decode([String].self, forKey: .ignoredStyleGuideIds)) ?? [] + self.ignoredStyleGuides = (try? container.decode([String].self, forKey: .ignoredStyleGuides)) ?? [] } enum CodingKeys: String, CodingKey { @@ -50,6 +50,6 @@ extension Configuration: Codable { case outputPath = "output_path" case reservedColors = "reserved_colors" case reservedTextStyles = "reserved_textstyles" - case ignoredStyleGuideIds = "ignored_styleguides" + case ignoredStyleGuides = "ignored_styleguides" } } diff --git a/Tests/ConfigurationSpec.swift b/Tests/ConfigurationSpec.swift index 2205fd2..6a8d2d6 100644 --- a/Tests/ConfigurationSpec.swift +++ b/Tests/ConfigurationSpec.swift @@ -41,14 +41,14 @@ class ConfigurationSpec: QuickSpec { reserved_textstyles: - fake3 - fake4 - ignored_style_guides_ids: + ignored_styleguides: - "12" - "13" """ let config = try! decoder.decode(PrismCore.Configuration.self, from: yaml) - expect(config.ignoredStyleGuideIds) == ["12", "13"] + expect(config.ignoredStyleGuides) == ["12", "13"] expect(config.reservedColors) == ["fake1", "fake2"] expect(config.reservedTextStyles) == ["fake3", "fake4"] } diff --git a/Tests/TemplateParserSpec.swift b/Tests/TemplateParserSpec.swift index 25efe17..c57fb44 100644 --- a/Tests/TemplateParserSpec.swift +++ b/Tests/TemplateParserSpec.swift @@ -490,7 +490,7 @@ class TemplateParserSpec: QuickSpec { outputPath: "./", reservedColors: ["blueSky", "clearReddish"], reservedTextStyles: ["body", "largeHeading"], - ignoredStyleGuideIds: []) + ignoredStyleGuides: []) let parser = TemplateParser(project: project, configuration: configuration) expect { try parser.parse(template: "") } @@ -506,7 +506,7 @@ class TemplateParserSpec: QuickSpec { outputPath: "./", reservedColors: ["blue_sky", "clear_reddish"], reservedTextStyles: ["body", "large_heading"], - ignoredStyleGuideIds: []) + ignoredStyleGuides: []) let parser = TemplateParser(project: project, configuration: configuration) expect { try parser.parse(template: "") } From a59b127d1013df89d7f6c7767777945dddfa1e1b Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Thu, 14 Jan 2021 12:16:49 +0100 Subject: [PATCH 09/12] fixed failing unit test in ConfigurationSpec --- Tests/ConfigurationSpec.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/ConfigurationSpec.swift b/Tests/ConfigurationSpec.swift index 6a8d2d6..12dff2c 100644 --- a/Tests/ConfigurationSpec.swift +++ b/Tests/ConfigurationSpec.swift @@ -42,15 +42,15 @@ class ConfigurationSpec: QuickSpec { - fake3 - fake4 ignored_styleguides: - - "12" - - "13" + - fake5 + - fake6 """ let config = try! decoder.decode(PrismCore.Configuration.self, from: yaml) - - expect(config.ignoredStyleGuides) == ["12", "13"] + expect(config.reservedColors) == ["fake1", "fake2"] expect(config.reservedTextStyles) == ["fake3", "fake4"] + expect(config.ignoredStyleGuides) == ["fake5", "fake6"] } } } From 96c57f29a4350a0cd14cd4b8dcbc75c40f7b218c Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Thu, 14 Jan 2021 13:20:46 +0100 Subject: [PATCH 10/12] aligned parameter with configuration naming --- Sources/CLI/Commands+Generate.swift | 2 +- Sources/PrismCore/Prism.swift | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/CLI/Commands+Generate.swift b/Sources/CLI/Commands+Generate.swift index 24381ad..4be1ba9 100644 --- a/Sources/CLI/Commands+Generate.swift +++ b/Sources/CLI/Commands+Generate.swift @@ -99,7 +99,7 @@ struct Generate: ParsableCommand { throw CommandError.outputFolderDoesntExist(path: outputPath) } - prism.getAssets(for: owner, ignoredStyleGuideIds: config?.ignoredStyleGuides ?? []) { result in + prism.getAssets(for: owner, ignoredStyleGuides: config?.ignoredStyleGuides ?? []) { result in do { let project = try result.get() diff --git a/Sources/PrismCore/Prism.swift b/Sources/PrismCore/Prism.swift index 89c468f..8c9445d 100644 --- a/Sources/PrismCore/Prism.swift +++ b/Sources/PrismCore/Prism.swift @@ -34,11 +34,11 @@ public class Prism { /// e.g. for a Project with 2 linked styleguides, Prism performs 7 API calls /// /// - parameter owner: Assets owner, e.g. a project or styleguide - /// - parameter ignoredStyleGuideIds: Additional style guide id's which should be ignored + /// - parameter ignoredStyleGuides: Additional style guide id's which should be ignored /// - parameter completion: A completion handler which can result in a successful `Assets` /// object, or a `ZeplinAPI.Error` error public func getAssets(for owner: AssetOwner, - ignoredStyleGuideIds: [String] = [], + ignoredStyleGuides: [String] = [], completion: @escaping (Result) -> Void) { let group = DispatchGroup() var colors = [Color]() @@ -58,7 +58,7 @@ public class Prism { // Get text styles, colors and spacing separately // for each styleguide - let styleguideIDs = allStyleguideIds.filter { id in !ignoredStyleGuideIds.contains(id) } + let styleguideIDs = allStyleguideIds.filter { id in !ignoredStyleGuides.contains(id) } for styleguideID in styleguideIDs { group.enter() From b5d56c02ad69409ab2e77b43327366eb718e4786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20W=C3=BCrthner?= Date: Mon, 6 Sep 2021 11:27:31 +0200 Subject: [PATCH 11/12] Expose --ignored-style-guides as CLI argument --- Sources/CLI/Commands+Generate.swift | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Sources/CLI/Commands+Generate.swift b/Sources/CLI/Commands+Generate.swift index 4be1ba9..9cfffdb 100644 --- a/Sources/CLI/Commands+Generate.swift +++ b/Sources/CLI/Commands+Generate.swift @@ -18,22 +18,25 @@ struct Generate: ParsableCommand { commandName: "generate", abstract: "Generate text style and colors definitions from a set of templates and store the resulting output to the provided paths" ) - + @Option(name: .shortAndLong, help: "Zeplin Project ID to generate text styles and colors from. Overrides any config files.") var projectId: Project.ID? @Option(name: .shortAndLong, help: "Zeplin Styleguide ID to generate text styles and colors from. Overrides any config files.") var styleguideId: Styleguide.ID? - + @Option(name: .shortAndLong, help: "Path to a folder containing *.prism template files. Overrides any config files.") var templatesPath: String? - + @Option(name: .shortAndLong, help: "Path to save generated files to. Overrides any config files.") var outputPath: String? - + @Option(name: .shortAndLong, help: "Path to YAML configuration file") var configFile: String? - + + @Option(name: .shortAndLong, help: "Zeplin Styleguide IDs to be ignored, comma separated (e.g. a parent styleguide)") + var ignoredStyleGuides: String? + func run() throws { let prismFolder = ".prism" var configPath = configFile @@ -56,7 +59,7 @@ struct Generate: ParsableCommand { } let decoder = YAMLDecoder() - + do { config = try decoder.decode(Configuration.self, from: configString) } catch { @@ -86,7 +89,7 @@ struct Generate: ParsableCommand { let rawTemplatesPath = templatesPath ?? config?.templatesPath ?? prismFolder let templatesPath = rawTemplatesPath == "/" ? String(rawTemplatesPath.dropLast()) : rawTemplatesPath - + guard let rawOutputPath = outputPath ?? config?.outputPath else { throw CommandError.outputFolderMissing } @@ -94,15 +97,15 @@ struct Generate: ParsableCommand { let fileManager = FileManager.default let outputPath = (rawOutputPath.last == "/" ? String(rawOutputPath.dropLast()) : rawOutputPath) .replacingOccurrences(of: "~", with: fileManager.homeDirectoryForCurrentUser.path) - + guard fileManager.folderExists(at: outputPath) else { throw CommandError.outputFolderDoesntExist(path: outputPath) } - - prism.getAssets(for: owner, ignoredStyleGuides: config?.ignoredStyleGuides ?? []) { result in + + prism.getAssets(for: owner, ignoredStyleGuides: config?.ignoredStyleGuides ?? ignoredStyleGuides?.components(separatedBy: ",") ?? []) { result in do { let project = try result.get() - + let enumerator = fileManager.enumerator(atPath: templatesPath) var isFolder: ObjCBool = false From 0112dc17b6ff26663939f5b2d6139704d8ecc56f Mon Sep 17 00:00:00 2001 From: Luca Gobbo Date: Thu, 4 Dec 2025 13:50:50 +0100 Subject: [PATCH 12/12] bumps swift-argument-parser to at least 1.0.0 --- Package.resolved | 4 ++-- Package.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Package.resolved b/Package.resolved index 891fd41..e6b4613 100644 --- a/Package.resolved +++ b/Package.resolved @@ -51,8 +51,8 @@ "repositoryURL": "https://github.com/apple/swift-argument-parser", "state": { "branch": null, - "revision": "92646c0cdbaca076c8d3d0207891785b3379cbff", - "version": "0.3.1" + "revision": "cdd0ef3755280949551dc26dee5de9ddeda89f54", + "version": "1.6.2" } }, { diff --git a/Package.swift b/Package.swift index 7c53bb3..67ff141 100644 --- a/Package.swift +++ b/Package.swift @@ -16,7 +16,7 @@ let package = Package( targets: ["ZeplinAPI"]) ], dependencies: [ - .package(url: "https://github.com/apple/swift-argument-parser", from: "0.0.1"), + .package(url: "https://github.com/apple/swift-argument-parser", from: "1.0.0"), .package(url: "https://github.com/Quick/Quick", from: "3.0.0"), .package(url: "https://github.com/Quick/Nimble", from: "9.0.0"), .package(name: "SnapshotTesting", url: "https://github.com/pointfreeco/swift-snapshot-testing.git", from: "1.5.0"),