[英]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
有可能实现这一目标吗?
所以我找到了多种解决方案:
编辑方案 > 参数 > 环境变量:添加PATH
并将其值设置为${PATH}
编辑方案 > 参数 > 环境变量:添加PATH
并将其值设置为PATH=${PATH}:/opt/homebrew/bin:/opt/homebrew/sbin
编辑方案 > 选项:将Console
设置为Use Terminal
。 但是我发现这个选项非常有随机错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.