Exemplo n.º 1
0
        /// <summary>
        /// Determines which one of the nested modules should be invoked and runs it.
        /// </summary>
        /// <param name="args">The command line arguments for the module.</param>
        /// <param name="usagePrefix">The prefix to print before the usage string.</param>
        /// <returns>True if the run was successful, false otherwise.</returns>
        public override bool Run(string[] args, string usagePrefix)
        {
            if (args == null)
            {
                throw new ArgumentNullException("args");
            }

            if (args.Length == 0)
            {
                this.PrintUsage(usagePrefix);
                return(false);
            }

            string moduleName = args[0];

            if (!this.registeredModulesDictionary.ContainsKey(moduleName))
            {
                Console.WriteLine("Unknown module: {0}.", moduleName);
                this.PrintUsage(usagePrefix);
                return(false);
            }

            CommandLineModule invokedSubmodule = this.registeredModulesDictionary[moduleName];

            return(invokedSubmodule.Run(args.Skip(1).ToArray(), string.Format("{0} {1}", usagePrefix, moduleName)));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Registers a new module.
        /// </summary>
        /// <param name="moduleName">The name of the module, which will be used to invoke it from the command line.</param>
        /// <param name="module">The module.</param>
        public void RegisterModule(string moduleName, CommandLineModule module)
        {
            if (string.IsNullOrEmpty(moduleName))
            {
                throw new ArgumentException("Valid module name should be specified.", "moduleName");
            }

            if (moduleName.Contains(' ') || moduleName.Contains('\t'))
            {
                throw new ArgumentException("Module name should not contains spaces or tabs.", "moduleName");
            }

            if (this.registeredModulesDictionary.ContainsKey(moduleName))
            {
                throw new ArgumentException("A module with the given name has already been registered.", "moduleName");
            }

            if (module == null)
            {
                throw new ArgumentNullException("module");
            }

            this.registeredModulesDictionary.Add(moduleName, module);
            this.registeredModuleNames.Add(moduleName);
        }