INNER CODE UNIT · Swift
createTranspileBuildCommands
skiptools/skip · Plugins/SkipPlugin/SkipPlugin.swift:76
func createTranspileBuildCommands(context: PluginContext, target: SourceModuleTarget) async throws -> [Command] {
//Diagnostics.remark("Skip transpile target: \(target.name)")
// we need to know the names of peer target folders in order to set up dependency links, so we need to determine the output folder structure
// output named vary dependeding on whether we are running from Xcode/xcodebuild and SwiftPM, and also changed in Swift 6:
// xcode: DERIVED/SourcePackages/plugins/skip-unit.output/SkipUnit/skipstone/SkipUnit.skipcode.json
// SwiftPM 5: PROJECT_HOME/.build/plugins/outputs/skip-unit/SkipUnit/skipstone/SkipUnit.skipcode.json
// SwiftPM 6: PROJECT_HOME/.build/plugins/outputs/skip-unit/SkipUnit/destination/skipstone/SkipUnit.skipcode.json
let outputFolder = context.pluginWorkDirectory
let outputExt = outputFolder.removingLastComponent().removingLastComponent().extension
let pkgext = outputExt.flatMap({ "." + $0 }) ?? ""
// when run from Xcode, the plugin folder ends with ".output"; when run from CLI `swift build`, there is no output extension
let isXcodeBuild = !pkgext.isEmpty
let skip = try context.tool(named: skipPluginCommandName)
// enable overriding the path to the Skip tool for local development