Convert five tools to use Mono.Options (2)
completed by: Licker Nandor
mentors: Andreia Gaita
Background
Mono provides a lot of development tools, most of them "command-line tools" and written in C#. Almost all of them implement their own way of dealing with command-line options.
Task
The task is to migrate some (see list below) custom command-line parsing code to use the excellent Mono.Options class.
https://github.com/mono/mono/blob/master/mcs/class/Mono.Options/Mono.Options/Options.cs
Once migrated the student will verify that the tool's documentation (i.e. the man page) is complete (includes everything the tool supports) then provide a patch (diff) to update the tool(s).
- cert2spc
- httpcfg
- permview
- secutil
- mozroots
You can browse the source code of the tools from https://github.com/mono/mono/tree/master/mcs/tools/security/
note: Other tasks will be created for the remaining tools.
When you initialize OptionSet, use the localization constructor, so tools can be localized later, like:
Catalog.Init ("localization", Path.Combine (AppDomain.CurrentDomain.BaseDirectory, "locale"));
Converter<string, string> localizer = f => { return Catalog.GetString (f); };
var options = new OptionSet (localizer) { ...
Deliverable
One patch (diff file) per tool/source file (.cs and man page). The source code must follow the Mono source code guidelines (available at http://www.mono-project.com/Coding_Guidelines).
Once ready the files (or the patch) can be submitted to the mentor for review.
Hints
* In order to avoid misunderstandings you should start by a single tool and ask for a quick review before converting more of them. That will quickly tell you if you're on the right path to solve the task.
Resources
* Mono web site: http://www.mono-project.com/
* Mailing-list / discussions: mono-devel-list@lists.ximian.com
* IRC: #mono-gci on GimpNET