0 erstellen Ich muss eine API für die Benutzer entwickeln, die nicht mit scala vertraut sind (kein Java) aber vertraut mit Shell. Sie schreiben im Grunde Shell-Skripte innerhalb einer Scala-Klasse (ich weiß, dass ich nur externe Shell-Skripte aufrufen kann, aber komm schon! Außerdem werden wir später einige Funktionen für allgemeine Shell-Aufgaben haben).Wie man DSL in Scala für Befehlszeilen mit minimalem zusätzlichem boilerplate
Ich habe gehofft, wie etwas zu erreichen:
1 object MyCoolScript extends MyMagicTrait {
2 $ "mkdir /tmp/test"
3 $ "cd /tmp/test"
4 $ "wget some-url"
5 }
direktere Sein, wie kann ich Linien drehen 2-4 (oder eine möglicherweise weniger Kurzfassung) in Seq [Zeichenfolge], dass ich in MyMagicTrait verarbeiten konnte ?
Ich weiß über sys.process.stringToProcess aber wenn ich:
object MyCoolScript extends MyMagicTrait {
"mkdir /tmp/test" !!
"cd /tmp/test" !!
"wget some-url" !!
}
Wie kann ich das Ergebnis jeden Befehl in prägnanter Weise bekommen? Außerdem hatte ich auf eine $ xxx-Notation gehofft.
Beitrag Antworten Update:
Dank @debilski, @tenshi und @ daniel-c-sobral ich in der Lage war sehr nahe an die gewünschte Umsetzung zu kommen: https://gist.github.com/2777994
Ich mag es, wenn wir Zeilennummern im Code bekommen. Es ist so schwer, bis 5 zu zählen! Und es hält mein sed-Erlebnis immer frisch. –
Ich tat das, weil ich mich auf die Zeilen 2-4 bezog. Sehe die Verwendung für sed jetzt nicht :). –
Übrigens, verwenden Sie nicht '$'. Sie können Code verwenden, der es verwendet, aber es ist kein gesetzlicher Code und es kann ohne Ankündigung brechen. –