Пример #1
0
        /// <inheritdoc />
        public async Task SaveAzureCredentialsAsync(string organization, string username, string token)
        {
            var settings = new CliSettings();

            settings.AzureDevOps.Organization         = organization;
            settings.AzureDevOps.Credentials.Token    = token;
            settings.AzureDevOps.Credentials.Username = username;
            var jsonToken = JToken.FromObject(settings);
            var fileInfo  = new FileInfo(this.GetPath());

            if (!fileInfo.Directory.Exists)
            {
                fileInfo.Directory.Create();
            }

            using (var stream = File.Open(fileInfo.FullName, FileMode.OpenOrCreate))
            {
                stream.SetLength(0);
                using (var streamWriter = new StreamWriter(stream))
                {
                    using (var writer = new JsonTextWriter(streamWriter))
                    {
                        await jsonToken.WriteToAsync(writer);

                        await writer.FlushAsync();
                    }
                }
            }
        }
Пример #2
0
        private void Run(string[] args)
        {
            if (args.Length < 1)
            {
                System.Console.WriteLine("No Arguments");

                return;
            }

            CliSettings s = SettingsManager.GetSettings <CliSettings>();

            EventManager.RegisterDefaultHandlers();
            EventManagerSettings es = new EventManagerSettings();

            Logger.OnLogReceive += (x, y) => System.Console.WriteLine($"[{x}] {y}");
            ArgumentSyntaxParser.Parse(args, s, Logger.s_Settings, es);
            EventManager.SetSettings(es);

            Run(
                args.Concat(
                    s.Configs.SelectMany(
                        x => File.Exists(x)
                                                          ? File.ReadAllText(x).
                        Split(
                            new[] { '\n', '\r', ' ' },
                            StringSplitOptions.RemoveEmptyEntries
                            )
                                                          : new string[0]
                        )
                    )
                );
        }
Пример #3
0
        /// <summary>
        /// Initializes wrapper on a target executable with given settings.
        /// </summary>
        /// <param name="filePath">File path of the target executable.</param>
        /// <param name="settings">Settings to use when executing the target executable.</param>
        public Cli(string filePath, CliSettings settings)
        {
            FilePath = filePath.GuardNotNull(nameof(filePath));
            Settings = settings.GuardNotNull(nameof(settings));

            // Create kill switch
            _killSwitchCts = new CancellationTokenSource();
        }
Пример #4
0
        public override void Run(IEnumerable <string> args)
        {
            CliSettings s = SettingsManager.GetSettings <CliSettings>();

            ArgumentSyntaxParser.Parse(args.ToArray(), s);
            Dictionary <string, ConsoleSubsystem> ss = SubSystems;

            ss["help"] = new HelpSubSystem(this);
            VisConsole.RunConsole(s, args.ToArray(), ss);
        }
Пример #5
0
        internal static void RunConsole(
            CliSettings settings,
            string[] args,
            Dictionary <string, ConsoleSubsystem> subsystems)
        {
            do
            {
                string[] subSystemKeys = { args[0] };

                if (args[0].StartsWith("[") && args[0].EndsWith("]"))
                {
                    subSystemKeys = args[0].
                                    Remove(args[0].Length - 1, 1).
                                    Remove(0, 1).
                                    Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                }

                foreach (string subSystemKey in subSystemKeys)
                {
                    if (!subsystems.TryGetValue(subSystemKey, out ConsoleSubsystem subsystem))
                    {
                        System.Console.WriteLine("Invalid Argument");

                        continue;
                    }

                    subsystem.Run(args.Skip(1));
                }

                if (settings.Continuous)
                {
                    System.Console.WriteLine("Type 'exit' to close console");
                    System.Console.Write("cli>");
                    string cmd = System.Console.ReadLine().ToUpper();

                    if (cmd == "EXIT")
                    {
                        return;
                    }
                }

                if (settings.WaitOnExit)
                {
                    System.Console.WriteLine("Press any key to exit");
                    System.Console.ReadLine();
                }
            }while (settings.Continuous);
        }
Пример #6
0
        /// <summary>
        /// Gets the Azure DevOps credentials or throws the <see cref="AzureDevOpsMissingSettingsException"/> if the
        /// credentials are not available.
        /// </summary>
        /// <param name="settings">
        /// The settings.
        /// </param>
        /// <returns>
        /// The <see cref="AzureDevOpsCredentials"/>.
        /// </returns>
        public static AzureDevOpsCredentials GetAzureDevOpsCredentialsOrThrowException(this CliSettings settings)
        {
            if (!string.IsNullOrEmpty(settings?.AzureDevOps?.Credentials?.Username) &&
                !string.IsNullOrEmpty(settings.AzureDevOps?.Credentials?.Token))
            {
                return(settings.AzureDevOps.Credentials);
            }

            throw new AzureDevOpsMissingSettingsException("Azure DevOps credentials not available");
        }