Beispiel #1
0
        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);
        }
Beispiel #4
0
 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);
        }
Beispiel #7
0
 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);
        }
Beispiel #10
0
 public void ParseCommandLine(string[] args)
 {
     _command = CommandLineParser.Parse
                (
         args: args,
         commands: new List <CommandLineCommand>()
     {
         new BuildCommand(),
         new TranslationCommand(),
         new TestCommand(),
         new BuildInteractiveCommand(),
         new BuildInteractiveNoUpdateCommand()
     }
                );
 }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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());
        }