30 lines
872 B
Swift
30 lines
872 B
Swift
import Foundation
|
|
import PackagePlugin
|
|
|
|
@main
|
|
struct GenerateVersionPlugin: CommandPlugin {
|
|
|
|
func performCommand(context: PluginContext, arguments: [String]) async throws {
|
|
let gitVersion = try context.tool(named: "cli-version")
|
|
|
|
let arguments = ["generate"] + arguments
|
|
|
|
for target in context.package.targets {
|
|
guard let target = target as? SourceModuleTarget,
|
|
arguments.first(where: { $0.contains(target.name) }) != nil
|
|
else { continue }
|
|
|
|
let process = Process()
|
|
process.executableURL = gitVersion.url
|
|
process.arguments = arguments
|
|
try process.run()
|
|
process.waitUntilExit()
|
|
|
|
guard process.terminationReason == .exit && process.terminationStatus == 0 else {
|
|
Diagnostics.error("Reason: \(process.terminationReason), status: \(process.terminationStatus)")
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|