protected override async Task <int> RunInternalAsync(string[] args) { var rootCommand = new RootCommand(); // Add standard commands rootCommand.AddCommand(new GetCommand(Context, _providerRegistry)); rootCommand.AddCommand(new StoreCommand(Context, _providerRegistry)); rootCommand.AddCommand(new EraseCommand(Context, _providerRegistry)); rootCommand.AddCommand(new ConfigureCommand(Context, _configurationService)); rootCommand.AddCommand(new UnconfigureCommand(Context, _configurationService)); // Add any custom provider commands foreach (ProviderCommand providerCommand in _providerCommands) { rootCommand.AddCommand(providerCommand); } // Trace the current version, OS, runtime, and program arguments PlatformInformation info = PlatformUtils.GetPlatformInformation(); Context.Trace.WriteLine($"Version: {Constants.GcmVersion}"); Context.Trace.WriteLine($"Runtime: {info.ClrVersion}"); Context.Trace.WriteLine($"Platform: {info.OperatingSystemType} ({info.CpuArchitecture})"); Context.Trace.WriteLine($"AppPath: {Context.ApplicationPath}"); Context.Trace.WriteLine($"Arguments: {string.Join(" ", args)}"); var parser = new CommandLineBuilder(rootCommand) .UseDefaults() .UseExceptionHandler(OnException) .Build(); return(await parser.InvokeAsync(args)); }
/// <summary> /// Get the HTTP user-agent for Git Credential Manager. /// </summary> /// <returns>User-agent string for HTTP requests.</returns> public static string GetHttpUserAgent() { PlatformInformation info = PlatformUtils.GetPlatformInformation(); string osType = info.OperatingSystemType; string cpuArch = info.CpuArchitecture; string clrVersion = info.ClrVersion; return(string.Format($"Git-Credential-Manager/{GcmVersion} ({osType}; {cpuArch}) CLR/{clrVersion}")); }
protected override async Task <int> RunInternalAsync(string[] args) { var rootCommand = new RootCommand(); // Add standard commands rootCommand.AddCommand(new GetCommand(Context, _providerRegistry)); rootCommand.AddCommand(new StoreCommand(Context, _providerRegistry)); rootCommand.AddCommand(new EraseCommand(Context, _providerRegistry)); rootCommand.AddCommand(new ConfigureCommand(Context, _configurationService)); rootCommand.AddCommand(new UnconfigureCommand(Context, _configurationService)); // Add any custom provider commands foreach (ProviderCommand providerCommand in _providerCommands) { rootCommand.AddCommand(providerCommand); } // Trace the current version, OS, runtime, and program arguments PlatformInformation info = PlatformUtils.GetPlatformInformation(); Context.Trace.WriteLine($"Version: {Constants.GcmVersion}"); Context.Trace.WriteLine($"Runtime: {info.ClrVersion}"); Context.Trace.WriteLine($"Platform: {info.OperatingSystemType} ({info.CpuArchitecture})"); Context.Trace.WriteLine($"AppPath: {_appPath}"); Context.Trace.WriteLine($"Arguments: {string.Join(" ", args)}"); try { return(await rootCommand.InvokeAsync(args)); } catch (Exception e) { if (e is AggregateException ae) { ae.Handle(WriteException); } else { WriteException(e); } return(-1); } }
public override async Task <ICredential> GenerateCredentialAsync(InputArguments input) { ThrowIfDisposed(); Uri uri = GetUriFromInput(input); // Determine the if the host supports Windows Integration Authentication (WIA) if (IsWindowsAuthAllowed) { if (PlatformUtils.IsWindows()) { Context.Trace.WriteLine($"Checking host '{uri.AbsoluteUri}' for Windows Integrated Authentication..."); bool isWiaSupported = await _winAuth.GetIsSupportedAsync(uri); if (!isWiaSupported) { Context.Trace.WriteLine("Host does not support WIA."); } else { Context.Trace.WriteLine("Host supports WIA - generating empty credential..."); // WIA is signaled to Git using an empty username/password return(new GitCredential(string.Empty, string.Empty)); } } else { string osType = PlatformUtils.GetPlatformInformation().OperatingSystemType; Context.Trace.WriteLine($"Skipping check for Windows Integrated Authentication on {osType}."); } } else { Context.Trace.WriteLine("Windows Integrated Authentication detection has been disabled."); } Context.Trace.WriteLine("Prompting for basic credentials..."); return(_basicAuth.GetCredentials(uri.AbsoluteUri, uri.UserInfo)); }
/// <summary> /// Get standard program header title for Git Credential Manager, including the current version and OS information. /// </summary> /// <returns>Standard program header.</returns> public static string GetProgramHeader() { PlatformInformation info = PlatformUtils.GetPlatformInformation(); return($"Git Credential Manager version {GcmVersion} ({info.OperatingSystemType}, {info.ClrVersion})"); }