2016-04-20 37 views
5

Recentemente ho scoperto che posso creare script da riga di comando Swift.Riga di comando "percorso di avvio non accessibile"

Ho deciso di vedere se potevo costruire il mio progetto Xamarin usandolo.

Purtroppo sto ricevendo il seguente errore e non so come risolverlo.

*** Chiusura di applicazione a causa di eccezione non identificata 'NSInvalidArgumentException', la ragione: 'percorso di lancio non accessibile'

Ecco il mio script:

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

Qualche idea?

risposta

4

ho che il problema è che si vuole realmente eseguire la shell e lo hanno eseguire il mdtool, piuttosto che direttamente eseguire mdtool

Prova a passare "/ bin/bash" come launchpath, e quindi includere il percorso di mdtool come parte della stringa argomento.

+0

Quando ho modificato il codice in modo che assomigli a 'shell ("/bin/bash ", argomenti: ["/Applicazioni/Xamarin \\ Studio.app/Contents/MacOS/mdtool "," -v build "," \ "- configuration: Beta | iPhone \" "," MyApp.iOS.sln "])' Ora ottengo più l'eccezione. Invece ho '/ bin/bash:/Applicazioni/Xamarin \ Studio.app/Contents/MacOS/mdtool: Nessun file o directory' – mgChristopher

+0

interessante - Mi chiedo se la fuga dallo spazio sia necessaria? O forse hai bisogno di un singolo \ invece di \\? Vorrei giocare con quello, o provare a creare un link simbolico che non ha lo spazio in esso? – Jason

+1

Ce l'ho fatta! 'shell ("/bin/bash ", argomenti: [" -c "," '/ Applicazioni/Xamarin Studio.app/Contents/MacOS/mdtool' -v build '--configuration: Beta | iPhone' MyApp.iOS. sln "])" Il tuo aiuto è stato inestimabile. Qual è il modo migliore per condividere la risposta su questo? – mgChristopher