Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions ToggleGen/Sources/Core/Generator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,21 @@
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 {
Expand Down
16 changes: 13 additions & 3 deletions ToggleGen/Sources/ToggleGen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,27 @@ struct ToggleGen: ParsableCommand {

@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: .public)
accessControl: variablesAccessControl)
let accessorContent = try generator.generateAccessor(accessorTemplatePath: accessorTemplatePath,
variablesEnumName: variablesEnumName,
accessorClassName: accessorClassName,
accessControl: .public)
accessControl: accessorAccessControl)
let writer = Writer()
try writer.saveAccessor(accessorContent,
outputPath: accessorOutputPath,
Expand Down