GSoC/GCI Archive
Google Code-in 2010 Mono Project

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