52 lines
1.4 KiB
Swift
52 lines
1.4 KiB
Swift
import Foundation
|
|
import PackagePlugin
|
|
|
|
@main
|
|
struct GitVersionBuildPlugin: BuildToolPlugin {
|
|
|
|
func createBuildCommands(
|
|
context: PackagePlugin.PluginContext,
|
|
target: PackagePlugin.Target
|
|
) async throws -> [PackagePlugin.Command] {
|
|
|
|
guard let target = target as? SourceModuleTarget else { return [] }
|
|
let buildTool = try context.tool(named: "git-version-builder")
|
|
|
|
let outputDir = context.pluginWorkDirectory
|
|
.appending(subpath: target.name)
|
|
|
|
try FileManager.default
|
|
.createDirectory(atPath: outputDir.string, withIntermediateDirectories: true)
|
|
|
|
let inputFiles = target.sourceFiles
|
|
.filter({ $0.type == .source && $0.path.stem == "Version" })
|
|
.map(\.path)
|
|
|
|
guard inputFiles.count == 1 else { return [] }
|
|
|
|
let outputFile = outputDir.appending(subpath: "Version.generated.swift")
|
|
|
|
print("Input swift files: \(inputFiles)")
|
|
|
|
// let originalContents = try String(contentsOfFile: inputFiles.first!.string)
|
|
// let updatedContents = originalContents.replacingOccurrences(of: "nil", with: "\"0.1.123\"")
|
|
//
|
|
// print("Updated contents")
|
|
// print(updatedContents)
|
|
|
|
// this fails.
|
|
return [
|
|
.buildCommand(
|
|
displayName: "Git Version Build Plugin",
|
|
executable: buildTool.path,
|
|
arguments: [
|
|
inputFiles.first!,
|
|
outputFile.string
|
|
]
|
|
// ,
|
|
// outputFiles: [outputFile]
|
|
)
|
|
]
|
|
}
|
|
}
|