2016-04-20 3 views
5

Недавно я узнал, что могу создавать скрипты командной строки Swift.Командная строка «Путь к запуску недоступен»

Я решил посмотреть, смогу ли я построить свой проект Xamarin, используя его.

К сожалению, я получаю следующую ошибку, и я не знаю, как ее исправить.

*** Нагрузочный приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: 'путь запуска не доступен'

Вот мой сценарий:

#!/usr/bin/env swift 

import Foundation 

print("Building Script") 

let fileManager = NSFileManager.defaultManager() 
let path = fileManager.currentDirectoryPath 

func shell(launchPath: String, arguments: [String] = []) -> NSString? { 

    let task = NSTask() 
    task.launchPath = launchPath 
    task.arguments = arguments 

    let pipe = NSPipe() 
    task.standardOutput = pipe 
    task.launch() 

    let data = pipe.fileHandleForReading.readDataToEndOfFile() 
    let output = NSString(data: data, encoding: NSUTF8StringEncoding) 

    return output 
} 

if let output = shell("/Applications/Xamarin\\ Studio.app/Contents/MacOS/mdtool", arguments: ["-v build", "\"--configuration:Beta|iPhone\"", "MyApp.iOS.sln"]) { 
    print(output) 
} 

Любые мысли?

ответ

4

Я думаю проблема в том, что вы на самом деле хотите, чтобы выполнить оболочку и он выполнит mdtool, а не непосредственно выполнять mdtool

Попробуйте прохождение «/ bin/Баш», как launchpath, а затем включить путь к mdtool как часть строки аргумента.

+0

Когда я изменил код так, чтобы он выглядел как 'shell ("/bin/bash ", аргументы: ["/Applications/Xamarin \\ Studio.app/Contents/MacOS/mdtool "," -v build "," \ "- конфигурация: Бета | iPhone \" "," MyApp.iOS.sln "])' Теперь я больше получаю исключение. Вместо этого я получаю '/ bin/bash:/Applications/Xamarin \ Studio.app/Contents/MacOS/mdtool: Нет такого файла или каталога' – mgChristopher

+0

интересно - интересно, нужно ли избегать пространства? Или, может быть, вам нужен сингл \ вместо \\? Я бы поиграл с этим или попытался создать символическую ссылку, в которой нет места? – Jason

+1

У меня есть работа! 'shell ("/bin/bash ", аргументы: [" -c "," '/ Applications/Xamarin Studio.app/Contents/MacOS/mdtool' -v build '--configuration: Beta | iPhone' MyApp.iOS. sln "])' Вы помогали неоценимо. Каков наилучший способ поделиться этим ответом? – mgChristopher

Смежные вопросы