static void Main(string[] args) { var logger = new Logger(); logger.Log("Started"); var bundler = new Bundler(logger); for (var i = 0; i < args.Length; i++) { switch (args[i].Trim().ToLower()) { case "/source": if (i < args.Length - 1) { bundler.Source = args[i + 1]; } break; case "/target": if (i < args.Length - 1) { bundler.Target = args[i + 1]; } break; case "/recurse": if (i < args.Length - 1) { bool.TryParse(args[i + 1], out var recurse); bundler.RecurseReferences = recurse; } break; case "/use-source": if (i < args.Length - 1) { bool.TryParse(args[i + 1], out var alwaysUseSource); bundler.AlwaysUseSource = alwaysUseSource; } break; case "/only-merge-used": if (i < args.Length - 1) { bool.TryParse(args[i + 1], out var onlyMergeUsed); bundler.OnlyMergeUsed = onlyMergeUsed; } break; case "/?": case "/h": case "/hlp": case "/help": DisplayHelp(logger); Console.ReadLine(); break; } } if (String.IsNullOrWhiteSpace(bundler.Source) || String.IsNullOrWhiteSpace(bundler.Target)) { return; } if (bundler.Source.Equals(bundler.Target, StringComparison.InvariantCultureIgnoreCase)) { throw new ArgumentException("Source and Target cannot be the same file."); } bundler.TryGetFileInfo(bundler.Source, out var sourceInfo); bundler.TryGetExcelPackage(sourceInfo, out var package); bundler.TryBundleProjects(ref package); var newFileName = Path.GetFileNameWithoutExtension(bundler.Source) + DateTime.Now.Ticks; var fi = new FileInfo(bundler.Target); package.SaveAs(fi); Console.WriteLine($"File \"{fi.FullName}\" saved."); Console.ReadLine(); }