Necesito desarrollar una API para usuarios que no estén familiarizados con Scala (ni Java) pero que estén familiarizados con Shell. Básicamente, escribirán scripts de shell dentro de una clase scala (sé que podría simplemente llamar a scripts de shell externos, pero vamos! Además, más adelante tendremos algunas funciones para tareas de shell comunes).Cómo crear DSL en Scala para líneas de comando con un número mínimo de texto adicional
Tenía la esperanza de lograr algo como:
1 object MyCoolScript extends MyMagicTrait {
2 $ "mkdir /tmp/test"
3 $ "cd /tmp/test"
4 $ "wget some-url"
5 }
ser más directo, ¿cómo puedo convertir líneas 2-4 (o una versión concisa posiblemente menos) en Seq [String] que podía procesar en MyMagicTrait ?
que sé sobre sys.process.stringToProcess pero si tengo:
object MyCoolScript extends MyMagicTrait {
"mkdir /tmp/test" !!
"cd /tmp/test" !!
"wget some-url" !!
}
¿Cómo puedo obtener el resultado de cada comando de una manera concisa? también, esperaba una notación $ "xxx".
mensaje Respuestas Actualización:
Gracias a @debilski, y @tenshi @ Daniel-c-sobral yo era capaz de llegar a una relación muy estrecha con la aplicación deseada: https://gist.github.com/2777994
Me gusta cuando recibimos números de línea en el código. ¡Es tan difícil contar hasta 5! Y mantiene mi experiencia sed siempre fresca. –
Lo hice porque me refería a las líneas 2-4. No veo el uso de sed ahora :). –
Por cierto, NO USE '$'. Puede escribir código usándolo, pero no es un código legal, y puede romperse sin previo aviso. –