2015-05-21 13 views
8

Sto lavorando con Ionic che ha un'interfaccia a riga di comando. Vorrei creare una piccola app per Mac che aiuti a eseguire determinati comandi.Utilizzo di NSTask per eseguire comandi di generazione ionica - percorso di avvio non accessibile

Nel terminale I cd Users/me/Desktop/Repos/ionic-project/myApp Dopo aver cambiato, ad es. ionic run

NSTask *task = [[NSTask alloc]init]; 

task.launchPath = @"/bin/bash"; 
task.currentDirectoryPath = @"cd Users/me/Desktop/Repos/ionic-tryouts/myApp"; 
task.arguments = @[@"ionic run"]; 

[task launch]; 

Ma questo mi da 'la directory di lavoro non esiste.' Ho già letto alcuni thread qui su SO. Qual è il mio errore?


EDIT:

Grazie Christik per la risposta dettagliata. Ora ho questo codice:

NSTask *task = [[NSTask alloc]init]; 
task.launchPath = @"/usr/local/bin/ionic"; 
task.currentDirectoryPath = @"/Users/me/ionic-tryouts/myApp"; 
task.arguments = @[@"run"]; 

[task launch]; 

Ora ottengo il seguente errore: env: nodo: No such file or directory. Immagino che questo provenga da un problema, che node.js non sia stato trovato (ionic è costruito sulla parte superiore del nodo). Ho trovato il problema this - un link simbolico mancante con il nome giusto potrebbe essere la causa. Ma l'impostazione del link simbolico per il nodo non ha aiutato. Qualche idea?


EDIT2: ho dato Christik la risposta corretta, anche se non ho potuto finalmente a farlo funzionare. Sono ancora investigatore Forse è l'installazione del nodo che è sbagliato.


Edit3: Ho visto alcuni post che dicono che potrebbe essere migliore, se il nodo è stato ri-installato da homebrew dal homebrew installa senza sudo. Breve commento: non ha aiutato

risposta

3

Se si desidera utilizzare bash per lanciare ionic, il comando equivalente che è necessario eseguire è /bin/bash -c ionic run, quindi è necessario modificare la seguente:

  1. rimuovere il leader cd da currentDirectoryPath (che probabilmente è un errore di battitura da una copia + incolla da terminale) e aggiungere uno dei principali / di avere un percorso assoluto
  2. cambiamento arguments a @[@"-c",@"ionic",@"run"], come ogni argomento per NSTask dovrebbe rappresentare un elemento dell'array.

Se avete problemi con /usr/bin/bash a causa di alcuni altri strumenti non vengono trovati, si può provare a utilizzare /bin/sh.

Aggiornamento Come Aditya Vaidyam rilevare here potrebbe anche essere necessario per impostare le variabili di ambiente (in particolare la PATH uno), per simulare le stesse condizioni per il terminale. Se si desidera scoprire quali variabili di ambiente sono impostate, eseguire semplicemente il comando env.

+0

Grazie per la risposta, ma come descritto sopra ho ancora problemi.Prenderò una taglia ;-) – brainray

+0

@brainray: l'elenco di argomenti '@ [@" - c ", @" ionic "," run "]' era per l'eseguibile @ "/ bin/sh". Per ionico è necessario passare solo '@ [@" eseguire "]', scusate se non ero chiaro a riguardo. – Cristik

+0

Grazie per l'attenzione :-) Ma anche con solo '@ [@" esegui "]' come argomento fornirà 'env: node: No such file or directory'. Immagino che abbia qualcosa da fare con l'installazione ionica – brainray

3

Oltre a ciò che Cristik ha suggerito, è necessario aggiungere allo environment variables (cioè PATH), la posizione di node.js, a meno che non sia già in/usr/bin/o così.