繁体   English   中英

从 Swift 命令行工具运行 homebrew 包

[英]Run homebrew package from Swift Command Line Tool

我正在为我的应用程序使用 Swift 开发一个 macOS 命令行工具目标。 有了这个目标,我想执行一个 Kotlin 命令(随自制软件安装)。

这是 Kotlin 命令:

kotlinc -script ./kotlin_file.kts

当我从终端启动这个 Kotlin 命令时,完全没有问题。

但是当我从 Xcode 运行命令行目标时,我得到一个错误(不同的错误取决于使用的方法,参见下面)。

我尝试了多种方法:

方法一

let test = execute1("kotlinc",
                    args: ["-script", "./kotlin_file.kts")
    private func execute1(command: String, args: [String] = []) -> String {
        let proc = Process()
        proc.launchPath = command
        proc.arguments = args

        let pipe = Pipe()
        proc.standardOutput = pipe

        proc.launch()

        let data = pipe.fileHandleForReading.readDataToEndOfFile()
        return String(data: data, encoding: String.Encoding.utf8)!
    }

错误 :

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'launch path not accessible'

方法二

let test = execute2("kotlinc",
                    args: ["-script", "./kotlin_file.kts")
    private func execute2(_ path: String, args: [String] = []) {
        let process = Process()
        process.executableURL = URL(fileURLWithPath: path)
        process.arguments = args

        let outputPipe = Pipe()
        process.standardOutput = outputPipe

        try? process.run()

        let output = outputPipe.fileHandleForReading.readDataToEndOfFile()
        let str = String(decoding: output, as: UTF8.self)
        print(str)
    }

Method 2中,它停留在readDataToEndOfFile

方法三

我已将 Kotlin 命令放入script.sh文件并从目标执行此 shell 文件,但出现此错误:

kotlinc: command not found

有可能实现这一目标吗?

所以我找到了多种解决方案:

解决方案 1:将 $PATH 添加到环境变量

编辑方案 > 参数 > 环境变量:添加PATH并将其值设置为${PATH}

解决方案 2:将 Homebrew 路径添加到 env 变量

编辑方案 > 参数 > 环境变量:添加PATH并将其值设置为PATH=${PATH}:/opt/homebrew/bin:/opt/homebrew/sbin

解决方案 2:在终端中启动

编辑方案 > 选项:将Console设置为Use Terminal 但是我发现这个选项非常有随机错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM