// // Generate.swift // // // Created by Thibaut Schmitt on 30/08/2022. // import ToolCore import Foundation import ArgumentParser struct Generate: ParsableCommand { // MARK: - CommandConfiguration static var configuration = CommandConfiguration( abstract: "A utility to generate ressources based on a configuration file", version: ResgenSwiftVersion ) // MARK: - Static static let toolName = "Generate" // MARK: - Command Options @OptionGroup var options: GenerateOptions // MARK: - Run public func run() throws { print("[\(Self.toolName)] Starting Resgen with configuration: \(options.configurationFile)") // Parse let configuration = ConfigurationFileParser.parse(options.configurationFile) print("Found configurations :") print(" - \(configuration.colors.count) colors configuration") print(" - \(configuration.fonts.count) fonts configuration") print(" - \(configuration.images.count) images configuration") print(" - \(configuration.strings.count) strings configuration") print(" - \(configuration.tags.count) tags configuration") print() print("Input file: \(configuration.colors.first?.inputFile ?? "no input file")") // Execute commands configuration.runnableConfigurations .forEach { let begin = Date() $0.run(projectDirectory: options.projectDirectory, force: options.forceGeneration) print("Took: \(Date().timeIntervalSince(begin))s\n") } print("[\(Self.toolName)] Resgen ended") } }