2016-04-20 15 views
5

Niedawno dowiedziałem się, że mogę tworzyć skrypty wiersza poleceń Swift.Linia poleceń "ścieżka uruchamiania niedostępna"

Postanowiłem sprawdzić, czy mogę użyć mojego projektu Xamarin.

Niestety pojawia się następujący błąd i nie wiem jak to naprawić.

*** Zakończenie aplikację spowodowane nieprzechwyconego wyjątku 'NSInvalidArgumentException', powód: 'ścieżkę uruchamiania nie jest dostępna'

Oto mój skrypt:

#!/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) 
} 

Wszelkie myśli?

Odpowiedz

4

myślę Problemem jest to, że faktycznie chce wykonać powłokę i mieć go wykonać mdtool, zamiast bezpośrednio wykonać mdtool

Spróbuj przejście „/ bin/bash” jako launchpath, a następnie m.in. ścieżka do mdtool jako część ciągu argumentów.

+0

Kiedy zmieniłem kod tak, by wyglądał jak "shell" ("/ bin/bash", argumenty: ["/ Applications/Xamarin \\ Studio.app/Contents/MacOS/mdtool", "-v build", " \ "- configuration: Beta | iPhone \" "," MyApp.iOS.sln "])' Teraz już otrzymuję wyjątek. Zamiast tego otrzymuję '/ bin/bash:/Applications/Xamarin \ Studio.app/Contents/MacOS/mdtool: Nie ma takiego interesującego katalogu lub katalogu ' – mgChristopher

+0

- Zastanawiam się, czy ucieczka z tej przestrzeni jest konieczna? A może potrzebujesz pojedynczego \ zamiast \\? Bawiłbym się z tym, lub spróbuj stworzyć dowiązanie symboliczne, które nie ma w nim miejsca? – Jason

+1

Mam to działa! 'shell ("/bin/bash ", argumenty: [" -c "," "/ Applications/Xamarin Studio.app/Contents/MacOS/mdtool" -v build "- konfiguracja: Beta | iPhone 'MyApp.iOS. sln "])' Pomagałeś był nieoceniony. Jaki jest najlepszy sposób na udzielenie odpowiedzi na to pytanie? – mgChristopher

Powiązane problemy