private static void Main(string[] args) { var arguments = ParseArguments(args); var exitCode = 1; if (arguments != null) { var fileSystem = new FileSystem(); var environment = new Environment(); try { var log = new Log { Verbosity = arguments.Verbosity }; var configFileLocator = string.IsNullOrWhiteSpace(arguments.ConfigFile) ? (IConfigFileLocator) new DefaultConfigFileLocator(fileSystem, log) : new NamedConfigFileLocator(arguments.ConfigFile, fileSystem, log); var app = new GitVersionApplication(fileSystem, environment, log, configFileLocator); exitCode = app.Run(arguments); } catch (Exception exception) { Console.Error.WriteLine(exception.Message); } } if (Debugger.IsAttached) { Console.ReadKey(); } System.Environment.Exit(exitCode); }
static int VerifyArgumentsAndRun() { Arguments arguments = null; try { var fileSystem = new FileSystem(); var environment = new Environment(); var argumentsWithoutExeName = GetArgumentsWithoutExeName(); try { arguments = ArgumentParser.ParseArguments(argumentsWithoutExeName); } catch (Exception exception) { Console.WriteLine("Failed to parse arguments: {0}", string.Join(" ", argumentsWithoutExeName)); if (!string.IsNullOrWhiteSpace(exception.Message)) { Console.WriteLine(); Console.WriteLine(exception.Message); Console.WriteLine(); } HelpWriter.Write(); return(1); } if (arguments.IsVersion) { var assembly = Assembly.GetExecutingAssembly(); VersionWriter.Write(assembly); return(0); } if (arguments.IsHelp) { HelpWriter.Write(); return(0); } if (arguments.Diag) { arguments.NoCache = true; arguments.Output = OutputType.BuildServer; } ConfigureLogging(arguments); if (arguments.Diag) { Logger.WriteInfo("Dumping commit graph: "); LibGitExtensions.DumpGraph(arguments.TargetPath, Logger.WriteInfo, 100); } if (!Directory.Exists(arguments.TargetPath)) { Logger.WriteWarning($"The working directory '{arguments.TargetPath}' does not exist."); } else { Logger.WriteInfo("Working directory: " + arguments.TargetPath); } VerifyConfiguration(arguments, fileSystem); if (arguments.Init) { ConfigurationProvider.Init(arguments.TargetPath, fileSystem, new ConsoleAdapter(), arguments.ConfigFileLocator); return(0); } if (arguments.ShowConfig) { Console.WriteLine(ConfigurationProvider.GetEffectiveConfigAsString(arguments.TargetPath, fileSystem, arguments.ConfigFileLocator)); return(0); } if (!string.IsNullOrEmpty(arguments.Proj) || !string.IsNullOrEmpty(arguments.Exec)) { arguments.Output = OutputType.BuildServer; } SpecifiedArgumentRunner.Run(arguments, fileSystem, environment); } catch (WarningException exception) { var error = $"An error occurred:\r\n{exception.Message}"; Logger.WriteWarning(error); return(1); } catch (Exception exception) { var error = $"An unexpected error occurred:\r\n{exception}"; Logger.WriteError(error); if (arguments != null) { Logger.WriteInfo(string.Empty); Logger.WriteInfo("Attempting to show the current git graph (please include in issue): "); Logger.WriteInfo("Showing max of 100 commits"); try { LibGitExtensions.DumpGraph(arguments.TargetPath, Logger.WriteInfo, 100); } catch (Exception dumpGraphException) { Logger.WriteError("Couldn't dump the git graph due to the following error: " + dumpGraphException); } } return(1); } return(0); }