From cc0adf6588851db67ffee0d88c774231523a3adf Mon Sep 17 00:00:00 2001 From: Chris Griffing Date: Sat, 9 Mar 2024 17:31:36 -0800 Subject: [PATCH] feat: add swift to cli type generation --- packages/cli/src/templates.ts | 24 ++++++++++++++++++++++++ packages/cli/src/transform.ts | 13 ++++++++++++- packages/cli/src/types.ts | 3 ++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/templates.ts b/packages/cli/src/templates.ts index 2c26295..c6beed9 100644 --- a/packages/cli/src/templates.ts +++ b/packages/cli/src/templates.ts @@ -295,5 +295,29 @@ data object {{{name}}}Group { } } +{{/groups}}`, + swift: `/* + {{{disclaimerText}}} +*/ + +{{#groups}} + +enum {{{name}}}Group { + static let name: String = "{{{rawName}}}" + static let id: String = "{{{id}}}" + + enum Features { + {{#features}} + static let {{{name}}} = "{{{id}}}" + {{/features}} + } + + enum Environments { + {{#environments}} + static let {{{name}}} = "{{{id}}}" + {{/environments}} + } +} + {{/groups}}`, }; diff --git a/packages/cli/src/transform.ts b/packages/cli/src/transform.ts index 346782a..1632dc1 100644 --- a/packages/cli/src/transform.ts +++ b/packages/cli/src/transform.ts @@ -117,6 +117,16 @@ const languageTransformers: Record< groups: groupsOutput, }); }, + swift: function (groups: PublishedGroup[], typePrefix = "", typeSuffix = "") { + const groupsOutput = groups.map( + parseGroup(typePrefix, typeSuffix, Case.camel, Case.pascal) + ); + + return mustache.render(templates.swift, { + disclaimerText, + groups: groupsOutput, + }); + }, // csharp: function (groups: PublishedGroup[], typePrefix = "") { // const tagsString = tags @@ -263,7 +273,7 @@ const languageAliases: Record = { golang: "go", go: "go", php: "php", - // py: "python", + py: "python", python: "python", ex: "elixir", elixir: "elixir", @@ -271,6 +281,7 @@ const languageAliases: Record = { // ruby: "ruby", rs: "rust", rust: "rust", + swift: "swift", // lua: "lua", // flutter: "dart", // dart: "dart", diff --git a/packages/cli/src/types.ts b/packages/cli/src/types.ts index 05b993c..fae302c 100644 --- a/packages/cli/src/types.ts +++ b/packages/cli/src/types.ts @@ -7,4 +7,5 @@ export type Language = | "elixir" | "php" | "python" - | "kotlin"; + | "kotlin" + | "swift";