package istlab.KisoJikken;
import java.io.File;
import java.io.IOException;
import javax.swing.JButton;
public class ScriptRunner implements Runnable {
String scriptfile;
Thread thread;
Process process;
JButton runB;
public ScriptRunner(String shfile, JButton rB) {
scriptfile = shfile;
runB = rB;
}
public void startstop() {
if (thread == null) {
thread = new Thread(this);
thread.start();
runB.setText("Stop");
} else {
process.destroyForcibly();
thread = null;
runB.setText("Run");
}
}
@Override
public void run() {
// Run script
// System.out.println(scriptfile);
ProcessBuilder processBuilder = new ProcessBuilder("bash", scriptfile);
// ProcessBuilder processBuilder = new ProcessBuilder("pwd");
processBuilder.directory(new File(App.userhome + App.nwpsrc));
// processBuilder.inheritIO();
JTAConsole con = new JTAConsole("(Exec) " + scriptfile);
con.setMainSrcByFileName(scriptfile);
con.Systemoutprintln("== 実行開始 ==");
con.Systemoutprintln("> cd ~" + App.nwpsrc);
con.Systemoutprintln("> "+scriptfile);
try {
process = processBuilder.start();
Launcher.allProcs.add(process);
con.startBR(process);
// BufferedReader reader = new BufferedReader(new
// InputStreamReader(process.getInputStream()));
// String line;
// while ((line = reader.readLine()) != null) {
// jta.append(line);
// }
process.waitFor();
} catch (IOException | InterruptedException e1) {
e1.printStackTrace();
}
con.Systemoutprintln("== 終了 == (ALT+Wで閉じる)");
thread = null;
runB.setText("Run");
}
}