Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
soc:2009:lynusvaz:project_plan:start [2009/05/17 07:52] 127.0.0.1 external edit |
soc:2009:lynusvaz:project_plan:start [2009/08/15 08:59] (current) lynusvaz |
||
---|---|---|---|
Line 4: | Line 4: | ||
==== Summary ==== | ==== 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 ==== | ==== 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 |