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

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…