Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
soc:2009:lynusvaz:project_plan:start [2009/06/01 09:09] lynusvaz First attempt |
soc:2009:lynusvaz:project_plan:start [2009/08/15 08:59] (current) lynusvaz |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Project Plan ===== | ===== Project Plan ===== | ||
- | Improving the scripting language for gPXE. | + | |
+ | ==== 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: | Features: | ||
Line 10: | Line 12: | ||
If-then-else branches | If-then-else branches | ||
- | ==== Summary ==== | + | Quoting |
==== Outline ==== | ==== 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 ==== | ==== 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 |