void CreateCommands()
{
SetupCommand cmd;
string cat = "Add-in commands";
cmd = new SetupCommand (cat, "install", "i", new SetupCommandHandler (Install));
cmd.Description = "Installs add-ins.";
cmd.Usage = "[package-name|package-file] ...";
cmd.AppendDesc ("Installs an add-in or set of addins. The command argument is a list");
cmd.AppendDesc ("of files and/or package names. If a package name is provided");
cmd.AppendDesc ("the package will be looked up in the registered repositories.");
cmd.AppendDesc ("A specific add-in version can be specified by appending it to.");
cmd.AppendDesc ("the package name using '/' as a separator, like in this example:");
cmd.AppendDesc ("MonoDevelop.SourceEditor/0.9.1");
commands.Add (cmd);
cmd = new SetupCommand (cat, "uninstall", "u", new SetupCommandHandler (Uninstall));
cmd.Description = "Uninstalls add-ins.";
cmd.Usage = "<package-name>";
cmd.AppendDesc ("Uninstalls an add-in. The command argument is the name");
cmd.AppendDesc ("of the add-in to uninstall.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "check-install", "ci", new SetupCommandHandler (CheckInstall));
cmd.Description = "Checks installed add-ins.";
cmd.Usage = "[package-name|package-file] ...";
cmd.AppendDesc ("Checks if a package is installed. If it is not, it looks for");
cmd.AppendDesc ("the package in the registered repositories, and if found");
cmd.AppendDesc ("the package is downloaded and installed, including all");
cmd.AppendDesc ("needed dependencies.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "update", "up", new SetupCommandHandler (Update));
cmd.Description = "Updates installed add-ins.";
cmd.AppendDesc ("Downloads and installs available updates for installed add-ins.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "list", "l", new SetupCommandHandler (ListInstalled));
cmd.Description = "Lists installed add-ins.";
cmd.AppendDesc ("Prints a list of all installed add-ins.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "list-av", "la", new SetupCommandHandler (ListAvailable));
cmd.Description = "Lists add-ins available in registered repositories.";
cmd.AppendDesc ("Prints a list of add-ins available to install in the");
cmd.AppendDesc ("registered repositories.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "list-update", "lu", new SetupCommandHandler (ListUpdates));
cmd.Description = "Lists available add-in updates.";
cmd.AppendDesc ("Prints a list of available add-in updates in the registered repositories.");
commands.Add (cmd);
cat = "Repository Commands";
cmd = new SetupCommand (cat, "rep-add", "ra", new SetupCommandHandler (AddRepository));
cmd.Description = "Registers repositories.";
cmd.Usage = "<url> ...";
cmd.AppendDesc ("Registers an add-in repository. Several URLs can be provided.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "rep-remove", "rr", new SetupCommandHandler (RemoveRepository));
cmd.Description = "Unregisters repositories.";
cmd.Usage = "<url or number> ...";
cmd.AppendDesc ("Unregisters an add-in repository. Several URLs can be provided.");
cmd.AppendDesc ("Instead of an url, a repository number can be used (repository numbers are");
cmd.AppendDesc ("shown by the rep-list command.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "rep-enable", "re", new SetupCommandHandler (EnableRepository));
cmd.Description = "Enables repositories.";
cmd.Usage = "<url or number> ...";
cmd.AppendDesc ("Enables an add-in repository which has been disabled. Several URLs can be");
cmd.AppendDesc ("provided. Instead of an url, a repository number can be used (repository");
cmd.AppendDesc ("numbers are shown by the rep-list command.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "rep-disable", "rd", new SetupCommandHandler (DisableRepository));
cmd.Description = "Disables repositories.";
cmd.Usage = "<url> ...";
cmd.AppendDesc ("Disables an add-in repository. Several URLs can be provided");
cmd.AppendDesc ("When a repository is disabled, it will be ignored when using the update and");
cmd.AppendDesc ("install commands.");
cmd.AppendDesc ("Instead of an url, a repository number can be used (repository numbers are");
cmd.AppendDesc ("shown by the rep-list command.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "rep-update", "ru", new SetupCommandHandler (UpdateAvailableAddins));
cmd.Description = "Updates the lists of available addins.";
cmd.AppendDesc ("Updates the lists of addins available in all registered repositories.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "rep-list", "rl", new SetupCommandHandler (ListRepositories));
cmd.Description = "Lists registered repositories.";
cmd.AppendDesc ("Shows a list of all registered repositories.");
commands.Add (cmd);
cat = "Add-in Registry Commands";
cmd = new SetupCommand (cat, "reg-update", "rgu", new SetupCommandHandler (UpdateRegistry));
cmd.Description = "Updates the add-in registry.";
cmd.AppendDesc ("Looks for changes in add-in directories and updates the registry.");
cmd.AppendDesc ("New add-ins will be added and deleted add-ins will be removed.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "reg-build", "rgb", new SetupCommandHandler (RepairRegistry));
cmd.Description = "Rebuilds the add-in registry.";
cmd.AppendDesc ("Regenerates the add-in registry");
commands.Add (cmd);
cmd = new SetupCommand (cat, "info", null, new SetupCommandHandler (PrintAddinInfo));
cmd.Usage = "[addin-id|addin-file] [--xml] [--all] [--full] [--namespace <namespace>]";
cmd.Description = "Prints information about add-ins.";
cmd.AppendDesc ("Prints information about add-ins. Options:\n");
cmd.AppendDesc (" --xml: Dump the information using an XML format.\n");
cmd.AppendDesc (" --all: Dump information from all add-ins.\n");
cmd.AppendDesc (" --full: Include add-ins which don't define extension points.\n");
cmd.AppendDesc (" --namespace ns: Include only add-ins from the specified 'ns' namespace.");
commands.Add (cmd);
cat = "Packaging Commands";
cmd = new SetupCommand (cat, "rep-build", "rb", new SetupCommandHandler (BuildRepository));
cmd.Description = "Creates a repository index file for a directory structure.";
cmd.Usage = "<path>";
cmd.AppendDesc ("Scans the provided directory and generates a set of index files with entries");
cmd.AppendDesc ("for all add-in packages found in the directory tree. The resulting file");
cmd.AppendDesc ("structure is an add-in repository that can be published in a web site or a");
cmd.AppendDesc ("shared directory.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "pack", "p", new SetupCommandHandler (BuildPackage));
cmd.Description = "Creates a package from an add-in configuration file.";
cmd.Usage = "<file-path> [-d:output-directory]";
cmd.AppendDesc ("Creates an add-in package (.mpack file) which includes all files ");
cmd.AppendDesc ("needed to deploy an add-in. The command parameter is the path to");
cmd.AppendDesc ("the add-in's configuration file.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "help", "h", new SetupCommandHandler (PrintHelp));
cmd.Description = "Shows help about a command.";
cmd.Usage = "<command>";
commands.Add (cmd);
cat = "Build Commands";
cmd = new SetupCommand (cat, "libraries", "libs", new SetupCommandHandler (PrintLibraries));
cmd.Description = "Lists add-in assemblies.";
cmd.Usage = "[-r] <addin-id> ...";
cmd.AppendDesc ("Prints a list of assemblies exported by the add-in or add-ins provided");
cmd.AppendDesc ("as arguments. This list of assemblies can be used as references for");
cmd.AppendDesc ("building add-ins that depend on them. If the -r option is specified,");
cmd.AppendDesc ("each assembly is prefixed with '-r:'.");
commands.Add (cmd);
cmd = new SetupCommand (cat, "applications", "apps", new SetupCommandHandler (PrintApplications));
cmd.Description = "Lists extensible applications.";
cmd.AppendDesc ("Prints a list of registered extensible applications.");
commands.Add (cmd);
cat = "Debug Commands";
cmd = new SetupCommand (cat, "dump-file", null, new SetupCommandHandler (DumpRegistryFile));
cmd.Description = "Prints the contents of a registry file.";
cmd.Usage = "<file-path>";
cmd.AppendDesc ("Prints the contents of a registry file for debugging.");
commands.Add (cmd);
}