Files
swift-bump-version/Plugins/GitVersionBuildPlugin/GitVersionBuildPlugin.swift
2023-03-13 17:17:12 -04:00

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]
)
]
}
}