Skip to content

Commit 15d6fcc

Browse files
Move CLI tool from TogglesPlatform/Toggles
1 parent f3dd80c commit 15d6fcc

36 files changed

+1646
-0
lines changed

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.DS_Store
2+
/.build
3+
/Packages
4+
/*.xcodeproj
5+
xcuserdata/
6+
DerivedData/
7+
.swiftpm/config/registries.json
8+
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
9+
.netrc
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1400"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "ToggleGen"
18+
BuildableName = "ToggleGen"
19+
BlueprintName = "ToggleGen"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
<BuildActionEntry
24+
buildForTesting = "YES"
25+
buildForRunning = "YES"
26+
buildForProfiling = "NO"
27+
buildForArchiving = "NO"
28+
buildForAnalyzing = "YES">
29+
<BuildableReference
30+
BuildableIdentifier = "primary"
31+
BlueprintIdentifier = "ToggleGenTests"
32+
BuildableName = "ToggleGenTests"
33+
BlueprintName = "ToggleGenTests"
34+
ReferencedContainer = "container:">
35+
</BuildableReference>
36+
</BuildActionEntry>
37+
</BuildActionEntries>
38+
</BuildAction>
39+
<TestAction
40+
buildConfiguration = "Debug"
41+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43+
shouldUseLaunchSchemeArgsEnv = "YES">
44+
<Testables>
45+
<TestableReference
46+
skipped = "NO">
47+
<BuildableReference
48+
BuildableIdentifier = "primary"
49+
BlueprintIdentifier = "ToggleGenTests"
50+
BuildableName = "ToggleGenTests"
51+
BlueprintName = "ToggleGenTests"
52+
ReferencedContainer = "container:">
53+
</BuildableReference>
54+
</TestableReference>
55+
</Testables>
56+
</TestAction>
57+
<LaunchAction
58+
buildConfiguration = "Debug"
59+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
60+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
61+
launchStyle = "0"
62+
useCustomWorkingDirectory = "NO"
63+
ignoresPersistentStateOnLaunch = "NO"
64+
debugDocumentVersioning = "YES"
65+
debugServiceExtension = "internal"
66+
allowLocationSimulation = "YES">
67+
<BuildableProductRunnable
68+
runnableDebuggingMode = "0">
69+
<BuildableReference
70+
BuildableIdentifier = "primary"
71+
BlueprintIdentifier = "ToggleGen"
72+
BuildableName = "ToggleGen"
73+
BlueprintName = "ToggleGen"
74+
ReferencedContainer = "container:">
75+
</BuildableReference>
76+
</BuildableProductRunnable>
77+
<CommandLineArguments>
78+
<CommandLineArgument
79+
argument = "--datasource-path &lt;DATASOURCE_PATH&gt;"
80+
isEnabled = "YES">
81+
</CommandLineArgument>
82+
<CommandLineArgument
83+
argument = "--accessor-class-name ToggleAccessor"
84+
isEnabled = "YES">
85+
</CommandLineArgument>
86+
<CommandLineArgument
87+
argument = "--variables-enum-name ToggleVariables"
88+
isEnabled = "YES">
89+
</CommandLineArgument>
90+
<CommandLineArgument
91+
argument = "--accessor-template-path &lt;ACCESSOR_TEMPLATE_PATH&gt;"
92+
isEnabled = "YES">
93+
</CommandLineArgument>
94+
<CommandLineArgument
95+
argument = "--variables-template-path &lt;VARIABLES_TEMPLATE_PATH&gt;"
96+
isEnabled = "YES">
97+
</CommandLineArgument>
98+
<CommandLineArgument
99+
argument = "--accessor-output-path &lt;ACCESSOR_OUTPUT_PATH&gt;"
100+
isEnabled = "YES">
101+
</CommandLineArgument>
102+
<CommandLineArgument
103+
argument = "--variables-output-path &lt;VARIABLES_OUTPUT_PATH&gt;"
104+
isEnabled = "YES">
105+
</CommandLineArgument>
106+
</CommandLineArguments>
107+
</LaunchAction>
108+
<ProfileAction
109+
buildConfiguration = "Release"
110+
shouldUseLaunchSchemeArgsEnv = "YES"
111+
savedToolIdentifier = ""
112+
useCustomWorkingDirectory = "NO"
113+
debugDocumentVersioning = "YES">
114+
<BuildableProductRunnable
115+
runnableDebuggingMode = "0">
116+
<BuildableReference
117+
BuildableIdentifier = "primary"
118+
BlueprintIdentifier = "ToggleGen"
119+
BuildableName = "ToggleGen"
120+
BlueprintName = "ToggleGen"
121+
ReferencedContainer = "container:">
122+
</BuildableReference>
123+
</BuildableProductRunnable>
124+
</ProfileAction>
125+
<AnalyzeAction
126+
buildConfiguration = "Debug">
127+
</AnalyzeAction>
128+
<ArchiveAction
129+
buildConfiguration = "Release"
130+
revealArchiveInOrganizer = "YES">
131+
</ArchiveAction>
132+
</Scheme>

Demo/DemoDatasource.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{
2+
"toggles": [
3+
{
4+
"variable": "boolean_toggle",
5+
"bool": true
6+
},
7+
{
8+
"variable": "integer_toggle",
9+
"int": 42
10+
},
11+
{
12+
"variable": "numeric_toggle",
13+
"number": 3.1416
14+
},
15+
{
16+
"variable": "string_toggle",
17+
"string": "Hello World"
18+
},
19+
{
20+
"variable": "encrypted_toggle",
21+
"secure": "eDUxAQXW6dobqAMxhZIJLkyQKb8+36bFHc36eabacXDahMipVnGy/Q=="
22+
},
23+
{
24+
"variable": "boolean_toggle_2",
25+
"bool": true,
26+
"propertyName": "userDefinedBooleanToggle"
27+
},
28+
{
29+
"variable": "integer_toggle_2",
30+
"int": 108,
31+
"propertyName": "userDefinedIntegerToggle"
32+
},
33+
{
34+
"variable": "numeric_toggle_2",
35+
"number": 1.618,
36+
"propertyName": "userDefinedNumericToggle"
37+
},
38+
{
39+
"variable": "string_toggle_2",
40+
"string": "Ciao Mondo",
41+
"propertyName": "userDefinedStringToggle"
42+
},
43+
{
44+
"variable": "object_toggle",
45+
"object": {
46+
"boolProperty" : true,
47+
"stringProperty" : "value",
48+
"intProperty" : 420,
49+
"numberProperty": 13.6
50+
},
51+
"propertyName": "userDefinedObjectToggle"
52+
}
53+
]
54+
}

GeneratedCode/ToggleAccessor.swift

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
// ToggleAccessor.swift
2+
3+
// swiftlint:disable file_length
4+
5+
import Foundation
6+
import Toggles
7+
8+
public class ToggleAccessor {
9+
10+
private(set) var manager: ToggleManager
11+
12+
public init(manager: ToggleManager) {
13+
self.manager = manager
14+
}
15+
}
16+
17+
extension ToggleAccessor {
18+
19+
public var booleanToggle: Bool {
20+
get { manager.value(for: ToggleVariables.booleanToggle).boolValue! }
21+
set { manager.set(.bool(newValue), for: ToggleVariables.booleanToggle) }
22+
}
23+
24+
public var integerToggle: Int {
25+
get { manager.value(for: ToggleVariables.integerToggle).intValue! }
26+
set { manager.set(.int(newValue), for: ToggleVariables.integerToggle) }
27+
}
28+
29+
public var numericToggle: Double {
30+
get { manager.value(for: ToggleVariables.numericToggle).numberValue! }
31+
set { manager.set(.number(newValue), for: ToggleVariables.numericToggle) }
32+
}
33+
34+
public var stringToggle: String {
35+
get { manager.value(for: ToggleVariables.stringToggle).stringValue! }
36+
set { manager.set(.string(newValue), for: ToggleVariables.stringToggle) }
37+
}
38+
39+
public var encryptedToggle: String {
40+
get { manager.value(for: ToggleVariables.encryptedToggle).secureValue! }
41+
set { manager.set(.secure(newValue), for: ToggleVariables.encryptedToggle) }
42+
}
43+
44+
public var booleanToggle2: Bool {
45+
get { manager.value(for: ToggleVariables.booleanToggle2).boolValue! }
46+
set { manager.set(.bool(newValue), for: ToggleVariables.booleanToggle2) }
47+
}
48+
49+
public var integerToggle2: Int {
50+
get { manager.value(for: ToggleVariables.integerToggle2).intValue! }
51+
set { manager.set(.int(newValue), for: ToggleVariables.integerToggle2) }
52+
}
53+
54+
public var numericToggle2: Double {
55+
get { manager.value(for: ToggleVariables.numericToggle2).numberValue! }
56+
set { manager.set(.number(newValue), for: ToggleVariables.numericToggle2) }
57+
}
58+
59+
public var stringToggle2: String {
60+
get { manager.value(for: ToggleVariables.stringToggle2).stringValue! }
61+
set { manager.set(.string(newValue), for: ToggleVariables.stringToggle2) }
62+
}
63+
64+
public var objectToggle: Object {
65+
get { manager.value(for: ToggleVariables.objectToggle).objectValue! }
66+
set { manager.set(.object(newValue), for: ToggleVariables.objectToggle) }
67+
}
68+
69+
}
70+
71+
// swiftlint:enable file_length
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// ToggleVariables.swift
2+
3+
// swiftlint:disable file_length
4+
5+
import Foundation
6+
7+
public enum ToggleVariables {
8+
9+
public static let booleanToggle = "boolean_toggle"
10+
11+
public static let integerToggle = "integer_toggle"
12+
13+
public static let numericToggle = "numeric_toggle"
14+
15+
public static let stringToggle = "string_toggle"
16+
17+
public static let encryptedToggle = "encrypted_toggle"
18+
19+
public static let booleanToggle2 = "boolean_toggle_2"
20+
21+
public static let integerToggle2 = "integer_toggle_2"
22+
23+
public static let numericToggle2 = "numeric_toggle_2"
24+
25+
public static let stringToggle2 = "string_toggle_2"
26+
27+
public static let objectToggle = "object_toggle"
28+
29+
}
30+
31+
// swiftlint:enable file_length

Package.resolved

Lines changed: 42 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// swift-tools-version: 6.0
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "ToggleGen",
8+
platforms: [
9+
.iOS(.v15),
10+
.macOS(.v12)
11+
],
12+
products: [
13+
.executable(name: "ToggleGen",
14+
targets: ["ToggleGen"])
15+
],
16+
dependencies: [
17+
.package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.5.0")),
18+
.package(url: "https://github.com/stencilproject/Stencil.git", exact: "0.15.1"),
19+
],
20+
targets: [
21+
.executableTarget(
22+
name: "ToggleGen",
23+
dependencies: [
24+
.product(name: "ArgumentParser", package: "swift-argument-parser"),
25+
.product(name: "Stencil", package: "Stencil"),
26+
],
27+
path: "Sources",
28+
swiftSettings: [
29+
.enableUpcomingFeature("InternalImportsByDefault"),
30+
.enableUpcomingFeature("ExistentialAny")
31+
]
32+
),
33+
.testTarget(
34+
name: "ToggleGenTests",
35+
dependencies: ["ToggleGen"],
36+
path: "Tests",
37+
resources: [.process("Resources")],
38+
swiftSettings: [
39+
.enableUpcomingFeature("InternalImportsByDefault"),
40+
.enableUpcomingFeature("ExistentialAny")
41+
]
42+
)
43+
]
44+
)

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# ToggleGen
2+
3+
A description of this package.

0 commit comments

Comments
 (0)