GSoC/GCI Archive
Google Code-in 2010 Mono Project

Convert five tools to use Mono.Options (2)

completed by: Licker Nandor

mentors: Andreia Gaita


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.



The task is to migrate some (see list below) custom command-line parsing code to use the excellent Mono.Options class.

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

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) { ...



One patch (diff file) per tool/source file (.cs and man page). The source code must follow the Mono source code guidelines (available at

Once ready the files (or the patch) can be submitted to the mentor for review.



* 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.



* Mono web site:

* Mailing-list / discussions:

* IRC: #mono-gci on GimpNET