diff --git a/.github/actions/create-release/action.yml b/.github/actions/create-release/action.yml
deleted file mode 100644
index 9a29a5d..0000000
--- a/.github/actions/create-release/action.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: Create release
-
-inputs:
- gh-token:
- description: A token to perform REST API calls to GitHub
- required: true
- repository:
- description: The repository name including the org
- required: true
- tag-name:
- description: The tag to use for the release
- required: true
-
-outputs:
- release-id:
- description: The ID of the release
- value: ${{ steps.create-release.outputs.release_id }}
-
-runs:
- using: composite
- steps:
- - name: Create release
- id: create-release
- shell: bash
- run: |
- RELEASE_ID=`curl -L \
- -X POST \
- -H "Accept: application/vnd.github+json" \
- -H "Authorization: Bearer ${{ inputs.gh-token }}" \
- "https://api.github.com/repos/${{ inputs.repository }}/releases" \
- -d '{"tag_name":"${{ inputs.tag-name }}","generate_release_notes":true}' | jq -r '.id'`
- echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT"
diff --git a/.github/actions/create-universal-binary/action.yml b/.github/actions/create-universal-binary/action.yml
deleted file mode 100644
index 494c885..0000000
--- a/.github/actions/create-universal-binary/action.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-name: Create universal binary
-
-inputs:
- tool-name:
- description: The name of the tool
- required: true
-
-outputs:
- zip-filename:
- description: The filename of the generated .zip
- value: ${{ steps.zip-universal-binary.outputs.zip_filename }}
- zip-path:
- description: The path to .zip containing the universal binary
- value: ${{ steps.zip-universal-binary.outputs.zip_path }}
-
-runs:
- using: composite
- steps:
- - name: Create bin folder
- shell: bash
- run: |
- rm -rf bin
- mkdir -p bin
- - name: Delete build artifacts
- shell: bash
- working-directory: ./${{ inputs.tool-name }}
- run: swift package clean
- - name: Build binary (arm64)
- shell: bash
- working-directory: ./${{ inputs.tool-name }}
- run: swift build -c release --arch arm64
- - name: Build binary (x86_64)
- shell: bash
- working-directory: ./${{ inputs.tool-name }}
- run: swift build -c release --arch x86_64
- - name: Create universal binary
- shell: bash
- working-directory: ./${{ inputs.tool-name }}
- run: |
- lipo -create -output \
- ${{ inputs.tool-name }} \
- .build/arm64-apple-macosx/release/${{ inputs.tool-name }} \
- .build/x86_64-apple-macosx/release/${{ inputs.tool-name }}
- - name: Move universal binary to bin folder
- shell: bash
- run: |
- mv ./${{ inputs.tool-name }}/${{ inputs.tool-name }} bin/${{ inputs.tool-name }}
- - name: Zip universal binary
- id: zip-universal-binary
- shell: bash
- working-directory: bin
- run: |
- zip -r ${{ env.ZIP_FILE }} ${{ inputs.tool-name }}
- echo "zip_filename=${{ env.ZIP_FILE }}" >> $GITHUB_OUTPUT
- echo "zip_path=bin/${{ env.ZIP_FILE }}" >> $GITHUB_OUTPUT
- env:
- ZIP_FILE: ${{ inputs.tool-name }}-macOS-universal-binary.zip
diff --git a/.github/actions/select-xcode/action.yml b/.github/actions/select-xcode/action.yml
deleted file mode 100644
index 84c24c4..0000000
--- a/.github/actions/select-xcode/action.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-name: Select Xcode
-
-inputs:
- xcode-version:
- description: The version of Xcode to select
- required: true
-
-runs:
- using: composite
- steps:
- - name: Select Xcode
- shell: bash
- run: |
- sudo xcode-select \
- -s /Applications/Xcode_${{ inputs.xcode-version }}.app/Contents/Developer
diff --git a/.github/actions/upload-release-asset/action.yml b/.github/actions/upload-release-asset/action.yml
deleted file mode 100644
index c00aab5..0000000
--- a/.github/actions/upload-release-asset/action.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-name: Upload release asset
-
-inputs:
- asset-filename:
- description: The filename of the asset to upload
- required: true
- asset-path:
- description: The local path to the asset to upload
- required: true
- gh-token:
- description: A token to perform REST API calls to GitHub
- required: true
- repository:
- description: The repository name including the org
- required: true
- release-id:
- description: The ID of the release
- required: true
-
-outputs:
- zip-filename:
- description: "Filename of the generated .zip"
- value: ${{ steps.zip-fat-binary.outputs.zip_filename }}
- zip-path:
- description: "Path to .zip containing fat binary"
- value: ${{ steps.zip-fat-binary.outputs.zip_path }}
-
-runs:
- using: composite
- steps:
- - name: Upload release asset (${{ inputs.asset-path }})
- shell: bash
- run: |
- curl -L \
- -X POST \
- -H "Accept: application/vnd.github+json" \
- -H "Authorization: Bearer ${{ inputs.gh-token }}" \
- -H "Content-Type: application/octet-stream" \
- "https://uploads.github.com/repos/${{ inputs.repository }}/releases/${{ inputs.release-id }}/assets?name=${{ inputs.asset-filename }}" \
- --data-binary "@${{ inputs.asset-path }}"
diff --git a/.github/workflows/build-TogglesDemo.yml b/.github/workflows/build-TogglesDemo.yml
index 886f49a..103b82f 100644
--- a/.github/workflows/build-TogglesDemo.yml
+++ b/.github/workflows/build-TogglesDemo.yml
@@ -8,32 +8,37 @@ on:
branches:
- main
-env:
- XCODE_VERSION: 16.2.0
-
jobs:
test:
- name: Build
+ name: Build TogglesDemo
runs-on: macos-15
+
steps:
- name: Show macOS version
run: sw_vers
+
- name: Code Checkout
uses: actions/checkout@v4
+
- name: Select Xcode
- uses: ./.github/actions/select-xcode
+ uses: TogglesPlatform/Pipelines/actions/select-xcode@v1
with:
- xcode-version: ${{ env.XCODE_VERSION }}
+ xcode-version: 16.4.0
+
- name: Check xcodebuild version
run: xcodebuild -version
+
- name: Check xcode embedded SDKs
run: xcodebuild -showsdks
+
- name: Show buildable schemes
working-directory: ./TogglesDemo
run: xcodebuild -list
+
- name: Show eligible build destinations for TogglesDemo
working-directory: ./TogglesDemo
run: xcodebuild -showdestinations -scheme TogglesDemo
+
- name: Build for destination TogglesDemo
working-directory: ./TogglesDemo
- run: xcodebuild build -scheme TogglesDemo -destination "platform=iOS Simulator,OS=18.2,name=iPhone 16 Pro"
+ run: xcodebuild build -scheme TogglesDemo -destination "platform=iOS Simulator,OS=18.4,name=iPhone 16 Pro"
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index eeccfe2..4779d10 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -5,65 +5,17 @@ on:
tags:
- '*'
-env:
- XCODE_VERSION: 16.2.0
-
jobs:
publish-release:
name: Publish release ${{ github.ref_name }}
- runs-on: macos-15
+ runs-on: ubuntu-latest
+
steps:
- - name: Show macOS version (${{ env.XCODE_VERSION }})
- run: sw_vers
- - name: Code Checkout
- uses: actions/checkout@v4
- - name: Select Xcode
- uses: ./.github/actions/select-xcode
- with:
- xcode-version: ${{ env.XCODE_VERSION }}
- name: Create release
id: create-release
- uses: ./.github/actions/create-release
+ uses: TogglesPlatform/Pipelines/actions/create-release@v1
with:
gh-token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
tag-name: ${{ github.ref_name }}
- - name: Create universal binary (ToggleGen)
- id: create-universal-binary-ToggleGen
- uses: ./.github/actions/create-universal-binary
- with:
- tool-name: ToggleGen
- - name: Upload universal binary (ToggleGen)
- uses: ./.github/actions/upload-release-asset
- with:
- asset-filename: ${{ steps.create-universal-binary-ToggleGen.outputs.zip-filename }}
- asset-path: ${{ steps.create-universal-binary-ToggleGen.outputs.zip-path }}
- gh-token: ${{ secrets.GITHUB_TOKEN }}
- repository: ${{ github.repository }}
- release-id: ${{ steps.create-release.outputs.release-id }}
- - name: Create universal binary (ToggleCipher)
- id: create-universal-binary-ToggleCipher
- uses: ./.github/actions/create-universal-binary
- with:
- tool-name: ToggleCipher
- - name: Upload universal binary (ToggleCipher)
- uses: ./.github/actions/upload-release-asset
- with:
- asset-filename: ${{ steps.create-universal-binary-ToggleCipher.outputs.zip-filename }}
- asset-path: ${{ steps.create-universal-binary-ToggleCipher.outputs.zip-path }}
- gh-token: ${{ secrets.GITHUB_TOKEN }}
- repository: ${{ github.repository }}
- release-id: ${{ steps.create-release.outputs.release-id }}
- - name: Create universal binary (JustTweakMigrator)
- id: create-universal-binary-JustTweakMigrator
- uses: ./.github/actions/create-universal-binary
- with:
- tool-name: JustTweakMigrator
- - name: Upload universal binary (JustTweakMigrator)
- uses: ./.github/actions/upload-release-asset
- with:
- asset-filename: ${{ steps.create-universal-binary-JustTweakMigrator.outputs.zip-filename }}
- asset-path: ${{ steps.create-universal-binary-JustTweakMigrator.outputs.zip-path }}
- gh-token: ${{ secrets.GITHUB_TOKEN }}
- repository: ${{ github.repository }}
- release-id: ${{ steps.create-release.outputs.release-id }}
+
\ No newline at end of file
diff --git a/.github/workflows/run-tests-JustTweakMigrator.yml b/.github/workflows/run-tests-JustTweakMigrator.yml
deleted file mode 100644
index be5a508..0000000
--- a/.github/workflows/run-tests-JustTweakMigrator.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-name: JustTweakMigrator
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-env:
- XCODE_VERSION: 16.2.0
-
-jobs:
- test:
- name: Run tests
- runs-on: macos-15
- steps:
- - name: Code Checkout
- uses: actions/checkout@v4
- - name: Select Xcode
- uses: ./.github/actions/select-xcode
- with:
- xcode-version: ${{ env.XCODE_VERSION }}
- - name: Run tests
- working-directory: ./JustTweakMigrator
- run: swift test
diff --git a/.github/workflows/run-tests-ToggleCipher.yml b/.github/workflows/run-tests-ToggleCipher.yml
deleted file mode 100644
index 2817d85..0000000
--- a/.github/workflows/run-tests-ToggleCipher.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-name: ToggleCipher
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-env:
- XCODE_VERSION: 16.2.0
-
-jobs:
- test:
- name: Run tests
- runs-on: macos-15
- steps:
- - name: Code Checkout
- uses: actions/checkout@v4
- - name: Select Xcode
- uses: ./.github/actions/select-xcode
- with:
- xcode-version: ${{ env.XCODE_VERSION }}
- - name: Run tests
- working-directory: ./ToggleCipher
- run: swift test
diff --git a/.github/workflows/run-tests-ToggleGen.yml b/.github/workflows/run-tests-ToggleGen.yml
deleted file mode 100644
index 706d557..0000000
--- a/.github/workflows/run-tests-ToggleGen.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-name: ToggleGen
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-env:
- XCODE_VERSION: 16.2.0
-
-jobs:
- test:
- name: Run tests
- runs-on: macos-15
- steps:
- - name: Code Checkout
- uses: actions/checkout@v4
- - name: Select Xcode
- uses: ./.github/actions/select-xcode
- with:
- xcode-version: ${{ env.XCODE_VERSION }}
- - name: Run tests
- working-directory: ./ToggleGen
- run: swift test
diff --git a/.github/workflows/run-tests-Toggles.yml b/.github/workflows/run-tests-Toggles.yml
deleted file mode 100644
index 657d2ed..0000000
--- a/.github/workflows/run-tests-Toggles.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: Toggles
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-env:
- XCODE_VERSION: 16.2.0
-
-jobs:
- test:
- name: Run tests
- runs-on: macos-15
- steps:
- - name: Code Checkout
- uses: actions/checkout@v4
- - name: Select Xcode
- uses: ./.github/actions/select-xcode
- with:
- xcode-version: ${{ env.XCODE_VERSION }}
- - name: Run tests
- run: swift test
diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
new file mode 100644
index 0000000..9a5dd51
--- /dev/null
+++ b/.github/workflows/run-tests.yml
@@ -0,0 +1,16 @@
+name: Run tests
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ run-tests:
+ uses: TogglesPlatform/Pipelines/.github/workflows/run-tests.yml@v1
+ with:
+ xcode-version: 16.4.0
+ runner: 'macos-15'
diff --git a/JustTweakMigrator/.gitignore b/JustTweakMigrator/.gitignore
deleted file mode 100644
index 3b29812..0000000
--- a/JustTweakMigrator/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.DS_Store
-/.build
-/Packages
-/*.xcodeproj
-xcuserdata/
-DerivedData/
-.swiftpm/config/registries.json
-.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
-.netrc
diff --git a/JustTweakMigrator/.swiftpm/xcode/xcshareddata/xcschemes/JustTweakMigrator.xcscheme b/JustTweakMigrator/.swiftpm/xcode/xcshareddata/xcschemes/JustTweakMigrator.xcscheme
deleted file mode 100644
index 8926638..0000000
--- a/JustTweakMigrator/.swiftpm/xcode/xcshareddata/xcschemes/JustTweakMigrator.xcscheme
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/JustTweakMigrator/Package.resolved b/JustTweakMigrator/Package.resolved
deleted file mode 100644
index 98fb44e..0000000
--- a/JustTweakMigrator/Package.resolved
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "originHash" : "846ebd03be50595995c94aae129f45ae3963bac40cdb07e8080d5e01778514f7",
- "pins" : [
- {
- "identity" : "swift-argument-parser",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-argument-parser.git",
- "state" : {
- "revision" : "41982a3656a71c768319979febd796c6fd111d5c",
- "version" : "1.5.0"
- }
- }
- ],
- "version" : 3
-}
diff --git a/JustTweakMigrator/Package.swift b/JustTweakMigrator/Package.swift
deleted file mode 100644
index c57dbce..0000000
--- a/JustTweakMigrator/Package.swift
+++ /dev/null
@@ -1,42 +0,0 @@
-// swift-tools-version: 6.0
-// The swift-tools-version declares the minimum version of Swift required to build this package.
-
-import PackageDescription
-
-let package = Package(
- name: "JustTweakMigrator",
- platforms: [
- .macOS(.v12)
- ],
- products: [
- .executable(name: "JustTweakMigrator", targets: ["JustTweakMigrator"])
- ],
- dependencies: [
- .package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.5.0"))
- ],
- targets: [
- .executableTarget(
- name: "JustTweakMigrator",
- dependencies: [
- .product(name: "ArgumentParser", package: "swift-argument-parser")
- ],
- path: "Sources",
- swiftSettings: [
- .enableUpcomingFeature("InternalImportsByDefault"),
- .enableUpcomingFeature("ExistentialAny")
- ]
- ),
- .testTarget(
- name: "JustTweakMigratorTests",
- dependencies: ["JustTweakMigrator"],
- path: "Tests",
- resources: [
- .process("Resources")
- ],
- swiftSettings: [
- .enableUpcomingFeature("InternalImportsByDefault"),
- .enableUpcomingFeature("ExistentialAny")
- ]
- )
- ]
-)
diff --git a/JustTweakMigrator/README.md b/JustTweakMigrator/README.md
deleted file mode 100644
index d6010ec..0000000
--- a/JustTweakMigrator/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# JustTweakMigrator
-
-A tools to help migrating from [JustTweak](https://github.com/justeat/JustTweak) to Toggles.
diff --git a/JustTweakMigrator/Sources/Core/Converter.swift b/JustTweakMigrator/Sources/Core/Converter.swift
deleted file mode 100644
index 0e627e5..0000000
--- a/JustTweakMigrator/Sources/Core/Converter.swift
+++ /dev/null
@@ -1,38 +0,0 @@
-// Converter.swift
-
-import Foundation
-
-final class Converter {
-
- enum ConverterError: Error {
- case invalidValue
- }
-
- static func convert(tweaksDatasource: TweaksDatasource) throws -> TogglesDatasource {
- let toggles = try tweaksDatasource.fullTweaks.map {
- let toggleValue: ToggleValue
- switch $0.value {
- case is Bool:
- toggleValue = .bool($0.value as! Bool)
- case is Int:
- toggleValue = .int($0.value as! Int)
- case is Double:
- toggleValue = .number($0.value as! Double)
- case is String where $0.encrypted:
- toggleValue = .secure($0.value as! String)
- case is String:
- toggleValue = .string($0.value as! String)
- default:
- throw ConverterError.invalidValue
- }
-
- let toggleMetadata = ToggleMetadata(description: $0.title,
- group: $0.group,
- propertyName: $0.generatedPropertyName)
-
- return Toggle(variable: $0.variable, value: toggleValue, metadata: toggleMetadata)
- }
- try TogglesValidator.validate(toggles)
- return TogglesDatasource(toggles: toggles.sorted())
- }
-}
diff --git a/JustTweakMigrator/Sources/Core/TogglesValidator.swift b/JustTweakMigrator/Sources/Core/TogglesValidator.swift
deleted file mode 100644
index 27afc64..0000000
--- a/JustTweakMigrator/Sources/Core/TogglesValidator.swift
+++ /dev/null
@@ -1,19 +0,0 @@
-// TogglesValidator.swift
-
-import Foundation
-
-final class TogglesValidator {
-
- enum LoaderError: Equatable, Error {
- case foundDuplicateVariables([ToggleVariable])
- }
-
- static func validate(_ toggles: [Toggle]) throws {
- let duplicateVariables = Dictionary(grouping: toggles, by: \.variable)
- .filter { $1.count > 1 }
- .keys
- if duplicateVariables.count > 0 {
- throw LoaderError.foundDuplicateVariables(Array(duplicateVariables))
- }
- }
-}
diff --git a/JustTweakMigrator/Sources/Extensions/Toggle+Encodable.swift b/JustTweakMigrator/Sources/Extensions/Toggle+Encodable.swift
deleted file mode 100644
index 79fc3e6..0000000
--- a/JustTweakMigrator/Sources/Extensions/Toggle+Encodable.swift
+++ /dev/null
@@ -1,63 +0,0 @@
-// Toggle+Codable.swift
-
-import Foundation
-
-extension Toggle: Codable {
-
- enum CodingError: Error {
- case missingValue
- }
-
- enum CodingKeys: String, CodingKey {
- case variable
- case bool
- case int
- case number
- case string
- case secure
- case metadata
- }
-
- init(from decoder: any Decoder) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- variable = try values.decode(ToggleVariable.self, forKey: .variable)
- if let boolValue = try? values.decode(Bool.self, forKey: .bool) {
- self.value = .bool(boolValue)
- }
- else if let intValue = try? values.decode(Int.self, forKey: .int) {
- self.value = .int(intValue)
- }
- else if let numberValue = try? values.decode(Double.self, forKey: .number) {
- self.value = .number(numberValue)
- }
- else if let stringValue = try? values.decode(String.self, forKey: .string) {
- self.value = .string(stringValue)
- }
- else if let secureValue = try? values.decode(String.self, forKey: .secure) {
- self.value = .secure(secureValue)
- }
- else {
- throw CodingError.missingValue
- }
- metadata = (try? values.decode(ToggleMetadata.self, forKey: .metadata)) ?? ToggleMetadata(description: "", group: "", propertyName: nil)
- }
-
- func encode(to encoder: any Encoder) throws {
- var container = encoder.container(keyedBy: CodingKeys.self)
- try container.encode(variable, forKey: .variable)
-
- switch value {
- case .bool(let value):
- try container.encode(value, forKey: .bool)
- case .int(let value):
- try container.encode(value, forKey: .int)
- case .number(let value):
- try container.encode(value, forKey: .number)
- case .string(let value):
- try container.encode(value, forKey: .string)
- case .secure(let value):
- try container.encode(value, forKey: .secure)
- }
- try container.encode(metadata, forKey: .metadata)
- }
-}
diff --git a/JustTweakMigrator/Sources/Extensions/Tweak+Decodable.swift b/JustTweakMigrator/Sources/Extensions/Tweak+Decodable.swift
deleted file mode 100644
index b2b499e..0000000
--- a/JustTweakMigrator/Sources/Extensions/Tweak+Decodable.swift
+++ /dev/null
@@ -1,42 +0,0 @@
-// Tweak+Codable.swift
-
-import Foundation
-
-extension Tweak: Decodable {
-
- enum CodingError: Error {
- case invalidValue
- }
-
- enum CodingKeys: String, CodingKey {
- case title = "Title"
- case group = "Group"
- case value = "Value"
- case encrypted = "Encrypted"
- case generatedPropertyName = "GeneratedPropertyName"
- }
-
- init(from decoder: any Decoder) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- self.title = try values.decode(String.self, forKey: .title)
- self.group = try values.decode(String.self, forKey: .group)
- self.encrypted = (try? values.decodeIfPresent(Bool.self, forKey: .encrypted)) ?? false
- self.generatedPropertyName = try? values.decodeIfPresent(String.self, forKey: .generatedPropertyName)
-
- if let boolValue = try? values.decode(Bool.self, forKey: .value) {
- self.value = boolValue
- }
- else if let intValue = try? values.decode(Int.self, forKey: .value) {
- self.value = intValue
- }
- else if let doubleValue = try? values.decode(Double.self, forKey: .value) {
- self.value = doubleValue
- }
- else if let stringValue = try? values.decode(String.self, forKey: .value) {
- self.value = stringValue
- }
- else {
- throw CodingError.invalidValue
- }
- }
-}
diff --git a/JustTweakMigrator/Sources/Extensions/TweakDatasource+Decodable.swift b/JustTweakMigrator/Sources/Extensions/TweakDatasource+Decodable.swift
deleted file mode 100644
index 1eadbed..0000000
--- a/JustTweakMigrator/Sources/Extensions/TweakDatasource+Decodable.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-// TweaksDatasource+Codable.swift
-
-import Foundation
-
-extension TweaksDatasource: Decodable {
-
- enum CodingError: Error {
- case missingValue
- }
-
- init(from decoder: any Decoder) throws {
- let values = try decoder.singleValueContainer()
- tweaks = try values.decode([TweakFeature: [TweakVariable: Tweak]].self)
- }
-}
diff --git a/JustTweakMigrator/Sources/Extensions/TweaksDatasource+FullTweaks.swift b/JustTweakMigrator/Sources/Extensions/TweaksDatasource+FullTweaks.swift
deleted file mode 100644
index f3ead66..0000000
--- a/JustTweakMigrator/Sources/Extensions/TweaksDatasource+FullTweaks.swift
+++ /dev/null
@@ -1,25 +0,0 @@
-// TweaksDatasource+FullTweaks.swift
-
-import Foundation
-
-extension TweaksDatasource {
-
- var fullTweaks: [FullTweak] {
- var fullTweaks: [FullTweak] = []
-
- for (feature, togglesByVariable) in tweaks {
- for (variable, tweak) in togglesByVariable {
- let fullTweak = FullTweak(title: tweak.title,
- group: tweak.group,
- value: tweak.value,
- encrypted: tweak.encrypted,
- generatedPropertyName: tweak.generatedPropertyName,
- variable: variable,
- feature: feature)
- fullTweaks.append(fullTweak)
- }
- }
-
- return fullTweaks.sorted()
- }
-}
diff --git a/JustTweakMigrator/Sources/JustTweakMigrator.swift b/JustTweakMigrator/Sources/JustTweakMigrator.swift
deleted file mode 100644
index a9a0c26..0000000
--- a/JustTweakMigrator/Sources/JustTweakMigrator.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-// JustTweakMigrator.swift
-
-import ArgumentParser
-import Foundation
-
-@main
-struct JustTweakMigrator: ParsableCommand {
-
- static let configuration = CommandConfiguration(
- abstract: "",
- subcommands: [
- ConvertDatasource.self
- ]
- )
-}
diff --git a/JustTweakMigrator/Sources/Models/Toggles/Toggle.swift b/JustTweakMigrator/Sources/Models/Toggles/Toggle.swift
deleted file mode 100644
index 0dd0934..0000000
--- a/JustTweakMigrator/Sources/Models/Toggles/Toggle.swift
+++ /dev/null
@@ -1,22 +0,0 @@
-// Toggle.swift
-
-import Foundation
-
-struct Toggle {
- let variable: ToggleVariable
- let value: ToggleValue
- let metadata: ToggleMetadata
-}
-
-extension Toggle: Comparable {
-
- static func < (lhs: Toggle, rhs: Toggle) -> Bool {
- if lhs.variable != rhs.variable {
- return lhs.variable < rhs.variable
- }
- if lhs.value != rhs.value {
- return lhs.value < rhs.value
- }
- return lhs.metadata < rhs.metadata
- }
-}
diff --git a/JustTweakMigrator/Sources/Models/Toggles/ToggleMetadata.swift b/JustTweakMigrator/Sources/Models/Toggles/ToggleMetadata.swift
deleted file mode 100644
index 9dd1626..0000000
--- a/JustTweakMigrator/Sources/Models/Toggles/ToggleMetadata.swift
+++ /dev/null
@@ -1,31 +0,0 @@
-// ToggleMetadata.swift
-
-import Foundation
-
-struct ToggleMetadata: Codable {
- let description: String
- let group: String
- let propertyName: String?
-}
-
-extension ToggleMetadata: Comparable {
-
- static func < (lhs: ToggleMetadata, rhs: ToggleMetadata) -> Bool {
- if lhs.description != rhs.description {
- return lhs.description < rhs.description
- }
- if lhs.group != rhs.group {
- return lhs.group < rhs.group
- }
- switch (lhs.propertyName, rhs.propertyName) {
- case (.some(let lhsPropertyName), .some(let rhsPropertyName)):
- return lhsPropertyName < rhsPropertyName
- case (.some, .none):
- return false
- case (.none, .some):
- return true
- case (.none, .none):
- return false
- }
- }
-}
diff --git a/JustTweakMigrator/Sources/Models/Toggles/ToggleValue.swift b/JustTweakMigrator/Sources/Models/Toggles/ToggleValue.swift
deleted file mode 100644
index 94f66a5..0000000
--- a/JustTweakMigrator/Sources/Models/Toggles/ToggleValue.swift
+++ /dev/null
@@ -1,31 +0,0 @@
-// ToggleValue.swift
-
-import Foundation
-
-enum ToggleValue: Equatable, Encodable {
- case bool(Bool)
- case int(Int)
- case number(Double)
- case string(String)
- case secure(String)
-}
-
-extension ToggleValue: Comparable {
-
- static func < (lhs: ToggleValue, rhs: ToggleValue) -> Bool {
- switch (lhs, rhs) {
- case (.bool(let a), .bool(let b)):
- return a != b
- case (.int(let a), .int(let b)):
- return a < b
- case (.number(let a), .number(let b)):
- return a < b
- case (.string(let a), .string(let b)):
- return a < b
- case (.secure(let a), .secure(let b)):
- return a < b
- default:
- return false
- }
- }
-}
diff --git a/JustTweakMigrator/Sources/Models/Toggles/ToggleVariable.swift b/JustTweakMigrator/Sources/Models/Toggles/ToggleVariable.swift
deleted file mode 100644
index 9b91952..0000000
--- a/JustTweakMigrator/Sources/Models/Toggles/ToggleVariable.swift
+++ /dev/null
@@ -1,5 +0,0 @@
-// ToggleVariable.swift
-
-import Foundation
-
-typealias ToggleVariable = String
diff --git a/JustTweakMigrator/Sources/Models/Toggles/TogglesDatasource.swift b/JustTweakMigrator/Sources/Models/Toggles/TogglesDatasource.swift
deleted file mode 100644
index 4270253..0000000
--- a/JustTweakMigrator/Sources/Models/Toggles/TogglesDatasource.swift
+++ /dev/null
@@ -1,7 +0,0 @@
-// TogglesDatasource.swift
-
-import Foundation
-
-struct TogglesDatasource: Encodable, Equatable {
- let toggles: [Toggle]
-}
diff --git a/JustTweakMigrator/Sources/Models/Tweaks/FullTweak.swift b/JustTweakMigrator/Sources/Models/Tweaks/FullTweak.swift
deleted file mode 100644
index 9f8b916..0000000
--- a/JustTweakMigrator/Sources/Models/Tweaks/FullTweak.swift
+++ /dev/null
@@ -1,44 +0,0 @@
-// FullTweak.swift
-
-import Foundation
-
-struct FullTweak {
- let title: String
- let group: String
- let value: Any
- let encrypted: Bool
- let generatedPropertyName: String?
- let variable: String
- let feature: String
-}
-
-extension FullTweak: Equatable {
-
- static func == (lhs: FullTweak, rhs: FullTweak) -> Bool {
- guard lhs.title == rhs.title else { return false }
- guard lhs.group == rhs.group else { return false }
- guard lhs.encrypted == rhs.encrypted else { return false }
- guard lhs.generatedPropertyName == rhs.generatedPropertyName else { return false }
- guard lhs.variable == rhs.variable else { return false }
- guard lhs.feature == rhs.feature else { return false }
- switch (lhs.value, rhs.value) {
- case (let lhsValue as Bool, let rhsValue as Bool):
- return lhsValue == rhsValue
- case (let lhsValue as Int, let rhsValue as Int):
- return lhsValue == rhsValue
- case (let lhsValue as Double, let rhsValue as Double):
- return lhsValue == rhsValue
- case (let lhsValue as String, let rhsValue as String):
- return lhsValue == rhsValue
- default:
- return false
- }
- }
-}
-
-extension FullTweak: Comparable {
-
- static func < (lhs: FullTweak, rhs: FullTweak) -> Bool {
- lhs.variable < rhs.variable
- }
-}
diff --git a/JustTweakMigrator/Sources/Models/Tweaks/Tweak.swift b/JustTweakMigrator/Sources/Models/Tweaks/Tweak.swift
deleted file mode 100644
index 72a73d7..0000000
--- a/JustTweakMigrator/Sources/Models/Tweaks/Tweak.swift
+++ /dev/null
@@ -1,11 +0,0 @@
-// Tweak.swift
-
-import Foundation
-
-struct Tweak {
- let title: String
- let group: String
- let value: Any
- let encrypted: Bool
- let generatedPropertyName: String?
-}
diff --git a/JustTweakMigrator/Sources/Models/Tweaks/TweakFeature.swift b/JustTweakMigrator/Sources/Models/Tweaks/TweakFeature.swift
deleted file mode 100644
index 10125df..0000000
--- a/JustTweakMigrator/Sources/Models/Tweaks/TweakFeature.swift
+++ /dev/null
@@ -1,5 +0,0 @@
-// TweakFeature.swift
-
-import Foundation
-
-typealias TweakFeature = String
diff --git a/JustTweakMigrator/Sources/Models/Tweaks/TweakVariable.swift b/JustTweakMigrator/Sources/Models/Tweaks/TweakVariable.swift
deleted file mode 100644
index 23c9b43..0000000
--- a/JustTweakMigrator/Sources/Models/Tweaks/TweakVariable.swift
+++ /dev/null
@@ -1,5 +0,0 @@
-// TweakVariable.swift
-
-import Foundation
-
-typealias TweakVariable = String
diff --git a/JustTweakMigrator/Sources/Models/Tweaks/TweaksDatasource.swift b/JustTweakMigrator/Sources/Models/Tweaks/TweaksDatasource.swift
deleted file mode 100644
index 9f91fa8..0000000
--- a/JustTweakMigrator/Sources/Models/Tweaks/TweaksDatasource.swift
+++ /dev/null
@@ -1,7 +0,0 @@
-// TweaksDatasource.swift
-
-import Foundation
-
-struct TweaksDatasource {
- let tweaks: [TweakFeature: [TweakVariable: Tweak]]
-}
diff --git a/JustTweakMigrator/Sources/Resources/Toggles.json b/JustTweakMigrator/Sources/Resources/Toggles.json
deleted file mode 100644
index 597912a..0000000
--- a/JustTweakMigrator/Sources/Resources/Toggles.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "toggles" : [
- {
- "int" : 42,
- "metadata" : {
- "description" : "Definitive answer",
- "group" : "General",
- "propertyName" : "definitiveAnswer"
- },
- "variable" : "answer_to_the_universe"
- },
- {
- "bool" : true,
- "metadata" : {
- "description" : "Display Green View",
- "group" : "UI Customization"
- },
- "variable" : "display_green_view"
- },
- {
- "bool" : false,
- "metadata" : {
- "description" : "Display Red View",
- "group" : "UI Customization"
- },
- "variable" : "display_red_view"
- },
- {
- "bool" : false,
- "metadata" : {
- "description" : "Display Yellow View",
- "group" : "UI Customization"
- },
- "variable" : "display_yellow_view"
- },
- {
- "metadata" : {
- "description" : "Encrypted definitive answer",
- "group" : "General",
- "propertyName" : "definitiveAnswerEncrypted"
- },
- "secure" : "24 ton yletinifeD",
- "variable" : "encrypted_answer_to_the_universe"
- },
- {
- "bool" : false,
- "metadata" : {
- "description" : "Greet on app launch",
- "group" : "General"
- },
- "variable" : "greet_on_app_did_become_active"
- },
- {
- "metadata" : {
- "description" : "Label Text",
- "group" : "UI Customization"
- },
- "string" : "Test value",
- "variable" : "label_text"
- },
- {
- "metadata" : {
- "description" : "Red View Alpha Component",
- "group" : "UI Customization"
- },
- "number" : 0.80000000000000004,
- "variable" : "red_view_alpha_component"
- },
- {
- "bool" : true,
- "metadata" : {
- "description" : "Tap to change views color",
- "group" : "General"
- },
- "variable" : "tap_to_change_color_enabled"
- }
- ]
-}
\ No newline at end of file
diff --git a/JustTweakMigrator/Sources/Resources/Tweaks.json b/JustTweakMigrator/Sources/Resources/Tweaks.json
deleted file mode 100644
index 77d3952..0000000
--- a/JustTweakMigrator/Sources/Resources/Tweaks.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "ui_customization": {
- "display_red_view": {
- "Title": "Display Red View",
- "Description": "shows a red view in the main view controller",
- "Group": "UI Customization",
- "Value": false
- },
- "display_yellow_view": {
- "Title": "Display Yellow View",
- "Description": "shows a yellow view in the main view controller",
- "Group": "UI Customization",
- "Value": false
- },
- "display_green_view": {
- "Title": "Display Green View",
- "Description": "shows a green view in the main view controller",
- "Group": "UI Customization",
- "Value": true
- },
- "red_view_alpha_component": {
- "Title": "Red View Alpha Component",
- "Description": "defines the alpha level of the red view",
- "Group": "UI Customization",
- "Value": 0.8
- },
- "label_text": {
- "Title": "Label Text",
- "Description": "the title of the main label",
- "Group": "UI Customization",
- "Value": "Test value"
- }
- },
- "general": {
- "encrypted_answer_to_the_universe": {
- "Title": "Encrypted definitive answer",
- "Description": "Encrypted answer to the Ultimate Question of Life, the Universe, and Everything",
- "Group": "General",
- "Value": "24 ton yletinifeD",
- "GeneratedPropertyName": "definitiveAnswerEncrypted",
- "Encrypted": true
- },
- "answer_to_the_universe": {
- "Title": "Definitive answer",
- "Description": "Answer to the Ultimate Question of Life, the Universe, and Everything",
- "Group": "General",
- "Value": 42,
- "GeneratedPropertyName": "definitiveAnswer"
- },
- "greet_on_app_did_become_active": {
- "Title": "Greet on app launch",
- "Description": "shows an alert on applicationDidBecomeActive",
- "Group": "General",
- "Value": false
- },
- "tap_to_change_color_enabled": {
- "Title": "Tap to change views color",
- "Description": "change the colour of the main view when receiving a tap",
- "Group": "General",
- "Value": true
- }
- }
-}
diff --git a/JustTweakMigrator/Sources/Subcommands/ConvertDatasource.swift b/JustTweakMigrator/Sources/Subcommands/ConvertDatasource.swift
deleted file mode 100644
index 790721d..0000000
--- a/JustTweakMigrator/Sources/Subcommands/ConvertDatasource.swift
+++ /dev/null
@@ -1,39 +0,0 @@
-// ConvertDatasource.swift
-
-import ArgumentParser
-import Foundation
-
-struct ConvertDatasource: ParsableCommand {
-
- @Option(name: .long, help: "The path to the JustTweak datasource.")
- var inputDatasourceFilePath: String
-
- @Option(name: .long, help: "The path to where save the Toggles datasource.")
- var outputDatasourceFilePath: String
-
- func run() throws {
- let tweaksDatasourceUrl = URL(fileURLWithPath: inputDatasourceFilePath)
- let data = try Data(contentsOf: tweaksDatasourceUrl)
- let tweaksDatasource = try JSONDecoder().decode(TweaksDatasource.self, from: data)
-
- print("*** Converting Tweaks Datasource ***")
- for (_, togglesByVariable) in tweaksDatasource.tweaks {
- for (variable, toggle) in togglesByVariable {
- print(variable + ": " + String(describing: toggle.value))
- }
- }
-
- let togglesDatasource = try Converter.convert(tweaksDatasource: tweaksDatasource)
- print("\n")
- print("*** Generated Toggles Datasource ***")
- for toggle in togglesDatasource.toggles {
- print(toggle.variable + ": " + String(describing: toggle.value))
- }
-
- let togglesDatasourceUrl = URL(fileURLWithPath: outputDatasourceFilePath)
- let encoder = JSONEncoder()
- encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
- let jsonData = try encoder.encode(togglesDatasource)
- try jsonData.write(to: togglesDatasourceUrl)
- }
-}
diff --git a/JustTweakMigrator/Tests/ConverterTests.swift b/JustTweakMigrator/Tests/ConverterTests.swift
deleted file mode 100644
index be38899..0000000
--- a/JustTweakMigrator/Tests/ConverterTests.swift
+++ /dev/null
@@ -1,45 +0,0 @@
-// ConverterTests.swift
-
-import XCTest
-@testable import JustTweakMigrator
-
-final class ConverterTests: XCTestCase {
-
- func test_convertDatasource() throws {
- let tweaksDatasource = TweaksDatasourceFactory.makeTestTweaksDatasource()
- let togglesDatasource = try Converter.convert(tweaksDatasource: tweaksDatasource)
- let toggles = [
- Toggle(variable: "variable_1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "Var 1", group: "group_1", propertyName: "var1")),
- Toggle(variable: "variable_2",
- value: .int(42),
- metadata: ToggleMetadata(description: "Var 2", group: "group_1", propertyName: "var2")),
- Toggle(variable: "variable_3",
- value: .number(3.1416),
- metadata: ToggleMetadata(description: "Var 3", group: "group_2", propertyName: "var3")),
- Toggle(variable: "variable_4",
- value: .string("Hello World"),
- metadata: ToggleMetadata(description: "Var 4", group: "group_2", propertyName: "var4")),
- Toggle(variable: "variable_5",
- value: .secure("__encrypted_value__"),
- metadata: ToggleMetadata(description: "Var 5", group: "group_2", propertyName: "var5"))
- ]
- let expectedTogglesDatasource = TogglesDatasource(toggles: toggles)
- XCTAssertEqual(togglesDatasource, expectedTogglesDatasource)
- }
-
- func test_convertDatasourceFailsInCaseOfInvalidValue() throws {
- let tweaksDatasource = TweaksDatasourceFactory.makeTestTweaksDatasourceWithInvalidValue()
- XCTAssertThrowsError(try Converter.convert(tweaksDatasource: tweaksDatasource)) { error in
- XCTAssertEqual(error as! Converter.ConverterError, Converter.ConverterError.invalidValue)
- }
- }
-
- func test_convertDatasourceFailsInCaseOfDuplicates() throws {
- let tweaksDatasource = TweaksDatasourceFactory.makeTestTweaksDatasourceWithDuplicate()
- XCTAssertThrowsError(try Converter.convert(tweaksDatasource: tweaksDatasource)) { error in
- XCTAssertEqual(error as! TogglesValidator.LoaderError, TogglesValidator.LoaderError.foundDuplicateVariables(["variable_3"]))
- }
- }
-}
diff --git a/JustTweakMigrator/Tests/Resources/TestTweaks.json b/JustTweakMigrator/Tests/Resources/TestTweaks.json
deleted file mode 100644
index 77d3952..0000000
--- a/JustTweakMigrator/Tests/Resources/TestTweaks.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "ui_customization": {
- "display_red_view": {
- "Title": "Display Red View",
- "Description": "shows a red view in the main view controller",
- "Group": "UI Customization",
- "Value": false
- },
- "display_yellow_view": {
- "Title": "Display Yellow View",
- "Description": "shows a yellow view in the main view controller",
- "Group": "UI Customization",
- "Value": false
- },
- "display_green_view": {
- "Title": "Display Green View",
- "Description": "shows a green view in the main view controller",
- "Group": "UI Customization",
- "Value": true
- },
- "red_view_alpha_component": {
- "Title": "Red View Alpha Component",
- "Description": "defines the alpha level of the red view",
- "Group": "UI Customization",
- "Value": 0.8
- },
- "label_text": {
- "Title": "Label Text",
- "Description": "the title of the main label",
- "Group": "UI Customization",
- "Value": "Test value"
- }
- },
- "general": {
- "encrypted_answer_to_the_universe": {
- "Title": "Encrypted definitive answer",
- "Description": "Encrypted answer to the Ultimate Question of Life, the Universe, and Everything",
- "Group": "General",
- "Value": "24 ton yletinifeD",
- "GeneratedPropertyName": "definitiveAnswerEncrypted",
- "Encrypted": true
- },
- "answer_to_the_universe": {
- "Title": "Definitive answer",
- "Description": "Answer to the Ultimate Question of Life, the Universe, and Everything",
- "Group": "General",
- "Value": 42,
- "GeneratedPropertyName": "definitiveAnswer"
- },
- "greet_on_app_did_become_active": {
- "Title": "Greet on app launch",
- "Description": "shows an alert on applicationDidBecomeActive",
- "Group": "General",
- "Value": false
- },
- "tap_to_change_color_enabled": {
- "Title": "Tap to change views color",
- "Description": "change the colour of the main view when receiving a tap",
- "Group": "General",
- "Value": true
- }
- }
-}
diff --git a/JustTweakMigrator/Tests/Toggle+ComparableTests.swift b/JustTweakMigrator/Tests/Toggle+ComparableTests.swift
deleted file mode 100644
index 8e917fe..0000000
--- a/JustTweakMigrator/Tests/Toggle+ComparableTests.swift
+++ /dev/null
@@ -1,127 +0,0 @@
-// Toggle+ComparableTests.swift
-
-import XCTest
-@testable import JustTweakMigrator
-
-final class Toggle_ComparableTests: XCTestCase {
-
- func test_toggleComparable_Variable() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var2",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_ValueBool() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(false),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_ValueInt() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .int(42),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .int(108),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_ValueNumber() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .number(3.1416),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .number(3.15),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_ValueString() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .string("ABC"),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .string("BCD"),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_ValueSecure() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .secure("ABC"),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .secure("BCD"),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_MetadataDescription() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc2", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_MetadataGroup() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group2", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_MetadataPropertyNameSomeSome() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property2"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_MetadataPropertyNameSomeNone() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- let toggle2 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: nil))
- XCTAssertFalse(toggle1 < toggle2)
- }
-
- func test_toggleComparable_MetadataPropertyNameNoneSome() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: nil))
- let toggle2 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: "property1"))
- XCTAssertTrue(toggle1 < toggle2)
- }
-
- func test_toggleComparable_MetadataPropertyNameNoneNone() throws {
- let toggle1 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: nil))
- let toggle2 = Toggle(variable: "var1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc1", group: "group1", propertyName: nil))
- XCTAssertFalse(toggle1 < toggle2)
- }
-}
diff --git a/JustTweakMigrator/Tests/Toggle+EncodableTests.swift b/JustTweakMigrator/Tests/Toggle+EncodableTests.swift
deleted file mode 100644
index fba0029..0000000
--- a/JustTweakMigrator/Tests/Toggle+EncodableTests.swift
+++ /dev/null
@@ -1,52 +0,0 @@
-// Toggle+EncodableTests.swift
-
-import XCTest
-@testable import JustTweakMigrator
-
-final class Toggle_CodableTests: XCTestCase {
-
- func test_codableBooleanToggle() throws {
- let toggle = Toggle(variable: "var",
- value: .bool(true),
- metadata: ToggleMetadata(description: "desc", group: "group", propertyName: "property"))
- let data = try! JSONEncoder().encode(toggle)
- let decodedToggle = try JSONDecoder().decode(Toggle.self, from: data)
- XCTAssertEqual(toggle, decodedToggle)
- }
-
- func test_codableIntegerToggle() throws {
- let toggle = Toggle(variable: "var",
- value: .int(42),
- metadata: ToggleMetadata(description: "desc", group: "group", propertyName: "property"))
- let data = try! JSONEncoder().encode(toggle)
- let decodedToggle = try JSONDecoder().decode(Toggle.self, from: data)
- XCTAssertEqual(toggle, decodedToggle)
- }
-
- func test_codableNumericToggle() throws {
- let toggle = Toggle(variable: "var",
- value: .number(3.1416),
- metadata: ToggleMetadata(description: "desc", group: "group", propertyName: "property"))
- let data = try! JSONEncoder().encode(toggle)
- let decodedToggle = try JSONDecoder().decode(Toggle.self, from: data)
- XCTAssertEqual(toggle, decodedToggle)
- }
-
- func test_codableStringToggle() throws {
- let toggle = Toggle(variable: "var",
- value: .string("Hello World"),
- metadata: ToggleMetadata(description: "desc", group: "group", propertyName: "property"))
- let data = try! JSONEncoder().encode(toggle)
- let decodedToggle = try JSONDecoder().decode(Toggle.self, from: data)
- XCTAssertEqual(toggle, decodedToggle)
- }
-
- func test_codableSecureToggle() throws {
- let toggle = Toggle(variable: "var",
- value: .secure("secret"),
- metadata: ToggleMetadata(description: "desc", group: "group", propertyName: "property"))
- let data = try! JSONEncoder().encode(toggle)
- let decodedToggle = try JSONDecoder().decode(Toggle.self, from: data)
- XCTAssertEqual(toggle, decodedToggle)
- }
-}
diff --git a/JustTweakMigrator/Tests/TogglesValidatorTests.swift b/JustTweakMigrator/Tests/TogglesValidatorTests.swift
deleted file mode 100644
index 472c0d5..0000000
--- a/JustTweakMigrator/Tests/TogglesValidatorTests.swift
+++ /dev/null
@@ -1,31 +0,0 @@
-// TogglesValidatorTests.swift
-
-import XCTest
-@testable import JustTweakMigrator
-
-final class TogglesValidatorTests: XCTestCase {
-
- func test_validateNoDuplicates() throws {
- let toggles = [
- Toggle(variable: "variable_1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "Var 1", group: "group_1", propertyName: "var1")),
- Toggle(variable: "variable_2",
- value: .int(42),
- metadata: ToggleMetadata(description: "Var 2", group: "group_1", propertyName: "var2")),
- ]
- XCTAssertNoThrow(try TogglesValidator.validate(toggles))
- }
-
- func test_validateDuplicates() throws {
- let toggles = [
- Toggle(variable: "variable_1",
- value: .bool(true),
- metadata: ToggleMetadata(description: "Var 1", group: "group_1", propertyName: "var1")),
- Toggle(variable: "variable_1",
- value: .int(42),
- metadata: ToggleMetadata(description: "Var 2", group: "group_1", propertyName: "var2")),
- ]
- XCTAssertThrowsError(try TogglesValidator.validate(toggles))
- }
-}
diff --git a/JustTweakMigrator/Tests/TweaksDatasource+DecodableTests.swift b/JustTweakMigrator/Tests/TweaksDatasource+DecodableTests.swift
deleted file mode 100644
index c2e2558..0000000
--- a/JustTweakMigrator/Tests/TweaksDatasource+DecodableTests.swift
+++ /dev/null
@@ -1,18 +0,0 @@
-// TweaksDatasource+DecodableTests.swift
-
-import XCTest
-@testable import JustTweakMigrator
-
-final class TweaksDatasource_DecodableTests: XCTestCase {
-
- func test_tweakDecoding() throws {
- let tweaksDatasourceUrl = Bundle.module.url(forResource: "TestTweaks", withExtension: "json")!
- let data = try Data(contentsOf: tweaksDatasourceUrl)
- let tweaksDatasource = try JSONDecoder().decode(TweaksDatasource.self, from: data)
- XCTAssertEqual(tweaksDatasource.tweaks.keys.count, 2)
- let uiCustomizationTweaks = tweaksDatasource.tweaks["ui_customization"]!
- XCTAssertEqual(uiCustomizationTweaks.count, 5)
- let generalTweaks = tweaksDatasource.tweaks["general"]!
- XCTAssertEqual(generalTweaks.count, 4)
- }
-}
diff --git a/JustTweakMigrator/Tests/TweaksDatasource+FullTweaksTests.swift b/JustTweakMigrator/Tests/TweaksDatasource+FullTweaksTests.swift
deleted file mode 100644
index bb71c94..0000000
--- a/JustTweakMigrator/Tests/TweaksDatasource+FullTweaksTests.swift
+++ /dev/null
@@ -1,50 +0,0 @@
-// TweaksDatasource+FullTweaksTests.swift
-
-import XCTest
-@testable import JustTweakMigrator
-
-final class TweaksDatasource_FullTweaksTests: XCTestCase {
-
- func test_fullTweaks() throws {
- let tweaksDatasource = TweaksDatasourceFactory.makeTestTweaksDatasource()
- let fullTweaks = tweaksDatasource.fullTweaks
- let expectedFullTweaks = [
- FullTweak(title: "Var 1",
- group: "group_1",
- value: true,
- encrypted: false,
- generatedPropertyName: "var1",
- variable: "variable_1",
- feature: "feature_1"),
- FullTweak(title: "Var 2",
- group: "group_1",
- value: 42,
- encrypted: false,
- generatedPropertyName: "var2",
- variable: "variable_2",
- feature: "feature_1"),
- FullTweak(title: "Var 3",
- group: "group_2",
- value: 3.1416,
- encrypted: false,
- generatedPropertyName: "var3",
- variable: "variable_3",
- feature: "feature_1"),
- FullTweak(title: "Var 4",
- group: "group_2",
- value: "Hello World",
- encrypted: false,
- generatedPropertyName: "var4",
- variable: "variable_4",
- feature: "feature_2"),
- FullTweak(title: "Var 5",
- group: "group_2",
- value: "__encrypted_value__",
- encrypted: true,
- generatedPropertyName: "var5",
- variable: "variable_5",
- feature: "feature_2")
- ]
- XCTAssertEqual(fullTweaks, expectedFullTweaks)
- }
-}
diff --git a/JustTweakMigrator/Tests/Utilities/TweaksDatasourceFactory.swift b/JustTweakMigrator/Tests/Utilities/TweaksDatasourceFactory.swift
deleted file mode 100644
index 1642e82..0000000
--- a/JustTweakMigrator/Tests/Utilities/TweaksDatasourceFactory.swift
+++ /dev/null
@@ -1,117 +0,0 @@
-// TweaksDatasourceFactory.swift
-
-import Foundation
-@testable import JustTweakMigrator
-
-class TweaksDatasourceFactory {
-
- static func makeTestTweaksDatasource() -> TweaksDatasource {
- let tweaks: [TweakFeature : [TweakVariable : Tweak]] = [
- "feature_1": [
- "variable_1": Tweak(title: "Var 1",
- group: "group_1",
- value: true,
- encrypted: false,
- generatedPropertyName: "var1"),
- "variable_2": Tweak(title: "Var 2",
- group: "group_1",
- value: 42,
- encrypted: false,
- generatedPropertyName: "var2"),
- "variable_3": Tweak(title: "Var 3",
- group: "group_2",
- value: 3.1416,
- encrypted: false,
- generatedPropertyName: "var3"),
- ],
- "feature_2": [
- "variable_4": Tweak(title: "Var 4",
- group: "group_2",
- value: "Hello World",
- encrypted: false,
- generatedPropertyName: "var4"),
- "variable_5": Tweak(title: "Var 5",
- group: "group_2",
- value: "__encrypted_value__",
- encrypted: true,
- generatedPropertyName: "var5")
- ]
- ]
- return TweaksDatasource(tweaks: tweaks)
- }
-
- static func makeTestTweaksDatasourceWithDuplicate() -> TweaksDatasource {
- let tweaks: [TweakFeature : [TweakVariable : Tweak]] = [
- "feature_1": [
- "variable_1": Tweak(title: "Var 1",
- group: "group_1",
- value: true,
- encrypted: false,
- generatedPropertyName: "var1"),
- "variable_2": Tweak(title: "Var 2",
- group: "group_1",
- value: 42,
- encrypted: false,
- generatedPropertyName: "var2"),
- "variable_3": Tweak(title: "Var 3",
- group: "group_2",
- value: 3.1416,
- encrypted: false,
- generatedPropertyName: "var3"),
- ],
- "feature_2": [
- "variable_3": Tweak(title: "Var 3",
- group: "group_2",
- value: 3.1416,
- encrypted: false,
- generatedPropertyName: "var3"),
- "variable_4": Tweak(title: "Var 4",
- group: "group_2",
- value: "Hello World",
- encrypted: false,
- generatedPropertyName: "var4"),
- "variable_5": Tweak(title: "Var 5",
- group: "group_2",
- value: "Hello World",
- encrypted: true,
- generatedPropertyName: "var5")
- ]
- ]
- return TweaksDatasource(tweaks: tweaks)
- }
-
- static func makeTestTweaksDatasourceWithInvalidValue() -> TweaksDatasource {
- let tweaks: [TweakFeature : [TweakVariable : Tweak]] = [
- "feature_1": [
- "variable_1": Tweak(title: "Var 1",
- group: "group_1",
- value: true,
- encrypted: false,
- generatedPropertyName: "var1"),
- "variable_2": Tweak(title: "Var 2",
- group: "group_1",
- value: 42,
- encrypted: false,
- generatedPropertyName: "var2"),
- "variable_3": Tweak(title: "Var 3",
- group: "group_2",
- value: ["invalid"],
- encrypted: false,
- generatedPropertyName: "var3"),
- ],
- "feature_2": [
- "variable_4": Tweak(title: "Var 4",
- group: "group_2",
- value: "Hello World",
- encrypted: false,
- generatedPropertyName: "var4"),
- "variable_5": Tweak(title: "Var 5",
- group: "group_2",
- value: "Hello World",
- encrypted: true,
- generatedPropertyName: "var5")
- ]
- ]
- return TweaksDatasource(tweaks: tweaks)
- }
-}
diff --git a/ToggleCipher/.gitignore b/ToggleCipher/.gitignore
deleted file mode 100644
index 3b29812..0000000
--- a/ToggleCipher/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.DS_Store
-/.build
-/Packages
-/*.xcodeproj
-xcuserdata/
-DerivedData/
-.swiftpm/config/registries.json
-.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
-.netrc
diff --git a/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher [decrypt].xcscheme b/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher [decrypt].xcscheme
deleted file mode 100644
index bc5131f..0000000
--- a/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher [decrypt].xcscheme
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher [encrypt].xcscheme b/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher [encrypt].xcscheme
deleted file mode 100644
index ba9ea89..0000000
--- a/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher [encrypt].xcscheme
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher.xcscheme b/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher.xcscheme
deleted file mode 100644
index 060cb2f..0000000
--- a/ToggleCipher/.swiftpm/xcode/xcshareddata/xcschemes/ToggleCipher.xcscheme
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ToggleCipher/Package.resolved b/ToggleCipher/Package.resolved
deleted file mode 100644
index f37e65d..0000000
--- a/ToggleCipher/Package.resolved
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "originHash" : "63afab39f29cfaa6bb7b11a572048e87c16a4d8a4f890b580e8e6290524fcbf5",
- "pins" : [
- {
- "identity" : "swift-argument-parser",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-argument-parser.git",
- "state" : {
- "revision" : "41982a3656a71c768319979febd796c6fd111d5c",
- "version" : "1.5.0"
- }
- }
- ],
- "version" : 3
-}
diff --git a/ToggleCipher/Package.swift b/ToggleCipher/Package.swift
deleted file mode 100644
index d15c53f..0000000
--- a/ToggleCipher/Package.swift
+++ /dev/null
@@ -1,39 +0,0 @@
-// swift-tools-version: 6.0
-// The swift-tools-version declares the minimum version of Swift required to build this package.
-
-import PackageDescription
-
-let package = Package(
- name: "ToggleCipher",
- platforms: [
- .macOS(.v12)
- ],
- products: [
- .executable(name: "ToggleCipher", targets: ["ToggleCipher"])
- ],
- dependencies: [
- .package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.5.0"))
- ],
- targets: [
- .executableTarget(
- name: "ToggleCipher",
- dependencies: [
- .product(name: "ArgumentParser", package: "swift-argument-parser")
- ],
- path: "Sources",
- swiftSettings: [
- .enableUpcomingFeature("InternalImportsByDefault"),
- .enableUpcomingFeature("ExistentialAny")
- ]
- ),
- .testTarget(
- name: "ToggleCipherTests",
- dependencies: ["ToggleCipher"],
- path: "Tests",
- swiftSettings: [
- .enableUpcomingFeature("InternalImportsByDefault"),
- .enableUpcomingFeature("ExistentialAny")
- ]
- )
- ]
-)
diff --git a/ToggleCipher/README.md b/ToggleCipher/README.md
deleted file mode 100644
index 4987068..0000000
--- a/ToggleCipher/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# ToggleCipher
-
-A description of this package.
diff --git a/ToggleCipher/Sources/ChaCha20Poly1305.swift b/ToggleCipher/Sources/ChaCha20Poly1305.swift
deleted file mode 100644
index ef36022..0000000
--- a/ToggleCipher/Sources/ChaCha20Poly1305.swift
+++ /dev/null
@@ -1,45 +0,0 @@
-// ChaCha20Poly1305.swift
-
-import Foundation
-import CryptoKit
-
-struct ChaCha20Poly1305 {
-
- enum CipherError: Error {
- case invalidKey(String)
- case invalidValue(String)
- case invalidDecryptedData(Data)
- }
-
- let key: String
-
- func encrypt(_ value: String) throws -> String {
- guard let dataToEncrypt = value.data(using: .utf8) else {
- throw CipherError.invalidValue(value)
- }
- let symmetricKey = try makeSymmetricKey(key: key)
- let encryptedData = try ChaChaPoly.seal(dataToEncrypt, using: symmetricKey)
- return encryptedData.combined.base64EncodedString()
- }
-
- func decrypt(_ value: String) throws -> String {
- guard let base64StringData = Data(base64Encoded: value) else {
- throw CipherError.invalidValue(value)
- }
- let symmetricKey = try makeSymmetricKey(key: key)
- let sealedBox = try ChaChaPoly.SealedBox(combined: base64StringData)
- let decryptedData = try ChaChaPoly.open(sealedBox, using: symmetricKey)
- guard let base64StringData = String(data: decryptedData, encoding: .utf8) else {
- throw CipherError.invalidDecryptedData(decryptedData)
- }
- return base64StringData
- }
-
- private func makeSymmetricKey(key: String) throws -> SymmetricKey {
- guard let keyData = key.data(using: .utf8) else {
- throw CipherError.invalidKey(key)
- }
- let hash = SHA256.hash(data: keyData)
- return SymmetricKey(data: hash)
- }
-}
diff --git a/ToggleCipher/Sources/Decrypt.swift b/ToggleCipher/Sources/Decrypt.swift
deleted file mode 100644
index ae37ee1..0000000
--- a/ToggleCipher/Sources/Decrypt.swift
+++ /dev/null
@@ -1,30 +0,0 @@
-// Decrypt.swift
-
-import ArgumentParser
-import Foundation
-
-struct Decrypt: ParsableCommand {
-
- @Option(name: .long, help: "The algorithm to use.")
- var algorithm: Algorithm
-
- @Option(name: .long, help: "The key to use for the algorithm.")
- var key: String
-
- @Option(name: .long, help: "The value to encrypt.")
- var value: String
-
- enum Algorithm: String, ExpressibleByArgument {
- case chaCha20Poly1305 = "chaChaPoly"
- }
-
- mutating func run() throws {
- switch algorithm {
- case .chaCha20Poly1305:
- let cipher = ChaCha20Poly1305(key: key)
- let decryptedValue = try cipher.decrypt(value)
- print("Encrypted value: \"\(value)\"")
- print("Decrypted value: \"\(decryptedValue)\"")
- }
- }
-}
diff --git a/ToggleCipher/Sources/Encrypt.swift b/ToggleCipher/Sources/Encrypt.swift
deleted file mode 100644
index c27cc07..0000000
--- a/ToggleCipher/Sources/Encrypt.swift
+++ /dev/null
@@ -1,30 +0,0 @@
-// Encrypt.swift
-
-import ArgumentParser
-import Foundation
-
-struct Encrypt: ParsableCommand {
-
- @Option(name: .long, help: "The algorithm to use.")
- var algorithm: Algorithm
-
- @Option(name: .long, help: "The key to use for the algorithm.")
- var key: String
-
- @Option(name: .long, help: "The value to encrypt.")
- var value: String
-
- enum Algorithm: String, ExpressibleByArgument {
- case chaCha20Poly1305 = "chaChaPoly"
- }
-
- mutating func run() throws {
- switch algorithm {
- case .chaCha20Poly1305:
- let cipher = ChaCha20Poly1305(key: key)
- let encryptedValue = try cipher.encrypt(value)
- print("Plaintext value: \"\(value)\"")
- print("Encrypted value: \"\(encryptedValue)\"")
- }
- }
-}
diff --git a/ToggleCipher/Sources/ToggleCypher.swift b/ToggleCipher/Sources/ToggleCypher.swift
deleted file mode 100644
index 84b4bcf..0000000
--- a/ToggleCipher/Sources/ToggleCypher.swift
+++ /dev/null
@@ -1,16 +0,0 @@
-// Generator.swift
-
-import ArgumentParser
-import Foundation
-
-@main
-struct Generator: AsyncParsableCommand {
-
- static let configuration = CommandConfiguration(
- abstract: "",
- subcommands: [
- Encrypt.self,
- Decrypt.self
- ]
- )
-}
diff --git a/ToggleCipher/Tests/ChaCha20Poly1305Tests.swift b/ToggleCipher/Tests/ChaCha20Poly1305Tests.swift
deleted file mode 100644
index 71fb734..0000000
--- a/ToggleCipher/Tests/ChaCha20Poly1305Tests.swift
+++ /dev/null
@@ -1,26 +0,0 @@
-// ChaCha20Poly1305Tests.swift
-
-import XCTest
-@testable import ToggleCipher
-
-final class ChaCha20Poly1305Tests: XCTestCase {
-
- var cipher: ChaCha20Poly1305!
- let value = "some secret value"
-
- override func setUp() {
- super.setUp()
- cipher = ChaCha20Poly1305(key: "")
- }
-
- override func tearDown() {
- cipher = nil
- super.tearDown()
- }
-
- func test_encryptAndDecrypt() throws {
- let encryptedValue = try cipher.encrypt(value)
- let decryptedValue = try cipher.decrypt(encryptedValue)
- XCTAssertEqual(decryptedValue, value)
- }
-}
diff --git a/ToggleGen/.gitignore b/ToggleGen/.gitignore
deleted file mode 100644
index 3b29812..0000000
--- a/ToggleGen/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.DS_Store
-/.build
-/Packages
-/*.xcodeproj
-xcuserdata/
-DerivedData/
-.swiftpm/config/registries.json
-.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
-.netrc
diff --git a/ToggleGen/.swiftpm/xcode/xcshareddata/xcschemes/ToggleGen.xcscheme b/ToggleGen/.swiftpm/xcode/xcshareddata/xcschemes/ToggleGen.xcscheme
deleted file mode 100644
index d9fc329..0000000
--- a/ToggleGen/.swiftpm/xcode/xcshareddata/xcschemes/ToggleGen.xcscheme
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ToggleGen/Demo/DemoDatasource.json b/ToggleGen/Demo/DemoDatasource.json
deleted file mode 100644
index 9e1491e..0000000
--- a/ToggleGen/Demo/DemoDatasource.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "toggles": [
- {
- "variable": "boolean_toggle",
- "bool": true
- },
- {
- "variable": "integer_toggle",
- "int": 42
- },
- {
- "variable": "numeric_toggle",
- "number": 3.1416
- },
- {
- "variable": "string_toggle",
- "string": "Hello World"
- },
- {
- "variable": "encrypted_toggle",
- "secure": "eDUxAQXW6dobqAMxhZIJLkyQKb8+36bFHc36eabacXDahMipVnGy/Q=="
- },
- {
- "variable": "boolean_toggle_2",
- "bool": true,
- "propertyName": "userDefinedBooleanToggle"
- },
- {
- "variable": "integer_toggle_2",
- "int": 108,
- "propertyName": "userDefinedIntegerToggle"
- },
- {
- "variable": "numeric_toggle_2",
- "number": 1.618,
- "propertyName": "userDefinedNumericToggle"
- },
- {
- "variable": "string_toggle_2",
- "string": "Ciao Mondo",
- "propertyName": "userDefinedStringToggle"
- },
- {
- "variable": "object_toggle",
- "object": {
- "boolProperty" : true,
- "stringProperty" : "value",
- "intProperty" : 420,
- "numberProperty": 13.6
- },
- "propertyName": "userDefinedObjectToggle"
- }
- ]
-}
diff --git a/ToggleGen/GeneratedCode/ToggleAccessor.swift b/ToggleGen/GeneratedCode/ToggleAccessor.swift
deleted file mode 100644
index 2933073..0000000
--- a/ToggleGen/GeneratedCode/ToggleAccessor.swift
+++ /dev/null
@@ -1,71 +0,0 @@
-// ToggleAccessor.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-public class ToggleAccessor {
-
- private(set) var manager: ToggleManager
-
- public init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension ToggleAccessor {
-
- public var booleanToggle: Bool {
- get { manager.value(for: ToggleVariables.booleanToggle).boolValue! }
- set { manager.set(.bool(newValue), for: ToggleVariables.booleanToggle) }
- }
-
- public var integerToggle: Int {
- get { manager.value(for: ToggleVariables.integerToggle).intValue! }
- set { manager.set(.int(newValue), for: ToggleVariables.integerToggle) }
- }
-
- public var numericToggle: Double {
- get { manager.value(for: ToggleVariables.numericToggle).numberValue! }
- set { manager.set(.number(newValue), for: ToggleVariables.numericToggle) }
- }
-
- public var stringToggle: String {
- get { manager.value(for: ToggleVariables.stringToggle).stringValue! }
- set { manager.set(.string(newValue), for: ToggleVariables.stringToggle) }
- }
-
- public var encryptedToggle: String {
- get { manager.value(for: ToggleVariables.encryptedToggle).secureValue! }
- set { manager.set(.secure(newValue), for: ToggleVariables.encryptedToggle) }
- }
-
- public var booleanToggle2: Bool {
- get { manager.value(for: ToggleVariables.booleanToggle2).boolValue! }
- set { manager.set(.bool(newValue), for: ToggleVariables.booleanToggle2) }
- }
-
- public var integerToggle2: Int {
- get { manager.value(for: ToggleVariables.integerToggle2).intValue! }
- set { manager.set(.int(newValue), for: ToggleVariables.integerToggle2) }
- }
-
- public var numericToggle2: Double {
- get { manager.value(for: ToggleVariables.numericToggle2).numberValue! }
- set { manager.set(.number(newValue), for: ToggleVariables.numericToggle2) }
- }
-
- public var stringToggle2: String {
- get { manager.value(for: ToggleVariables.stringToggle2).stringValue! }
- set { manager.set(.string(newValue), for: ToggleVariables.stringToggle2) }
- }
-
- public var objectToggle: Object {
- get { manager.value(for: ToggleVariables.objectToggle).objectValue! }
- set { manager.set(.object(newValue), for: ToggleVariables.objectToggle) }
- }
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/GeneratedCode/ToggleVariables.swift b/ToggleGen/GeneratedCode/ToggleVariables.swift
deleted file mode 100644
index 7f6312e..0000000
--- a/ToggleGen/GeneratedCode/ToggleVariables.swift
+++ /dev/null
@@ -1,31 +0,0 @@
-// ToggleVariables.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-public enum ToggleVariables {
-
- public static let booleanToggle = "boolean_toggle"
-
- public static let integerToggle = "integer_toggle"
-
- public static let numericToggle = "numeric_toggle"
-
- public static let stringToggle = "string_toggle"
-
- public static let encryptedToggle = "encrypted_toggle"
-
- public static let booleanToggle2 = "boolean_toggle_2"
-
- public static let integerToggle2 = "integer_toggle_2"
-
- public static let numericToggle2 = "numeric_toggle_2"
-
- public static let stringToggle2 = "string_toggle_2"
-
- public static let objectToggle = "object_toggle"
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Package.resolved b/ToggleGen/Package.resolved
deleted file mode 100644
index af424fb..0000000
--- a/ToggleGen/Package.resolved
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "originHash" : "10bd945cafbf5fd5a04f3e154ea5980c17116a5d1c1e7557d397352110c0eedd",
- "pins" : [
- {
- "identity" : "pathkit",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/kylef/PathKit.git",
- "state" : {
- "revision" : "3bfd2737b700b9a36565a8c94f4ad2b050a5e574",
- "version" : "1.0.1"
- }
- },
- {
- "identity" : "spectre",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/kylef/Spectre.git",
- "state" : {
- "revision" : "26cc5e9ae0947092c7139ef7ba612e34646086c7",
- "version" : "0.10.1"
- }
- },
- {
- "identity" : "stencil",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/stencilproject/Stencil.git",
- "state" : {
- "revision" : "4f222ac85d673f35df29962fc4c36ccfdaf9da5b",
- "version" : "0.15.1"
- }
- },
- {
- "identity" : "swift-argument-parser",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-argument-parser.git",
- "state" : {
- "revision" : "41982a3656a71c768319979febd796c6fd111d5c",
- "version" : "1.5.0"
- }
- }
- ],
- "version" : 3
-}
diff --git a/ToggleGen/Package.swift b/ToggleGen/Package.swift
deleted file mode 100644
index 95e6c78..0000000
--- a/ToggleGen/Package.swift
+++ /dev/null
@@ -1,44 +0,0 @@
-// swift-tools-version: 6.0
-// The swift-tools-version declares the minimum version of Swift required to build this package.
-
-import PackageDescription
-
-let package = Package(
- name: "ToggleGen",
- platforms: [
- .iOS(.v15),
- .macOS(.v12)
- ],
- products: [
- .executable(name: "ToggleGen",
- targets: ["ToggleGen"])
- ],
- dependencies: [
- .package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMinor(from: "1.5.0")),
- .package(url: "https://github.com/stencilproject/Stencil.git", exact: "0.15.1"),
- ],
- targets: [
- .executableTarget(
- name: "ToggleGen",
- dependencies: [
- .product(name: "ArgumentParser", package: "swift-argument-parser"),
- .product(name: "Stencil", package: "Stencil"),
- ],
- path: "Sources",
- swiftSettings: [
- .enableUpcomingFeature("InternalImportsByDefault"),
- .enableUpcomingFeature("ExistentialAny")
- ]
- ),
- .testTarget(
- name: "ToggleGenTests",
- dependencies: ["ToggleGen"],
- path: "Tests",
- resources: [.process("Resources")],
- swiftSettings: [
- .enableUpcomingFeature("InternalImportsByDefault"),
- .enableUpcomingFeature("ExistentialAny")
- ]
- )
- ]
-)
diff --git a/ToggleGen/README.md b/ToggleGen/README.md
deleted file mode 100644
index 0b032dd..0000000
--- a/ToggleGen/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# ToggleGen
-
-A description of this package.
diff --git a/ToggleGen/Sources/Core/Generator.swift b/ToggleGen/Sources/Core/Generator.swift
deleted file mode 100644
index 69f7071..0000000
--- a/ToggleGen/Sources/Core/Generator.swift
+++ /dev/null
@@ -1,128 +0,0 @@
-// Generator.swift
-
-import Foundation
-
-enum AccessControl: String {
- enum Error: Swift.Error {
- case unknownAccessControl
- }
-
- case `open`
- case `public`
- case `package`
- case `internal`
-
- init(value: String) throws {
- guard let accessControl = AccessControl(rawValue: value) else {
- throw Error.unknownAccessControl
- }
- self = accessControl
- }
-}
-
-struct Constant {
- let name: String
- let value: String
-}
-
-struct AccessorInfo {
- var variable: Toggle.Variable
- var type: String
- var propertyName: String
- var constant: Constant
- var toggleType: String
-}
-
-class Generator {
-
- private enum Constants: String {
- case className
- case enumName
- case accessorInfos
- case variables
- case accessControl
- }
-
- enum LoaderError: Error, Equatable {
- case foundDuplicateVariables([Toggle.Variable])
- case foundDuplicatePropertyNames([String])
- }
-
- private let datasource: Datasource
-
- init(datasourceUrl: URL) throws {
- let content = try Data(contentsOf: datasourceUrl)
- datasource = try JSONDecoder().decode(Datasource.self, from: content)
- try validate()
- }
-
- func generateVariables(variablesTemplatePath: String,
- variablesEnumName: String,
- accessControl: AccessControl?) throws -> String {
- let templater = Templater()
- let variablesTemplateUrl = URL(fileURLWithPath: variablesTemplatePath)
- var variablesContext: [String: Any] = [
- Constants.enumName.rawValue: variablesEnumName,
- Constants.variables.rawValue: loadVariables()
- ]
- if let accessControlValue = accessControl?.rawValue {
- variablesContext[Constants.accessControl.rawValue] = accessControlValue
- }
-
- return try templater.renderTemplate(at: variablesTemplateUrl, with: variablesContext)
- }
-
- func generateAccessor(accessorTemplatePath: String,
- variablesEnumName: String,
- accessorClassName: String,
- accessControl: AccessControl?) throws -> String {
- let templater = Templater()
- let accessorTemplateUrl = URL(fileURLWithPath: accessorTemplatePath)
- var accessorContext: [String: Any] = [
- Constants.className.rawValue: accessorClassName,
- Constants.enumName.rawValue: variablesEnumName,
- Constants.accessorInfos.rawValue: loadAccessorInfos()
- ]
- if let accessControlValue = accessControl?.rawValue {
- accessorContext[Constants.accessControl.rawValue] = accessControlValue
- }
-
- return try templater.renderTemplate(at: accessorTemplateUrl, with: accessorContext)
- }
-
- private func validate() throws {
- let duplicateVariables = Dictionary(grouping: datasource.toggles, by: \.variable)
- .filter { $1.count > 1 }
- .compactMap { String($0.0) }
- .map { String($0) }
- if duplicateVariables.count > 0 {
- throw LoaderError.foundDuplicateVariables(duplicateVariables)
- }
-
- let duplicatePropertyNames = Dictionary(grouping: datasource.toggles, by: \.computedPropertyName)
- .filter { $1.count > 1 }
- .compactMap { $0.0 }
- if duplicatePropertyNames.count > 0 {
- throw LoaderError.foundDuplicatePropertyNames(duplicatePropertyNames)
- }
- }
-
- private func loadVariables() -> [Constant] {
- datasource.toggles.map {
- Constant(name: $0.variable.codeVariableValue,
- value: $0.variable)
- }
- }
-
- private func loadAccessorInfos() -> [AccessorInfo] {
- datasource.toggles.map { toggle in
- let constant = Constant(name: toggle.variable.codeVariableValue,
- value: toggle.variable)
- return AccessorInfo(variable: toggle.variable,
- type: toggle.type,
- propertyName: toggle.computedPropertyName,
- constant: constant,
- toggleType: toggle.toggleType)
- }
- }
-}
diff --git a/ToggleGen/Sources/Core/Templater.swift b/ToggleGen/Sources/Core/Templater.swift
deleted file mode 100644
index d452c6a..0000000
--- a/ToggleGen/Sources/Core/Templater.swift
+++ /dev/null
@@ -1,13 +0,0 @@
-// Templater.swift
-
-import Foundation
-import Stencil
-
-class Templater {
-
- func renderTemplate(at url: URL, with context: [String: Any]) throws -> String {
- let templateString = try String(contentsOf: url)
- let template = Template(templateString: templateString)
- return try template.render(context)
- }
-}
diff --git a/ToggleGen/Sources/Core/Writer.swift b/ToggleGen/Sources/Core/Writer.swift
deleted file mode 100644
index cb50a72..0000000
--- a/ToggleGen/Sources/Core/Writer.swift
+++ /dev/null
@@ -1,48 +0,0 @@
-// Writer.swift
-
-import Foundation
-
-typealias Content = String
-
-class Writer {
-
- private enum Constants: String {
- case swift
- }
-
- func saveVariables(_ content: Content, outputPath: String, variablesEnumName: String) throws {
- let variablesFileName = URL(fileURLWithPath: outputPath)
- .appendingPathComponent(variablesEnumName)
- .appendingPathExtension(Constants.swift.rawValue)
- try write(content, to: variablesFileName)
- }
-
- func saveAccessor(_ content: Content, outputPath: String, accessorClassName: String) throws {
- let accessorFileName = URL(fileURLWithPath: outputPath)
- .appendingPathComponent(accessorClassName)
- .appendingPathExtension(Constants.swift.rawValue)
- try write(content, to: accessorFileName)
- }
-
- private func write(_ content: Content, to url: URL) throws {
- let existingContent = try? String(contentsOf: url, encoding: .utf8)
- switch (existingContent, content) {
- case (.none, let newContent):
- try writeContent(newContent, at: url)
- case (.some(let existingContent), let newContent) where existingContent != newContent:
- try writeContent(newContent, at: url)
- case (.some, _):
- break
- }
- }
-
- private func writeContent(_ content: String, at url: URL) throws {
- let fileManager = FileManager.default
- let absolutePathToFolder = url.deletingLastPathComponent().path
- var fileIsDirectory: ObjCBool = true
- if !fileManager.fileExists(atPath: absolutePathToFolder, isDirectory: &fileIsDirectory) {
- try fileManager.createDirectory(atPath: absolutePathToFolder, withIntermediateDirectories: true, attributes: nil)
- }
- try content.write(to: url, atomically: true, encoding: .utf8)
- }
-}
diff --git a/ToggleGen/Sources/Extensions/Models+Decodable.swift b/ToggleGen/Sources/Extensions/Models+Decodable.swift
deleted file mode 100644
index 5f6dd45..0000000
--- a/ToggleGen/Sources/Extensions/Models+Decodable.swift
+++ /dev/null
@@ -1,48 +0,0 @@
-// Models+Codable.swift
-
-import Foundation
-
-extension Toggle: Decodable {
-
- enum CodingError: Error {
- case missingValue
- }
-
- enum CodingKeys: String, CodingKey {
- case variable
- case bool
- case int
- case number
- case string
- case secure
- case object
- case metadata
- }
-
- public init(from decoder: any Decoder) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- variable = try values.decode(Variable.self, forKey: .variable)
- if let boolValue = try? values.decode(Bool.self, forKey: .bool) {
- self.value = .bool(boolValue)
- }
- else if let intValue = try? values.decode(Int.self, forKey: .int) {
- self.value = .int(intValue)
- }
- else if let doubleValue = try? values.decode(Double.self, forKey: .number) {
- self.value = .number(doubleValue)
- }
- else if let stringValue = try? values.decode(String.self, forKey: .string) {
- self.value = .string(stringValue)
- }
- else if let secureValue = try? values.decode(String.self, forKey: .secure) {
- self.value = .secure(secureValue)
- }
- else if let objectValue = try? values.decode(Object.self, forKey: .object) {
- self.value = .object(objectValue)
- }
- else {
- throw CodingError.missingValue
- }
- metadata = try values.decodeIfPresent(Toggle.ToggleMetadata.self, forKey: .metadata)
- }
-}
diff --git a/ToggleGen/Sources/Extensions/Models+Utilities.swift b/ToggleGen/Sources/Extensions/Models+Utilities.swift
deleted file mode 100644
index 671d089..0000000
--- a/ToggleGen/Sources/Extensions/Models+Utilities.swift
+++ /dev/null
@@ -1,54 +0,0 @@
-// Models+Utilities.swift
-
-import Foundation
-
-extension Toggle.Variable {
- var codeVariableValue: String {
- camelCased()
- }
-}
-
-extension Toggle {
- var computedPropertyName: String {
- if let propertyName = metadata?.propertyName {
- return propertyName
- }
- return variable.codeVariableValue
- }
-}
-
-extension Toggle {
- var type: String {
- switch value {
- case .bool:
- return "Bool"
- case .int:
- return "Int"
- case .number:
- return "Double"
- case .string:
- return "String"
- case .secure:
- return "String"
- case .object:
- return "Object"
- }
- }
-
- var toggleType: String {
- switch value {
- case .bool:
- return "bool"
- case .int:
- return "int"
- case .number:
- return "number"
- case .string:
- return "string"
- case .secure:
- return "secure"
- case .object:
- return "object"
- }
- }
-}
diff --git a/ToggleGen/Sources/Extensions/String+Casing.swift b/ToggleGen/Sources/Extensions/String+Casing.swift
deleted file mode 100644
index 6abf6ef..0000000
--- a/ToggleGen/Sources/Extensions/String+Casing.swift
+++ /dev/null
@@ -1,21 +0,0 @@
-// String+Casing.swift
-
-import Foundation
-
-extension String {
-
- func camelCased(with separator: Character = "_") -> String {
- split(separator: separator)
- .enumerated()
- .map { $0.offset == 0 ? String($0.element).lowercasedFirstChar() : String($0.element).capitalisedFirstChar() }
- .joined()
- }
-
- func lowercasedFirstChar() -> String {
- prefix(1).lowercased() + self.dropFirst()
- }
-
- func capitalisedFirstChar() -> String {
- prefix(1).uppercased() + self.dropFirst()
- }
-}
diff --git a/ToggleGen/Sources/Models/Models.swift b/ToggleGen/Sources/Models/Models.swift
deleted file mode 100644
index 1da08ea..0000000
--- a/ToggleGen/Sources/Models/Models.swift
+++ /dev/null
@@ -1,29 +0,0 @@
-// Models.swift
-
-import Foundation
-
-struct Toggle: Equatable {
-
- typealias Variable = String
-
- struct ToggleMetadata: Equatable, Decodable {
- let propertyName: String?
- }
-
- enum Value: Equatable, Decodable {
- case bool(Bool)
- case int(Int)
- case number(Double)
- case string(String)
- case secure(String)
- case object(Object)
- }
-
- let variable: Variable
- let value: Value
- let metadata: ToggleMetadata?
-}
-
-struct Datasource: Equatable, Decodable {
- public let toggles: [Toggle]
-}
diff --git a/ToggleGen/Sources/Models/Object.swift b/ToggleGen/Sources/Models/Object.swift
deleted file mode 100644
index 404a15f..0000000
--- a/ToggleGen/Sources/Models/Object.swift
+++ /dev/null
@@ -1,28 +0,0 @@
-// Object.swift
-
-import Foundation
-
-struct Object: Equatable, Decodable {
- let map: [String: ObjectSupportedType]
-
- init(from decoder: any Decoder) throws {
- let container = try decoder.singleValueContainer()
-
- if let dictionary = try? container.decode([String: ObjectSupportedType].self) {
- var map = [String: ObjectSupportedType]()
- for (key, item) in dictionary {
- guard !key.isEmpty else {
- throw DecodingError.dataCorruptedError(in: container, debugDescription: "JSON contained empty key. Invalid data.")
- }
- map[key] = item
- }
- if map.isEmpty {
- throw DecodingError.dataCorruptedError(in: container, debugDescription: "Empty object. Invalid data.")
- }
-
- self.map = map
- } else {
- throw DecodingError.dataCorruptedError(in: container, debugDescription: "Unsupported type. Invalid data.")
- }
- }
-}
diff --git a/ToggleGen/Sources/Models/ObjectSupportedType.swift b/ToggleGen/Sources/Models/ObjectSupportedType.swift
deleted file mode 100644
index e452404..0000000
--- a/ToggleGen/Sources/Models/ObjectSupportedType.swift
+++ /dev/null
@@ -1,27 +0,0 @@
-// ObjectSupportedType.swift
-
-import Foundation
-
-enum ObjectSupportedType: Equatable, Decodable {
- case bool(Bool)
- case int(Int)
- case number(Double)
- case string(String)
-
- init(from decoder: any Decoder) throws {
- let container = try decoder.singleValueContainer()
-
- if let bool = try? container.decode(Bool.self) {
- self = .bool(bool)
- } else if let int = try? container.decode(Int.self) {
- self = .int(int)
- } else if let number = try? container.decode(Double.self) {
- self = .number(number)
- } else if let string = try? container.decode(String.self) {
- self = .string(string)
- } else {
- throw DecodingError.dataCorruptedError(in: container, debugDescription: "ObjectSupportedType tried to decode unsupported type, could not decode")
- }
- }
-}
-
diff --git a/ToggleGen/Sources/ToggleGen.swift b/ToggleGen/Sources/ToggleGen.swift
deleted file mode 100644
index c97905c..0000000
--- a/ToggleGen/Sources/ToggleGen.swift
+++ /dev/null
@@ -1,59 +0,0 @@
-// ToggleGen.swift
-
-import ArgumentParser
-import Foundation
-
-@main
-struct ToggleGen: ParsableCommand {
-
- @Option(name: .long, help: "The path of the template to use to generate the variables.")
- var variablesTemplatePath: String
-
- @Option(name: .long, help: "The path of the template to use to generate the accessor.")
- var accessorTemplatePath: String
-
- @Option(name: .long, help: "The name of the variables enum to generate.")
- var variablesEnumName: String
-
- @Option(name: .long, help: "The name of the accessor class to generate.")
- var accessorClassName: String
-
- @Option(name: .long, help: "The path of the datas source to use.")
- var datasourcePath: String
-
- @Option(name: .long, help: "The path to the folder to write the ToggleAccessor file to.")
- var accessorOutputPath: String
-
- @Option(name: .long, help: "The path to the folder to write the ToggleVariables file to.")
- var variablesOutputPath: String
-
- @Option(name: .long, help: "Access control level for the variables enum.")
- var variablesAccessControl: String?
-
- @Option(name: .long, help: "Access control level for the accessor class.")
- var accessorAccessControl: String?
-
- mutating func run() throws {
- let datasourceUrl = URL(fileURLWithPath: datasourcePath)
- let generator = try Generator(datasourceUrl: datasourceUrl)
-
- let variablesAccessControl = try variablesAccessControl.flatMap { try AccessControl(value: $0) }
- let accessorAccessControl = try accessorAccessControl.flatMap { try AccessControl(value: $0) }
-
- let variablesContent = try generator.generateVariables(variablesTemplatePath: variablesTemplatePath,
- variablesEnumName: variablesEnumName,
- accessControl: variablesAccessControl)
- let accessorContent = try generator.generateAccessor(accessorTemplatePath: accessorTemplatePath,
- variablesEnumName: variablesEnumName,
- accessorClassName: accessorClassName,
- accessControl: accessorAccessControl)
- let writer = Writer()
- try writer.saveAccessor(accessorContent,
- outputPath: accessorOutputPath,
- accessorClassName: accessorClassName)
- try writer.saveVariables(variablesContent,
- outputPath: variablesOutputPath,
- variablesEnumName: variablesEnumName)
-
- }
-}
diff --git a/ToggleGen/Templates/Accessor.stencil b/ToggleGen/Templates/Accessor.stencil
deleted file mode 100644
index ab0bcb8..0000000
--- a/ToggleGen/Templates/Accessor.stencil
+++ /dev/null
@@ -1,26 +0,0 @@
-// {{ className }}.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-{{ accessControl }} class {{ className }} {
-
- private(set) var manager: ToggleManager
-
- {{ accessControl }} init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension {{ className }} {
-{% for accessorInfo in accessorInfos %}
- {{ accessControl }} var {{ accessorInfo.propertyName }}: {{ accessorInfo.type }} {
- get { manager.value(for: {{ enumName }}.{{ accessorInfo.constant.name }}).{{ accessorInfo.toggleType }}Value! }
- set { manager.set(.{{ accessorInfo.toggleType }}(newValue), for: {{ enumName }}.{{ accessorInfo.constant.name }}) }
- }
-{% endfor %}
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Templates/Variables.stencil b/ToggleGen/Templates/Variables.stencil
deleted file mode 100644
index 33daebd..0000000
--- a/ToggleGen/Templates/Variables.stencil
+++ /dev/null
@@ -1,13 +0,0 @@
-// {{ enumName }}.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-{{ accessControl }} enum {{ enumName }} {
-{% for variable in variables %}
- {{ accessControl }} static let {{ variable.name }} = "{{ variable.value }}"
-{% endfor %}
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/GeneratorTests.swift b/ToggleGen/Tests/GeneratorTests.swift
deleted file mode 100644
index 9937168..0000000
--- a/ToggleGen/Tests/GeneratorTests.swift
+++ /dev/null
@@ -1,146 +0,0 @@
-// GeneratorTests.swift
-
-import XCTest
-@testable import ToggleGen
-
-final class GeneratorTests: XCTestCase {
-
- func test_variablesContent_accessControlOpen() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let variablesTemplateUrl = Bundle.module.path(forResource: "Variables", ofType: "stencil")!
- let generatedContent = try generator.generateVariables(variablesTemplatePath: variablesTemplateUrl,
- variablesEnumName: "TestVariables",
- accessControl: .open)
- let variablesUrl = Bundle.module.url(forResource: "TestVariables_open", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_accessorContent_accessControlOpen() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let accessorTemplateUrl = Bundle.module.path(forResource: "Accessor", ofType: "stencil")!
- let generatedContent = try generator.generateAccessor(accessorTemplatePath: accessorTemplateUrl,
- variablesEnumName: "TestVariables",
- accessorClassName: "TestToggleAccessor",
- accessControl: .open)
- let variablesUrl = Bundle.module.url(forResource: "TestToggleAccessor_open", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_variablesContent_accessControlPublic() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let variablesTemplateUrl = Bundle.module.path(forResource: "Variables", ofType: "stencil")!
- let generatedContent = try generator.generateVariables(variablesTemplatePath: variablesTemplateUrl,
- variablesEnumName: "TestVariables",
- accessControl: .public)
- let variablesUrl = Bundle.module.url(forResource: "TestVariables_public", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_variablesContent_accessControlPackage() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let variablesTemplateUrl = Bundle.module.path(forResource: "Variables", ofType: "stencil")!
- let generatedContent = try generator.generateVariables(variablesTemplatePath: variablesTemplateUrl,
- variablesEnumName: "TestVariables",
- accessControl: .package)
- let variablesUrl = Bundle.module.url(forResource: "TestVariables_package", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_givenAccessControlNil_whenGenerateVariables_thenAccessControlIsDefault() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let variablesTemplateUrl = Bundle.module.path(forResource: "Variables", ofType: "stencil")!
- let generatedContent = try generator.generateVariables(variablesTemplatePath: variablesTemplateUrl,
- variablesEnumName: "TestVariables",
- accessControl: nil)
- let variablesUrl = Bundle.module.url(forResource: "TestVariables_nil", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_accessorContent_accessControlPublic() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let accessorTemplateUrl = Bundle.module.path(forResource: "Accessor", ofType: "stencil")!
- let generatedContent = try generator.generateAccessor(accessorTemplatePath: accessorTemplateUrl,
- variablesEnumName: "TestVariables",
- accessorClassName: "TestToggleAccessor",
- accessControl: .public)
- let variablesUrl = Bundle.module.url(forResource: "TestToggleAccessor_public", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_variablesContent_accessControlInternal() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let variablesTemplateUrl = Bundle.module.path(forResource: "Variables", ofType: "stencil")!
- let generatedContent = try generator.generateVariables(variablesTemplatePath: variablesTemplateUrl,
- variablesEnumName: "TestVariables",
- accessControl: .internal)
- let variablesUrl = Bundle.module.url(forResource: "TestVariables_internal", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_accessorContent_accessControlInternal() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let accessorTemplateUrl = Bundle.module.path(forResource: "Accessor", ofType: "stencil")!
- let generatedContent = try generator.generateAccessor(accessorTemplatePath: accessorTemplateUrl,
- variablesEnumName: "TestVariables",
- accessorClassName: "TestToggleAccessor",
- accessControl: .internal)
- let variablesUrl = Bundle.module.url(forResource: "TestToggleAccessor_internal", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_accessorContent_accessControlPackage() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let accessorTemplateUrl = Bundle.module.path(forResource: "Accessor", ofType: "stencil")!
- let generatedContent = try generator.generateAccessor(accessorTemplatePath: accessorTemplateUrl,
- variablesEnumName: "TestVariables",
- accessorClassName: "TestToggleAccessor",
- accessControl: .package)
- let variablesUrl = Bundle.module.url(forResource: "TestToggleAccessor_package", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_givenAccessControlNil_whenGenerateAccessor_thenAccessControlIsDefault() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasource", withExtension: "json")!
- let generator = try Generator(datasourceUrl: datasourceUrl)
- let accessorTemplateUrl = Bundle.module.path(forResource: "Accessor", ofType: "stencil")!
- let generatedContent = try generator.generateAccessor(accessorTemplatePath: accessorTemplateUrl,
- variablesEnumName: "TestVariables",
- accessorClassName: "TestToggleAccessor",
- accessControl: nil)
- let variablesUrl = Bundle.module.url(forResource: "TestToggleAccessor_nil", withExtension: "txt")!
- let expectedContent = try String(contentsOf: variablesUrl)
- XCTAssertEqual(generatedContent, expectedContent)
- }
-
- func test_accessorDoesNotSupportDatasourceWithDuplicateVariables() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasourceWithDuplicateVariables", withExtension: "json")!
- XCTAssertThrowsError(try Generator(datasourceUrl: datasourceUrl)) { error in
- XCTAssertEqual(error as? Generator.LoaderError, Generator.LoaderError.foundDuplicateVariables(["boolean_toggle"]))
- }
- }
-
- func test_accessorDoesNotSupportDatasourceWithDuplicatePropertyNames() throws {
- let datasourceUrl = Bundle.module.url(forResource: "TestDatasourceWithDuplicatePropertyNames", withExtension: "json")!
- XCTAssertThrowsError(try Generator(datasourceUrl: datasourceUrl)) { error in
- XCTAssertEqual(error as? Generator.LoaderError, Generator.LoaderError.foundDuplicatePropertyNames(["userDefinedBooleanToggle"]))
- }
- }
-}
diff --git a/ToggleGen/Tests/Resources/Accessor.stencil b/ToggleGen/Tests/Resources/Accessor.stencil
deleted file mode 100644
index 88af721..0000000
--- a/ToggleGen/Tests/Resources/Accessor.stencil
+++ /dev/null
@@ -1,26 +0,0 @@
-// {{ className }}.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-{% if accessControl %}{{ accessControl }} {% endif %}class {{ className }} {
-
- private(set) var manager: ToggleManager
-
- {% if accessControl %}{{ accessControl }} {% endif %}init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension {{ className }} {
-{% for accessorInfo in accessorInfos %}
- {% if accessControl %}{{ accessControl }} {% endif %}var {{ accessorInfo.propertyName }}: {{ accessorInfo.type }} {
- get { manager.value(for: {{ enumName }}.{{ accessorInfo.constant.name }}).{{ accessorInfo.toggleType }}Value! }
- set { manager.set(.{{ accessorInfo.toggleType }}(newValue), for: {{ enumName }}.{{ accessorInfo.constant.name }}) }
- }
-{% endfor %}
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestDatasource.json b/ToggleGen/Tests/Resources/TestDatasource.json
deleted file mode 100644
index 77b5485..0000000
--- a/ToggleGen/Tests/Resources/TestDatasource.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "toggles": [
- {
- "variable": "boolean_toggle",
- "bool": true
- },
- {
- "variable": "integer_toggle",
- "int": 42
- },
- {
- "variable": "numeric_toggle",
- "number": 3.1416
- },
- {
- "variable": "string_toggle",
- "string": "Hello World"
- },
- {
- "variable": "encrypted_toggle",
- "secure": "eDUxAQXW6dobqAMxhZIJLkyQKb8+36bFHc36eabacXDahMipVnGy/Q=="
- },
- {
- "variable": "boolean_toggle_2",
- "bool": true,
- "metadata": {
- "propertyName": "userDefinedBooleanToggle"
- }
- },
- {
- "variable": "integer_toggle_2",
- "int": 108,
- "metadata": {
- "propertyName": "userDefinedIntegerToggle"
- }
- },
- {
- "variable": "numeric_toggle_2",
- "number": 1.618,
- "metadata": {
- "propertyName": "userDefinedNumericToggle"
- }
- },
- {
- "variable": "string_toggle_2",
- "string": "Ciao Mondo",
- "metadata": {
- "propertyName": "userDefinedStringToggle"
- }
- }
- ]
-}
diff --git a/ToggleGen/Tests/Resources/TestDatasourceWithDuplicatePropertyNames.json b/ToggleGen/Tests/Resources/TestDatasourceWithDuplicatePropertyNames.json
deleted file mode 100644
index 9993446..0000000
--- a/ToggleGen/Tests/Resources/TestDatasourceWithDuplicatePropertyNames.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "toggles": [
- {
- "variable": "boolean_toggle",
- "bool": true,
- "metadata": {
- "propertyName": "userDefinedBooleanToggle"
- }
- },
- {
- "variable": "integer_toggle",
- "int": 42
- },
- {
- "variable": "numeric_toggle",
- "number": 3.1416
- },
- {
- "variable": "string_toggle",
- "string": "Hello World"
- },
- {
- "variable": "boolean_toggle_2",
- "bool": true,
- "metadata": {
- "propertyName": "userDefinedBooleanToggle"
- }
- }
- ]
-}
diff --git a/ToggleGen/Tests/Resources/TestDatasourceWithDuplicateVariables.json b/ToggleGen/Tests/Resources/TestDatasourceWithDuplicateVariables.json
deleted file mode 100644
index 8b7008a..0000000
--- a/ToggleGen/Tests/Resources/TestDatasourceWithDuplicateVariables.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "toggles": [
- {
- "variable": "boolean_toggle",
- "bool": true
- },
- {
- "variable": "integer_toggle",
- "int": 42
- },
- {
- "variable": "numeric_toggle",
- "number": 3.1416
- },
- {
- "variable": "string_toggle",
- "string": "Hello World"
- },
- {
- "variable": "boolean_toggle",
- "bool": false
- }
- ]
-}
diff --git a/ToggleGen/Tests/Resources/TestToggleAccessor_internal.txt b/ToggleGen/Tests/Resources/TestToggleAccessor_internal.txt
deleted file mode 100644
index 74a436f..0000000
--- a/ToggleGen/Tests/Resources/TestToggleAccessor_internal.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-// TestToggleAccessor.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-internal class TestToggleAccessor {
-
- private(set) var manager: ToggleManager
-
- internal init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension TestToggleAccessor {
-
- internal var booleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle) }
- }
-
- internal var integerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle) }
- }
-
- internal var numericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle) }
- }
-
- internal var stringToggle: String {
- get { manager.value(for: TestVariables.stringToggle).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle) }
- }
-
- internal var encryptedToggle: String {
- get { manager.value(for: TestVariables.encryptedToggle).secureValue! }
- set { manager.set(.secure(newValue), for: TestVariables.encryptedToggle) }
- }
-
- internal var userDefinedBooleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle2).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle2) }
- }
-
- internal var userDefinedIntegerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle2).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle2) }
- }
-
- internal var userDefinedNumericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle2).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle2) }
- }
-
- internal var userDefinedStringToggle: String {
- get { manager.value(for: TestVariables.stringToggle2).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle2) }
- }
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestToggleAccessor_nil.txt b/ToggleGen/Tests/Resources/TestToggleAccessor_nil.txt
deleted file mode 100644
index 1bbcda4..0000000
--- a/ToggleGen/Tests/Resources/TestToggleAccessor_nil.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-// TestToggleAccessor.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-class TestToggleAccessor {
-
- private(set) var manager: ToggleManager
-
- init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension TestToggleAccessor {
-
- var booleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle) }
- }
-
- var integerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle) }
- }
-
- var numericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle) }
- }
-
- var stringToggle: String {
- get { manager.value(for: TestVariables.stringToggle).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle) }
- }
-
- var encryptedToggle: String {
- get { manager.value(for: TestVariables.encryptedToggle).secureValue! }
- set { manager.set(.secure(newValue), for: TestVariables.encryptedToggle) }
- }
-
- var userDefinedBooleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle2).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle2) }
- }
-
- var userDefinedIntegerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle2).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle2) }
- }
-
- var userDefinedNumericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle2).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle2) }
- }
-
- var userDefinedStringToggle: String {
- get { manager.value(for: TestVariables.stringToggle2).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle2) }
- }
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestToggleAccessor_open.txt b/ToggleGen/Tests/Resources/TestToggleAccessor_open.txt
deleted file mode 100644
index 278b27e..0000000
--- a/ToggleGen/Tests/Resources/TestToggleAccessor_open.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-// TestToggleAccessor.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-open class TestToggleAccessor {
-
- private(set) var manager: ToggleManager
-
- open init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension TestToggleAccessor {
-
- open var booleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle) }
- }
-
- open var integerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle) }
- }
-
- open var numericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle) }
- }
-
- open var stringToggle: String {
- get { manager.value(for: TestVariables.stringToggle).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle) }
- }
-
- open var encryptedToggle: String {
- get { manager.value(for: TestVariables.encryptedToggle).secureValue! }
- set { manager.set(.secure(newValue), for: TestVariables.encryptedToggle) }
- }
-
- open var userDefinedBooleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle2).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle2) }
- }
-
- open var userDefinedIntegerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle2).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle2) }
- }
-
- open var userDefinedNumericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle2).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle2) }
- }
-
- open var userDefinedStringToggle: String {
- get { manager.value(for: TestVariables.stringToggle2).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle2) }
- }
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestToggleAccessor_package.txt b/ToggleGen/Tests/Resources/TestToggleAccessor_package.txt
deleted file mode 100644
index ccf7951..0000000
--- a/ToggleGen/Tests/Resources/TestToggleAccessor_package.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-// TestToggleAccessor.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-package class TestToggleAccessor {
-
- private(set) var manager: ToggleManager
-
- package init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension TestToggleAccessor {
-
- package var booleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle) }
- }
-
- package var integerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle) }
- }
-
- package var numericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle) }
- }
-
- package var stringToggle: String {
- get { manager.value(for: TestVariables.stringToggle).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle) }
- }
-
- package var encryptedToggle: String {
- get { manager.value(for: TestVariables.encryptedToggle).secureValue! }
- set { manager.set(.secure(newValue), for: TestVariables.encryptedToggle) }
- }
-
- package var userDefinedBooleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle2).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle2) }
- }
-
- package var userDefinedIntegerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle2).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle2) }
- }
-
- package var userDefinedNumericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle2).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle2) }
- }
-
- package var userDefinedStringToggle: String {
- get { manager.value(for: TestVariables.stringToggle2).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle2) }
- }
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestToggleAccessor_public.txt b/ToggleGen/Tests/Resources/TestToggleAccessor_public.txt
deleted file mode 100644
index 788f556..0000000
--- a/ToggleGen/Tests/Resources/TestToggleAccessor_public.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-// TestToggleAccessor.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-import Toggles
-
-public class TestToggleAccessor {
-
- private(set) var manager: ToggleManager
-
- public init(manager: ToggleManager) {
- self.manager = manager
- }
-}
-
-extension TestToggleAccessor {
-
- public var booleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle) }
- }
-
- public var integerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle) }
- }
-
- public var numericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle) }
- }
-
- public var stringToggle: String {
- get { manager.value(for: TestVariables.stringToggle).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle) }
- }
-
- public var encryptedToggle: String {
- get { manager.value(for: TestVariables.encryptedToggle).secureValue! }
- set { manager.set(.secure(newValue), for: TestVariables.encryptedToggle) }
- }
-
- public var userDefinedBooleanToggle: Bool {
- get { manager.value(for: TestVariables.booleanToggle2).boolValue! }
- set { manager.set(.bool(newValue), for: TestVariables.booleanToggle2) }
- }
-
- public var userDefinedIntegerToggle: Int {
- get { manager.value(for: TestVariables.integerToggle2).intValue! }
- set { manager.set(.int(newValue), for: TestVariables.integerToggle2) }
- }
-
- public var userDefinedNumericToggle: Double {
- get { manager.value(for: TestVariables.numericToggle2).numberValue! }
- set { manager.set(.number(newValue), for: TestVariables.numericToggle2) }
- }
-
- public var userDefinedStringToggle: String {
- get { manager.value(for: TestVariables.stringToggle2).stringValue! }
- set { manager.set(.string(newValue), for: TestVariables.stringToggle2) }
- }
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestVariables_internal.txt b/ToggleGen/Tests/Resources/TestVariables_internal.txt
deleted file mode 100644
index beebdf1..0000000
--- a/ToggleGen/Tests/Resources/TestVariables_internal.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// TestVariables.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-internal enum TestVariables {
-
- internal static let booleanToggle = "boolean_toggle"
-
- internal static let integerToggle = "integer_toggle"
-
- internal static let numericToggle = "numeric_toggle"
-
- internal static let stringToggle = "string_toggle"
-
- internal static let encryptedToggle = "encrypted_toggle"
-
- internal static let booleanToggle2 = "boolean_toggle_2"
-
- internal static let integerToggle2 = "integer_toggle_2"
-
- internal static let numericToggle2 = "numeric_toggle_2"
-
- internal static let stringToggle2 = "string_toggle_2"
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestVariables_nil.txt b/ToggleGen/Tests/Resources/TestVariables_nil.txt
deleted file mode 100644
index 89bef70..0000000
--- a/ToggleGen/Tests/Resources/TestVariables_nil.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// TestVariables.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-enum TestVariables {
-
- static let booleanToggle = "boolean_toggle"
-
- static let integerToggle = "integer_toggle"
-
- static let numericToggle = "numeric_toggle"
-
- static let stringToggle = "string_toggle"
-
- static let encryptedToggle = "encrypted_toggle"
-
- static let booleanToggle2 = "boolean_toggle_2"
-
- static let integerToggle2 = "integer_toggle_2"
-
- static let numericToggle2 = "numeric_toggle_2"
-
- static let stringToggle2 = "string_toggle_2"
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestVariables_open.txt b/ToggleGen/Tests/Resources/TestVariables_open.txt
deleted file mode 100644
index 5571d82..0000000
--- a/ToggleGen/Tests/Resources/TestVariables_open.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// TestVariables.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-open enum TestVariables {
-
- open static let booleanToggle = "boolean_toggle"
-
- open static let integerToggle = "integer_toggle"
-
- open static let numericToggle = "numeric_toggle"
-
- open static let stringToggle = "string_toggle"
-
- open static let encryptedToggle = "encrypted_toggle"
-
- open static let booleanToggle2 = "boolean_toggle_2"
-
- open static let integerToggle2 = "integer_toggle_2"
-
- open static let numericToggle2 = "numeric_toggle_2"
-
- open static let stringToggle2 = "string_toggle_2"
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestVariables_package.txt b/ToggleGen/Tests/Resources/TestVariables_package.txt
deleted file mode 100644
index 1526c21..0000000
--- a/ToggleGen/Tests/Resources/TestVariables_package.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// TestVariables.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-package enum TestVariables {
-
- package static let booleanToggle = "boolean_toggle"
-
- package static let integerToggle = "integer_toggle"
-
- package static let numericToggle = "numeric_toggle"
-
- package static let stringToggle = "string_toggle"
-
- package static let encryptedToggle = "encrypted_toggle"
-
- package static let booleanToggle2 = "boolean_toggle_2"
-
- package static let integerToggle2 = "integer_toggle_2"
-
- package static let numericToggle2 = "numeric_toggle_2"
-
- package static let stringToggle2 = "string_toggle_2"
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/TestVariables_public.txt b/ToggleGen/Tests/Resources/TestVariables_public.txt
deleted file mode 100644
index 540a2c3..0000000
--- a/ToggleGen/Tests/Resources/TestVariables_public.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// TestVariables.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-public enum TestVariables {
-
- public static let booleanToggle = "boolean_toggle"
-
- public static let integerToggle = "integer_toggle"
-
- public static let numericToggle = "numeric_toggle"
-
- public static let stringToggle = "string_toggle"
-
- public static let encryptedToggle = "encrypted_toggle"
-
- public static let booleanToggle2 = "boolean_toggle_2"
-
- public static let integerToggle2 = "integer_toggle_2"
-
- public static let numericToggle2 = "numeric_toggle_2"
-
- public static let stringToggle2 = "string_toggle_2"
-
-}
-
-// swiftlint:enable file_length
diff --git a/ToggleGen/Tests/Resources/Variables.stencil b/ToggleGen/Tests/Resources/Variables.stencil
deleted file mode 100644
index e5fe219..0000000
--- a/ToggleGen/Tests/Resources/Variables.stencil
+++ /dev/null
@@ -1,13 +0,0 @@
-// {{ enumName }}.swift
-
-// swiftlint:disable file_length
-
-import Foundation
-
-{% if accessControl %}{{ accessControl }} {% endif %}enum {{ enumName }} {
-{% for variable in variables %}
- {% if accessControl %}{{ accessControl }} {% endif %}static let {{ variable.name }} = "{{ variable.value }}"
-{% endfor %}
-}
-
-// swiftlint:enable file_length