public Config(Switches switches) { m_switches = switches; m_debugLogDir = Path.Combine(Environment.CurrentDirectory, "DebugLogs"); ObserveCollection(m_switches.GitConfigSet, x => AddGitConfigOption(x, add: false)); ObserveCollection(m_switches.GitConfigAdd, x => AddGitConfigOption(x, add: true)); TagMatcher = new InclusionMatcher(ignoreCase: false); TagRename = new Renamer(); BranchMatcher = new InclusionMatcher(ignoreCase: false); BranchRename = new Renamer(); BranchRename.AddRule(new RenameRule("^MAIN$", "master")); ObserveCollection(m_switches.IncludeFile, x => AddIncludeRule(m_fileMatcher, x, include: true)); ObserveCollection(m_switches.ExcludeFile, x => AddIncludeRule(m_fileMatcher, x, include: false)); ObserveCollection(m_switches.HeadOnly, x => AddIncludeRule(m_headOnlyMatcher, x, include:true)); ObserveCollection(m_switches.IncludeTag, x => AddIncludeRule(TagMatcher, x, include: true)); ObserveCollection(m_switches.ExcludeTag, x => AddIncludeRule(TagMatcher, x, include: false)); ObserveCollection(m_switches.RenameTag, x => AddRenameRule(TagRename, x)); ObserveCollection(m_switches.IncludeBranch, x => AddIncludeRule(BranchMatcher, x, include: true)); ObserveCollection(m_switches.ExcludeBranch, x => AddIncludeRule(BranchMatcher, x, include: false)); ObserveCollection(m_switches.RenameBranch, x => AddRenameRule(BranchRename, x)); }
static int Main(string[] args) { try { var switches = new Switches(); m_config = new Config(switches); m_config.ParseCommandLineSwitches(args); if (switches.Help) { Console.Out.WriteLine(switches.GetHelpText()); return 0; } using (m_log = new Logger(m_config.DebugLogDir, debugEnabled: m_config.Debug)) { try { if (m_config.CreateCvsLog) RunOperation("Download CVS Log", () => Cvs.DownloadCvsLog(m_config.CvsLogFileName, m_config.Sandbox)); RunOperation("Analysis", Analyse); if (m_config.DoImport) { RunOperation("Import", Import); if (m_config.Repack) RunOperation("Repack", Repack); } } catch (Exception e) { m_log.WriteLine("{0}", e); throw; } } } catch (Exception e) { Console.Error.WriteLine(e); return 1; } return 0; }