import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class ScriptBootstrapper {
private static final String DEFAULT_SCRIPT_DIR = "scripts"; // Default directory for scripts
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String scriptDir = DEFAULT_SCRIPT_DIR;
if (args.length > 0) {
scriptDir = args[0];
}
List<String> scripts = loadScripts(scriptDir);
if (scripts.isEmpty()) {
System.out.println("No scripts found in " + scriptDir + ". Exiting.");
scanner.close();
return;
}
System.out.println("Available scripts:");
for (int i = 0; i < scripts.size(); i++) {
System.out.println((i + 1) + ". " + scripts.get(i));
}
System.out.print("Enter script number to run (or 'exit' to quit): ");
String scriptChoice = scanner.nextLine();
if ("exit".equalsIgnoreCase(scriptChoice)) {
System.out.println("Exiting...");
} else {
try {
int scriptIndex = Integer.parseInt(scriptChoice) - 1;
if (scriptIndex >= 0 && scriptIndex < scripts.size()) {
runScript(scripts.get(scriptIndex));
} else {
System.out.println("Invalid script number. Exiting.");
}
} catch (NumberFormatException e) {
System.out.println("Invalid input. Exiting.");
}
}
scanner.close();
}
private static List<String> loadScripts(String scriptDir) {
List<String> scripts = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(scriptDir))) {
String line;
while ((line = reader.readLine()) != null) {
if (line.trim().length() > 0) {
scripts.add(line.trim());
}
}
} catch (IOException e) {
System.err.println("Error reading script directory: " + e.getMessage());
}
return scripts;
}
private static void runScript(String scriptName) {
System.out.println("Running script: " + scriptName);
try {
// Execute the script using a separate process
Process process = Runtime.getRuntime().exec("bash " + scriptName);
int exitCode = process.waitFor();
System.out.println("Script " + scriptName + " completed with exit code: " + exitCode);
} catch (IOException | InterruptedException e) {
System.err.println("Error running script: " + e.getMessage());
}
}
}
Add your comment