public static Task InitialiseWithCommandsAsync(this TexoEngine engine, SimpleIoc container) { TexoConfiguration.Builder configuration = TexoConfiguration.CreateDefault().ToBuilder(); string solutionFile = container.GetInstance <ISolutionPathProvider>().GetPath(); if (!string.IsNullOrEmpty(solutionFile)) { configuration.Environment.Variables.Add(VsVariableNames.SOLUTION_FILE, solutionFile); } configuration.Runtime.Commands.AddRange(new[] { ReferenceCheckCommand.BuildConfiguration(), CommandLineCommand.BuildConfiguration(), FileManagerBuilder.BuildCommand(), NugetManagerBuilder.BuildCommand(), CalcCommand.BuildConfiguration(), //ClipboardBuilder.BuildCommand(), FunctionsBuilder.BuildCommand(), CodeBaseSearchBuilder.BuildCommand(), SpinSportBuilder.BuildCommand() }); return(engine.InitialiseAsync(configuration.ToImmutable())); }
/// <summary> /// Adds a command to the parser /// </summary> /// <returns>Builder for the command, <see cref="ICommandBuilder{TOption}"/></returns> public ICommandBuilder <TOption> AddCommand() { var command = new CommandLineCommand <TOption, object>(ParserOptions, ArgumentResolverFactory, ContainerResolver, m_option); m_commands.Add(command); return(command); }
/// <summary> /// Adds a command to the parser /// </summary> /// <typeparam name="TCommandOption">Options model for the command</typeparam> /// <returns>Builder for the command, <see cref="ICommandBuilder{TOption,TCommandOption}"/></returns> public ICommandBuilder <TOption, TCommandOption> AddCommand <TCommandOption>() where TCommandOption : class, new() { var command = new CommandLineCommand <TOption, TCommandOption>(ParserOptions, ArgumentResolverFactory, ContainerResolver, m_option); m_commands.Add(command); return(command); }
public static void InitialiseWithCommands(this TexoEngine engine) { engine.Initialise( ReferenceCheckCommand.BuildConfiguration(), CommandLineCommand.BuildConfiguration(), FileManagerBuilder.BuildCommand(), NugetManagerBuilder.BuildCommand()); }
private void RegisterNonGenericCommandInternal <TCommand>(CommandLineCommand <TOption, object> command) where TCommand : Command { var cmdConfigurator = ActivatorUtilities.GetServiceOrCreateInstance <TCommand>(Services); cmdConfigurator.OnConfigure(command); command.OnExecuting(cmdConfigurator.OnExecute); command.OnExecutingAsync(cmdConfigurator.OnExecuteAsync); }
private void RegisterGenericCommandInternal <TCommand>(CommandLineCommand <TOption, object> command) where TCommand : Command { var cmdConfigurator = (Command <TOption>)(Command)(ActivatorUtilities.GetServiceOrCreateInstance <TCommand>(Services)); cmdConfigurator.OnConfigure(command); command.OnExecuting((Action <TOption>)cmdConfigurator.OnExecute); command.OnExecutingAsync((Func <TOption, CancellationToken, Task>)cmdConfigurator.OnExecuteAsync); }
public static Task InitialiseWithCommandsAsync(this TexoEngine engine) { return(engine.InitialiseAsync( ReferenceCheckCommand.BuildConfiguration(), CommandLineCommand.BuildConfiguration(), FileManagerBuilder.BuildCommand(), NugetManagerBuilder.BuildCommand(), CalcCommand.BuildConfiguration(), ClipboardBuilder.BuildCommand(), FunctionsBuilder.BuildCommand(), //CodeBaseSearchBuilder.BuildCommand(), SpinSportBuilder.BuildCommand())); }
/// <summary> /// Registers a command type /// </summary> /// <typeparam name="TCommand">Command type, must be inherit <see cref="Command{TOptions}"/></typeparam> public void RegisterCommand <TCommand>() where TCommand : Command <TOption> { var cmdConfigurator = ContainerResolver.Resolve <TCommand>(); var command = new CommandLineCommand <TOption, object>(ParserOptions, ArgumentResolverFactory, ContainerResolver, m_option); cmdConfigurator.OnConfigure(command); command.OnExecuting((Action <TOption>)cmdConfigurator.OnExecute); m_commands.Add(command); }
/// <summary> /// Registers a command type /// </summary> /// <typeparam name="TCommand">Command type, must be inherit <see cref="Command{TOptions,TCommandOption}"/></typeparam> /// <typeparam name="TCommandOption">The command options</typeparam> public void RegisterCommand <TCommand, TCommandOption>() where TCommand : Command <TOption, TCommandOption> where TCommandOption : class, new() { var cmdConfigurator = ContainerResolver.Resolve <TCommand>(); var command = new CommandLineCommand <TOption, TCommandOption>(ParserOptions, ArgumentResolverFactory, ContainerResolver, m_option); cmdConfigurator.OnConfigure((ICommandConfigurationBuilder <TCommandOption>)command); command.OnExecuting((Action <TOption, TCommandOption>)cmdConfigurator.OnExecute); m_commands.Add(command); }
public void ParseCommandLine(string[] args) { _command = CommandLineParser.Parse ( args: args, commands: new List <CommandLineCommand>() { new BuildCommand(), new TranslationCommand(), new TestCommand(), new BuildInteractiveCommand(), new BuildInteractiveNoUpdateCommand() } ); }
public static IEnumerable <CommandLineMapping> GetAllCommands() { var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()); Type toFind = typeof(CommandLineCommand); types = types.Where(x => toFind.IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract); LinkedList <CommandLineMapping> ret = new LinkedList <CommandLineMapping>(); foreach (Type t in types) { CommandLineCommand cmd = (CommandLineCommand)t.GetConstructor(new Type[0]).Invoke(null); CommandLineMapping mapping = new CommandLineMapping() { Command = cmd }; var fields = t.GetFields(); var members = t.GetMembers(); foreach (FieldInfo f in fields) { foreach (CustomAttributeData d in f.CustomAttributes) { if (d.AttributeType.Equals(typeof(KeyedArgument))) { mapping.KeyedFields.Add(f); break; } if (d.AttributeType.Equals(typeof(PositionalArgument))) { mapping.PositionalFields.Add(f); break; } } } if (mapping.PositionalFields.Count == 0 && mapping.KeyedFields.Count == 0) { throw new Exception("Type " + t.Name + " did not have a positional field or keyed field"); } ret.AddLast(mapping); } return(ret); }
private static void Startup() { SimpleIoc container = new SimpleIoc(); container.Register <ServiceMessageBus>(); container.Register <IServiceMessageBus>(() => container.GetInstance <ServiceMessageBus>()); container.Register <IServiceMessageBusRegister>(() => container.GetInstance <ServiceMessageBus>()); container.Register <ILogService, DebugLogService>(); container.Register <IInputParseService, InputParseService>(); container.Register <IInputEvaluationService, InputEvaluationService>(); container.Register <IEnvironmentService, EnvironmentService>(); container.Register <ISettingService, SettingService>(); container.Register <ICommandManagementService, SingletonCommandManagementService>(); container.Register <IResultProcessingService, ResultProcessingService>(); container.Register <IMarkdownService, MarkdownService>(); container.Register <IConsoleRenderService, ConsoleMarkdownRenderService>(); container.Register <ConsoleViewService>(); container.Register <IViewService>(() => container.GetInstance <ConsoleViewService>()); container.Register <IPromptableViewService>(() => container.GetInstance <ConsoleViewService>()); // PowerShell Fallback container.Register <IPowerShellResultBuilder, PowerShellResultMarkdownBuilder>(); container.Register <IFallbackService, PowerShellFallbackService>(); // Core commands container.Register <CurrentDirectoryCommand>(); container.Register <TexoCommand>(); container.Register <HelpCommand>(); container.Register <ClearCommand>(); // Simple commands container.Register <ReferenceCheckCommand>(); container.Register <CommandLineCommand>(); // File manager container.Register <ISerialisationService, JsonSerialisationService>(); container.Register <IStageService, StageService>(); container.Register <IStashService, StashService>(); container.Register <FileManagerCommand>(); // Nuget manager container.Register <IProjectManagementService, ProjectManagementService>(); container.Register <IPackageManagementService, PackageManagementService>(); container.Register <IConfigManagementService, ConfigManagementService>(); container.Register <ISourceManagementService, SourceManagementService>(); container.Register <IManagementService, ManagementService>(); container.Register <Commands.NugetManager.Stage.IStageService, Commands.NugetManager.Stage.StageService>(); container.Register <NugetManagerCommand>(); CommandFactory commandFactory = new CommandFactory(); container.Register <ITexoFactory <object, string> >(() => commandFactory); commandFactory.Register(CommandKeys.CURRENT_DIRECTORY, () => container.GetInstance <CurrentDirectoryCommand>()); commandFactory.Register(CommandKeys.TEXO, () => container.GetInstance <TexoCommand>()); commandFactory.Register(CommandKeys.HELP, container.GetInstance <HelpCommand>); commandFactory.Register(CommandKeys.CLEAR, container.GetInstance <ClearCommand>); commandFactory.Register(ReferenceCheckConstants.REF_CHECK, () => container.GetInstance <ReferenceCheckCommand>()); commandFactory.Register("command-line", () => container.GetInstance <CommandLineCommand>()); commandFactory.Register("file-manager", () => container.GetInstance <FileManagerCommand>()); commandFactory.Register("nuget-manager", () => container.GetInstance <NugetManagerCommand>()); ServiceMessageBus messageBus = container.GetInstance <ServiceMessageBus>(); var engineBuilder = new TexoEngineBuilder(messageBus, messageBus) .WithLogService(container.GetInstance <ILogService>()) .WithInputParseService(container.GetInstance <IInputParseService>()) .WithInputEvaluationService(container.GetInstance <IInputEvaluationService>()) .WithEnvironmentService(container.GetInstance <IEnvironmentService>()) .WithSettingService(container.GetInstance <ISettingService>()) .WithCommandManagementService(container.GetInstance <ICommandManagementService>()) .WithResultProcessingService(container.GetInstance <IResultProcessingService>()) .WithFallbackService(container.GetInstance <IFallbackService>()); var locator = engineBuilder.GetServiceLocator(); container.Register(locator.ActionProvider); container.Register(locator.ActionRegister); engine = engineBuilder.Build(commandFactory, container.GetInstance <IViewService>()); var config = TexoConfiguration.CreateDefault().ToBuilder(); config.Runtime.Commands.Add(ReferenceCheckCommand.BuildConfiguration()); config.Runtime.Commands.Add(CommandLineCommand.BuildConfiguration()); config.Runtime.Commands.Add(FileManagerBuilder.BuildCommand()); config.Runtime.Commands.Add(NugetManagerBuilder.BuildCommand()); engine.Initialise(config.ToImmutable()); }