diff --git a/ownlang-desktop/src/main/java/com/annimon/ownlang/Main.java b/ownlang-desktop/src/main/java/com/annimon/ownlang/Main.java index 86efaf4..df1756e 100644 --- a/ownlang-desktop/src/main/java/com/annimon/ownlang/Main.java +++ b/ownlang-desktop/src/main/java/com/annimon/ownlang/Main.java @@ -94,6 +94,17 @@ public final class Main { Sandbox.main(createOwnLangArgs(args, i + 1)); return; + case "run": + final String scriptName; + if (i + 1 < args.length) { + scriptName = args[i + 1]; + createOwnLangArgs(args, i + 2); + } else { + scriptName = "listScripts"; + } + run(RunOptions.script(scriptName)); + return; + default: if (options.programSource == null) { options.programSource = args[i]; @@ -124,6 +135,7 @@ public final class Main { -a, --showast Show AST of program -t, --showtokens Show lexical tokens -m, --showtime Show elapsed time of parsing and execution + ownlang run """); } diff --git a/ownlang-desktop/src/main/java/com/annimon/ownlang/RunOptions.java b/ownlang-desktop/src/main/java/com/annimon/ownlang/RunOptions.java index 2a81c4e..daf8381 100644 --- a/ownlang-desktop/src/main/java/com/annimon/ownlang/RunOptions.java +++ b/ownlang-desktop/src/main/java/com/annimon/ownlang/RunOptions.java @@ -6,6 +6,7 @@ import static com.annimon.ownlang.util.input.InputSourceDetector.RESOURCE_PREFIX public class RunOptions { private static final String DEFAULT_PROGRAM = "program.own"; + private static final String RES_SCRIPTS = "/scripts/"; // input String programPath; @@ -21,6 +22,13 @@ public class RunOptions { private final InputSourceDetector inputSourceDetector = new InputSourceDetector(); + static RunOptions script(String name) { + final var options = new RunOptions(); + options.programPath = InputSourceDetector.RESOURCE_PREFIX + + RES_SCRIPTS + name.toLowerCase() + ".own"; + return options; + } + boolean linterEnabled() { return lintMode != null && lintMode != LinterStage.Mode.NONE; } diff --git a/ownlang-desktop/src/main/resources/scripts/listscripts.own b/ownlang-desktop/src/main/resources/scripts/listscripts.own new file mode 100644 index 0000000..31fd04d --- /dev/null +++ b/ownlang-desktop/src/main/resources/scripts/listscripts.own @@ -0,0 +1,6 @@ +println "Available scripts: + checkUpdate - checks updates on GitHub + +To run a script use command: + ownlang run checkUpdate +" \ No newline at end of file