2012-07-20 13 views
15

Vorrei chiamare lo sbt update all'interno del mio codice sorgente per aggiornare più progetti SBT. Nella shell questo è facile:Impostazione della directory di lavoro corrente durante l'esecuzione di un processo shell

cd /path/to/project && sbt update 

Ma se io uso scala.sys.process all'interno del mio codice, non si ricorderà la cd quindi sbt è chiamato nella directory sbagliata. Codice come questo:

import scala.sys.process._ 
("cd /path/to/project" #&& "sbt update").!! 

E non ho trovato nella documentazione alcuna possibilità di impostare il percorso del progetto di sbt tramite console. Sarebbe bello se qualcosa del genere funzionasse:

"sbt -projectPath /path/to/project update".!! 

Se qualcosa del genere è possibile, questo mi farebbe risparmiare un sacco di confusione! (Soprattutto che funziona su UNIX e Windows.)

+2

Puoi provare ad usare Process (cmd, cwd) !! per impostare esplicitamente la directory di lavoro. – venechka

+0

Il titolo di questa domanda è incredibilmente fuorviante. La domanda non ha nulla a che fare con sbt, potrebbe essere stato qualsiasi altro programma. –

risposta

32

Utilizzare uno dei metodi di fabbrica ProcessBuilder sull'oggetto Process:

sys.process.Process(Seq("sbt","update"), new java.io.File("/path/to/project")).!! 

Per ulteriore documentazione, vedere la scaladoc file for the sys.process package. Sfortunatamente, non menziona gli argomenti della "directory di lavoro corrente", ma si trovano nella documentazione dell'oggetto Process.

+0

Ho usato la versione "java" con 'java.lang.ProcessBuilder' ed è il metodo' directory', ma questo è più elegante, più simile a scala. Grazie per quello! – Themerius

+0

Grazie, mi ha aiutato :) – Vinay

Problemi correlati