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); } }
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); } }
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; }
public void ShowHelp(Options options) { _settings.Output.WriteLine("Usage: Sake [OPTIONS]+ [target]+"); _settings.Output.WriteLine(); _settings.Output.WriteLine("Options:"); options.WriteOptionsDescriptions(_settings.Output); }