====== Lynus Vaz: Enhanced scripting language ====== ===== Project Plan ===== ==== Summary ==== gPXE currently features a limited capability command language. A more powerful scripting language would be useful to users: they can specify boot policies or other customizations as a script, without having to understand gPXE completely, or having to edit the code. Features: Evaluating arithmetic/boolean expressions If-then-else branches Quoting ==== Outline ==== * These changes need an arithmetic evaluator, to accept expressions. * Define if, then, else commands. I am thinking of something like: if [ expr ] statements else statements fi I think this would be the simplest to deal with. * Define a goto command, or alternatively for, and while commands * A simple syntax to handle expression expansion: something like the current ${} for variables. * Also, handling variables in these expressions, especially string variables * I also think we need to have some operators like: check if interface exists (maybe (--i net1)?) * Quoting * Command exit code * Documentation * Testing ==== Milestones and Timeline ==== Current work: I currently have code to evaluate arithmetic expressions, involving integers only (variable substitution is done before it is called). The usual C operators are supported (no variables, so no assignment), with their usual precedence and associativity. June 8: Finalize syntax issues: dealing with string variables, use ${} for arithmetic expressions as well or define another delimiter, syntax for if, and loops. June 14: Implementation of arithmetic parser as decided. June 21: Dealing with quoting June 28: Conditional branches July 12: Loops and goto July 23: Return code July 26: [[..:notes:scripting_doc:Features added|Documentation]] Aug 2: Autoboot script and other testing Aug 10: Leeway