コード例 #1
0
        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);
        }