static int Main(params string[] args) { int readConfigsUntilIndex = args.Length; string configPath; if (GetConfigFileFromArgs(args, out configPath)) { --readConfigsUntilIndex; } if (configPath == null) { ShowHelp(); return(0); } System.Console.WriteLine($"Bundling with configuration from {configPath}".Green().Bright()); BundleFileProcessor processor = new BundleFileProcessor(); EventHookups(processor, configPath); List <string> configurations = new List <string>(); bool isClean = false; bool isWatch = false; bool isNoColor = false; bool isHelp = false; for (int i = 0; i < readConfigsUntilIndex; ++i) { bool currentArgIsClean = string.Equals(args[i], "clean", StringComparison.OrdinalIgnoreCase); bool currentArgIsWatch = string.Equals(args[i], "watch", StringComparison.OrdinalIgnoreCase); bool currentArgIsNoColor = string.Equals(args[i], "--no-color", StringComparison.OrdinalIgnoreCase); bool currentArgIsHelp = string.Equals(args[i], "help", StringComparison.OrdinalIgnoreCase); currentArgIsHelp |= string.Equals(args[i], "-h", StringComparison.OrdinalIgnoreCase); currentArgIsHelp |= string.Equals(args[i], "--help", StringComparison.OrdinalIgnoreCase); currentArgIsHelp |= string.Equals(args[i], "help", StringComparison.OrdinalIgnoreCase); currentArgIsHelp |= string.Equals(args[i], "-?", StringComparison.OrdinalIgnoreCase); if (currentArgIsHelp) { isHelp = true; break; } else if (currentArgIsClean) { isClean = true; } else if (currentArgIsWatch) { isWatch = true; } else if (currentArgIsNoColor) { isNoColor = true; } else { configurations.Add(args[i]); } } if (isNoColor) { StringExtensions.NoColor = true; } if (isHelp) { ShowHelp(); return(0); } if (isClean && isWatch) { System.Console.WriteLine("The clean and watch options may not be used together.".Red().Bright()); return(-1); } if (isWatch) { bool isWatching = Watcher.Configure(processor, configurations, configPath); if (!isWatching) { System.Console.WriteLine("No output file names were matched".Red().Bright()); return(-1); } System.Console.WriteLine("Watching... Press [Enter] to stop".LightGray().Bright()); System.Console.ReadLine(); Watcher.Stop(); return(0); } if (configurations.Count == 0) { return(Run(processor, configPath, null, isClean)); } foreach (string config in configurations) { int runResult = Run(processor, configPath, config, isClean); if (runResult < 0) { return(runResult); } } return(0); }