Unix Pipelining,Powershell Pipelining,C# LINQ,Java Stream APIって似た概念だな、相互運用できたらいいなと考えによりできた PipeLiningとJava StreamAPIを連携させるライブラリ(Java→pipelining)です
Java/他Java環境スクリプト用シェルコマンド実行StreamAPIライブラリ(マルチスレッド対応)です
JavaからShellで実行したコマンドの実行結果をStreamオブジェクトとして受け取るライブラリです
主にパイプライニングでデータ加工を行うようなコマンドの実行結果をJavaでシームレスに受け取ったり、
そのコマンドをJavaのStreamAPIで置き換えたりする場合に使います。
sbtがインストールされていること
//Scalaインタプリタで実行した場合
//事前準備
scala -cp .\target\scala-2.11\ShellTools-assembly-1.0.jar
import java.util.function.Consumer
implicit def funcToConsumer( func : String => Unit ) = new Consumer[String](){ def accept(s: String) = func(s) }
val funcPrintln: Consumer[String] = (st:String) => println(st)
//ProcessStream
import jp.co.stofu.ShellTools.ProcessStream
ProcessStream.create("cmd","/c","dir","c:\").forEach(funcPrintln)
//ShellStream
import jp.co.stofu.ShellTools.ShellStream
ShellStream.create("dir c:\").forEach(funcPrintln)
//PowershellStream
import jp.co.stofu.ShellTools.PowerShellStream
PowerShellStream.create("Get-EventLog -LogName security -Newest 10").forEach(funcPrintln)
git clone https://github.com/stofu1234/ShellTools.git
cd ShellTools
mkdir out
sbt compile test:compile assembly