2012-07-20 10 views
15

Me gustaría llamar al sbt update dentro de mi código fuente, para actualizar varios proyectos de sbt. En el shell de esto es fácil:Establecimiento del directorio de trabajo actual al ejecutar un proceso de shell

cd /path/to/project && sbt update 

Pero si uso scala.sys.process dentro de mi código, no va a recordar el cd lo tanto sbt se llama en el directorio incorrecto. Código como este:

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

Y no encontré en la documentación ninguna posibilidad de establecer la ruta del proyecto de sbt a través de la consola. Sería bueno si algo como esto funciona:

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

Si algo así es posible, ¡esto me ahorraría mucho lío! (Sobre todo que se ejecuta en UNIX y Windows.)

+2

Puede intentar usar Process (cmd, cwd) !! para establecer explícitamente el directorio de trabajo. – venechka

+0

El título de esta pregunta es increíblemente engañoso. La pregunta no tiene nada que ver con sbt, podría haber sido cualquier otro programa. –

Respuesta

32

Utilice uno de los métodos de fábrica ProcessBuilder en el objeto Process:

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

Para obtener más documentación, ver la scaladoc file for the sys.process package. Lamentablemente, no menciona los argumentos del 'directorio de trabajo actual', pero se encuentran en la documentación del objeto Process.

+0

He usado la versión "java" con 'java.lang.ProcessBuilder' y su método' directory', pero esto es más elegante, más parecido a una scala. ¡Gracias por eso! – Themerius

+0

Gracias, ayudó :) – Vinay

Cuestiones relacionadas