1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Scanner;
  9. public class ScriptBootstrapper {
  10. private static final String DEFAULT_SCRIPT_DIR = "scripts"; // Default directory for scripts
  11. public static void main(String[] args) {
  12. Scanner scanner = new Scanner(System.in);
  13. String scriptDir = DEFAULT_SCRIPT_DIR;
  14. if (args.length > 0) {
  15. scriptDir = args[0];
  16. }
  17. List<String> scripts = loadScripts(scriptDir);
  18. if (scripts.isEmpty()) {
  19. System.out.println("No scripts found in " + scriptDir + ". Exiting.");
  20. scanner.close();
  21. return;
  22. }
  23. System.out.println("Available scripts:");
  24. for (int i = 0; i < scripts.size(); i++) {
  25. System.out.println((i + 1) + ". " + scripts.get(i));
  26. }
  27. System.out.print("Enter script number to run (or 'exit' to quit): ");
  28. String scriptChoice = scanner.nextLine();
  29. if ("exit".equalsIgnoreCase(scriptChoice)) {
  30. System.out.println("Exiting...");
  31. } else {
  32. try {
  33. int scriptIndex = Integer.parseInt(scriptChoice) - 1;
  34. if (scriptIndex >= 0 && scriptIndex < scripts.size()) {
  35. runScript(scripts.get(scriptIndex));
  36. } else {
  37. System.out.println("Invalid script number. Exiting.");
  38. }
  39. } catch (NumberFormatException e) {
  40. System.out.println("Invalid input. Exiting.");
  41. }
  42. }
  43. scanner.close();
  44. }
  45. private static List<String> loadScripts(String scriptDir) {
  46. List<String> scripts = new ArrayList<>();
  47. try (BufferedReader reader = new BufferedReader(new FileReader(scriptDir))) {
  48. String line;
  49. while ((line = reader.readLine()) != null) {
  50. if (line.trim().length() > 0) {
  51. scripts.add(line.trim());
  52. }
  53. }
  54. } catch (IOException e) {
  55. System.err.println("Error reading script directory: " + e.getMessage());
  56. }
  57. return scripts;
  58. }
  59. private static void runScript(String scriptName) {
  60. System.out.println("Running script: " + scriptName);
  61. try {
  62. // Execute the script using a separate process
  63. Process process = Runtime.getRuntime().exec("bash " + scriptName);
  64. int exitCode = process.waitFor();
  65. System.out.println("Script " + scriptName + " completed with exit code: " + exitCode);
  66. } catch (IOException | InterruptedException e) {
  67. System.err.println("Error running script: " + e.getMessage());
  68. }
  69. }
  70. }

Add your comment