Esempio n. 1
0
        public void Execute(Options options)
        {
            if (options.ShowHelp)
            {
                ShowHelp(options);
                return;
            }

            var originalDirectory = Directory.GetCurrentDirectory();
            try
            {
                foreach (var changeDirectory in options.ChangeDirectory)
                {
                    Directory.SetCurrentDirectory(changeDirectory);
                }

                if (string.IsNullOrEmpty(options.Makefile))
                {
                    if (File.Exists("Sakefile.shade"))
                    {
                        options.Makefile = "Sakefile.shade";
                    }
                    else
                    {
                        var files = Directory.GetFiles(".", "*.shade").Where(name => !Path.GetFileName(name).StartsWith("_"));
                        options.Makefile = files.Count() == 1 ? files.Single() : "Sakefile.shade";
                    }
                }

                var builder = _loader.Load(options);

                var targets = options.Targets;
                if (targets == null || !targets.Any())
                {
                    targets = new[] { builder.DefaultTarget };
                }

                foreach (var target in targets)
                {
                    builder.CallTarget(target);
                }
            }
            finally
            {
                Directory.SetCurrentDirectory(originalDirectory);
            }
        }
Esempio n. 2
0
        public void Execute(Options options)
        {
            if (options.ShowHelp)
            {
                ShowHelp(options);
                return;
            }

            if (string.IsNullOrEmpty(options.Makefile))
            {
                options.Makefile = "makefile.shade";
            }

            var originalDirectory = Directory.GetCurrentDirectory();
            try
            {
                foreach (var changeDirectory in options.ChangeDirectory)
                {
                    Directory.SetCurrentDirectory(changeDirectory);
                }

                var builder = _loader.Load(options);

                var targets = options.Targets;
                if (targets == null || !targets.Any())
                {
                    targets = new[] { builder.DefaultTarget };
                }

                foreach (var target in targets)
                {
                    builder.CallTarget(target);
                }
            }
            finally
            {
                Directory.SetCurrentDirectory(originalDirectory);
            }
        }
Esempio n. 3
0
        public Options Parse(params string[] args)
        {
            var options = new Options();

            var optionSet = new OptionSet()
                .Add("v|verbose", "increase verbosity", v => ++options.Verbose)
                .Add("h|?|help", "show this message and exit", v => options.ShowHelp = v != null)
                .Add("f|file|makefile=", "read file as a makefile", v => options.Makefile = v)
                .Add("C|directory=", "change current directory", v => options.ChangeDirectory.Add(v))
                .Add("I|include-dir=", "specifies a directory to search for included files", v => options.IncludeDirectory.Add(v))
                ;

            options.Targets = optionSet.Parse(args);
            options.WriteOptionsDescriptions = optionSet.WriteOptionDescriptions;
            return options;
        }
Esempio n. 4
0
 public void ShowHelp(Options options)
 {
     _settings.Output.WriteLine("Usage: Sake [OPTIONS]+ [target]+");
     _settings.Output.WriteLine();
     _settings.Output.WriteLine("Options:");
     options.WriteOptionsDescriptions(_settings.Output);
 }