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: Documentation

Aug 2: Autoboot script and other testing

Aug 10: Leeway


Navigation

* [[:start|Home]] * [[:about|About our Project]] * [[:download|Download]] * [[:screenshots|Screenshots]] * Documentation * [[:howtos|HowTo Guides]] * [[:appnotes|Application Notes]] * [[:faq:|FAQs]] * [[:doc|General Doc]] * [[:talks|Videos, Talks, and Papers]] * [[:hardwareissues|Hardware Issues]] * [[:mailinglists|Mailing lists]] * [[http://support.etherboot.org/|Bugtracker]] * [[:contributing|Contributing]] * [[:editing_permission|Wiki Edit Permission]] * [[:wiki:syntax|Wiki Syntax]] * [[:contact|Contact]] * [[:relatedlinks|Related Links]] * [[:commerciallinks|Commercial Links]] * [[:acknowledgements|Acknowledgements]] * [[:logos|Logo Art]]

QR Code
QR Code soc:2009:lynusvaz:project_plan:start (generated for current page)