Bugs fixes, Lint fixes, Refactoring
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit

This commit is contained in:
2022-08-29 13:38:46 +02:00
parent e3f90e0d48
commit a54a264447
35 changed files with 652 additions and 401 deletions

View File

@ -10,22 +10,35 @@ import ToolCore
import ArgumentParser
struct Twine: ParsableCommand {
static var configuration = CommandConfiguration(abstract: "Generate strings with twine.")
// MARK: - Command Configuration
static var configuration = CommandConfiguration(
abstract: "Generate strings with twine.",
version: "0.1.0"
)
// MARK: - Static
static let toolName = "Twine"
static let defaultExtensionName = "String"
static let twineExecutable = "\(FileManager.default.homeDirectoryForCurrentUser.relativePath)/scripts/twine/twine"
var langs: [String] { options.langsRaw.split(separator: " ").map { String($0) } }
// MARK: - Properties
var inputFilenameWithoutExt: String { URL(fileURLWithPath: options.inputFile)
.deletingPathExtension()
.lastPathComponent
}
// MARK: - Command Options
// The `@OptionGroup` attribute includes the flags, options, and
// arguments defined by another `ParsableArguments` type.
@OptionGroup var options: TwineOptions
// MARK: - Run
mutating func run() {
print("[\(Self.toolName)] Starting strings generation")
@ -35,7 +48,7 @@ struct Twine: ParsableCommand {
print("[\(Self.toolName)] Will generate strings")
// Generate strings files (lproj files)
for lang in langs {
for lang in options.langs {
Shell.shell(Self.twineExecutable,
"generate-localization-file", options.inputFile,
"--lang", "\(lang)",
@ -68,13 +81,13 @@ struct Twine: ParsableCommand {
}
// Langs
guard langs.isEmpty == false else {
guard options.langs.isEmpty == false else {
let error = TwineError.langsListEmpty
print(error.localizedDescription)
Twine.exit(withError: error)
}
guard langs.contains(options.defaultLang) else {
guard options.langs.contains(options.defaultLang) else {
let error = TwineError.defaultLangsNotInLangs
print(error.localizedDescription)
Twine.exit(withError: error)

View File

@ -19,7 +19,7 @@ struct TwineOptions: ParsableArguments {
var outputPath: String
@Option(name: .customLong("langs"), help: "Langs to generate.")
var langsRaw: String
fileprivate var langsRaw: String
@Option(help: "Default langs.")
var defaultLang: String
@ -27,3 +27,11 @@ struct TwineOptions: ParsableArguments {
@Option(help: "Path where to generate the extension.", transform: { $0.replaceTiltWithHomeDirectoryPath() })
var extensionOutputPath: String
}
extension TwineOptions {
var langs: [String] {
langsRaw
.split(separator: " ")
.map { String($0) }
}
}