public override CommandResultCode Execute(IExecutionContext context, CommandArguments args) { if (!args.MoveNext()) { return(CommandResultCode.SyntaxError); } if (!(Application is IPluginHandler)) { Error.WriteLine("The application doesn't support plug-ins."); return(CommandResultCode.ExecutionFailed); } ApplicationPlugins plugins = ((IPluginHandler)Application).Plugins; string pluginType = args.Current; if (!plugins.HasPlugin(pluginType)) { Application.Error.WriteLine("unknown plugin '" + pluginType + "'"); return(CommandResultCode.ExecutionFailed); } if (!plugins.Unregister(pluginType)) { return(CommandResultCode.ExecutionFailed); } return(CommandResultCode.Success); }
public override CommandResultCode Execute(IExecutionContext context, CommandArguments args) { if (!args.MoveNext()) { return(CommandResultCode.SyntaxError); } if (!(Application is IPluginHandler)) { Error.WriteLine("The application doesn't support plug-ins."); return(CommandResultCode.ExecutionFailed); } ApplicationPlugins plugins = ((IPluginHandler)Application).Plugins; string pluginType = args.Current; if (plugins.HasPlugin(pluginType)) { Application.Error.WriteLine("plugin '" + pluginType + "' already loaded"); return(CommandResultCode.ExecutionFailed); } Command plugin; try { plugin = plugins.LoadPlugin(pluginType); } catch (Exception e) { Application.Error.WriteLine("couldn't load plugin: " + e.Message); return(CommandResultCode.ExecutionFailed); } if (plugin != null) { plugins.Add(pluginType, plugin); Out.Write("adding command: "); Out.Write(plugin.Name); string[] aliases = plugin.Aliases; if (aliases.Length > 0) { Out.Write(" ("); for (int i = 0; i < aliases.Length; ++i) { Out.Write(aliases[i]); if (i < aliases.Length - 1) { Out.Write(", "); } } Out.Write(")"); } Out.WriteLine(); } return(CommandResultCode.Success); }
protected ShellApplication() { output = new ConsoleOutputDevice(System.Console.Out, true); message = new ConsoleOutputDevice(System.Console.Error, false); input = new ConsoleInputDevice(); dispatcher = new CommandDispatcher(this); if (this is ISettingsHandler) settings = new ApplicationSettings(this); if (this is IPropertyHandler) properties = new PropertyRegistry(this as IPropertyHandler); if (this is IPluginHandler) plugins = new ApplicationPlugins(this); interruptHandler = new ApplicationInterruptionHandler(this); }