protected string GetValue(List <string> aliases, Spi.Input.Options options) { return(aliases .Select(a => options.ValueOrDefault(a)) .Where(v => !string.IsNullOrWhiteSpace(v)) .FirstOrDefault()); }
public override string Run(Spi.Input.Options options) { var credentials = new Security.Common.Credentials(options); var result = Task.Run(() => _credentialStore.Write(credentials)).Result; if (result) { Logger.LogError($"Failed to save {credentials}"); } return(string.Empty); }
public Task <ICredentialKey> GenerateKey(Spi.Input.Options options) { // TODO magic boo var uri = new UriBuilder() { UserName = options.ValueOrDefault("user"), Host = options.ValueOrDefault("host"), Scheme = options.ValueOrDefault("protocol"), Path = options.ValueOrDefault("path") }; return(Task.FromResult(new GcmwCredentialKey(uri.Uri) as ICredentialKey)); }
public override string Run(Spi.Input.Options options) { var credentials = new Security.Common.Credentials(options); Logger.LogDebug($"Attempting to delete {credentials}"); var result = Task.Run(() => _credentialStore.Delete(credentials)).Result; if (result) { return("true"); } return("false"); }
public virtual string Run(Spi.Input.Options options) { Console.WriteLine($"Called [{Name}] with options:"); foreach (var option in options) { Console.Write($"{option.Key}=["); foreach (var value in option.Value) { Console.Write($"{value},"); } Console.WriteLine($"]"); } return(null); }
protected Spi.Input.Options GetRuntimeOptions(CommandLineApplication command, IEnumerable <IOptionDefinition> commandOptions) { var options = new Spi.Input.Options(); // get env vars // - get all found GetEnvironmentVariableOptions().ToList().ForEach(x => options[x.Key] = x.Value); // get command line args // - get all found + overwrite/override env var var dave = command.Options.Distinct().ToDictionary(o => o.LongName, o => o.Values).ToList(); dave.ForEach(x => options[x.Key] = x.Value); // do we have all we need? if (!options.Any(op => op.Value.Any() && commandOptions.Any(co => co.Name.Equals(op.Key, StringComparison.InvariantCultureIgnoreCase)))) { // - if not // - get interactive values var operationArguments = new Manager.Model.OperationArguments(); // Parse the operations arguments from stdin (this is how git sends commands) // see: https://www.kernel.org/pub/software/scm/git/docs/technical/api-credentials.html // see: https://www.kernel.org/pub/software/scm/git/docs/git-credential.html using (var stdin = Console.OpenStandardInput()) { Task.Run(async() => await operationArguments.ReadInput(stdin)).Wait(); } operationArguments.Options.ToList().ForEach(x => options[x.Key] = x.Value); } foreach (var option in options) { StringBuilder buffer = new StringBuilder(); buffer.Append($"{option.Key}=["); foreach (var value in option.Value) { buffer.Append($"{value},"); } buffer.Append($"]"); buffer.Append(System.Environment.NewLine); Logger.LogDebug(buffer.ToString()); } return(options); }
public override string Run(Spi.Input.Options options) { // get host var host = _hosts .Select(h => new { Handler = h, Weight = h.CanHandle( options.ValueOrDefault(Manager.Options.Command.Host.CanonicalName) ).Result } ) .OrderBy(a => a.Weight).Where(a => a.Weight >= 1) .FirstOrDefault().Handler; //read from credential store var foundCredentials = Task.Run(() => _credentialStore.Read(_credentialKeyFactory.GenerateKey(options).Result)).Result; if (foundCredentials != null) { return(foundCredentials.GetResponse()); } if (!IsInteractive(options)) { return(null); } var guiHost = host as Spi.Gui.Hosts.IHost; if (UseModalPrompt(options) && guiHost != null) { Program.BuildAvaloniaApp().Start((app, args) => { foundCredentials = guiHost.PromptGui(app); }, System.Environment.GetCommandLineArgs()); return(foundCredentials.GetResponse()); } else { foundCredentials = Task.Run(() => host.PromptCli()).Result; return(foundCredentials.GetResponse()); } }
public Credentials(Spi.Input.Options options) : this(options.ValueOrDefault("user"), options.ValueOrDefault("protocol"), options.ValueOrDefault("host"), options.ValueOrDefault("path"), options.ValueOrDefault("password")) { }
protected bool UseModalPrompt(Spi.Input.Options options) { var val = GetValue(new Manager.Options.Command.ModalPrompt().Aliases.ToList(), options); return(val == null || val.Equals("true", StringComparison.InvariantCultureIgnoreCase)); }
protected bool IsInteractive(Spi.Input.Options options) { var val = GetValue(new Manager.Options.Command.Interactive().Aliases.ToList(), options); return(val == null || val.Equals("Always", StringComparison.InvariantCultureIgnoreCase) || val.Equals("Auto", StringComparison.InvariantCultureIgnoreCase)); }