internal static void Main(string[] args) { try { // Expand fist and then bind to Args var expanded = args.Select(a => parser.ParseArguments(a)).ToArray(); var config = Args.Configuration.Configure<CommandArgs>(); var cmds = config.AsFluent() .UsingStringComparer(StringComparer.InvariantCultureIgnoreCase) .Initialize() .CreateAndBind(expanded); if (args.Length < 1 || args.Length == 1 && cmds.ShowHelp) { var help = new HelpProvider(); var commandsHelp = help.GenerateModelHelp<CommandArgs>(config); var formatter = new Args.Help.Formatters.ConsoleHelpFormatter(); formatter.WriteHelp(commandsHelp, Console.Out); return; } // TODO: Research for a better way to validate parameters with Args try { ValidateArgs(cmds); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(); Console.WriteLine("Try bootstrapper -help for more information"); } Mapper.CreateMap<CommandArgs, BootStrapperArgs>() .ForMember(dest => dest.Unzip, opt => opt.MapFrom(src => !String.IsNullOrEmpty(src.Unzip))) .ForMember(dest => dest.UnzipTarget, opt => opt.MapFrom(src => parser.ParseArguments(src.Unzip))); var bootArgs = Mapper.Map<CommandArgs, BootStrapperArgs>(cmds); var builder = BuildContainer(); using (var container = builder.Build()) { container.Resolve<BootStrapperManager>().Start(bootArgs); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); // TODO: Push error to blob storage? } }
public string GetHelp(Type parameterType) { var sb = new StringBuilder(); if (parameterType == null) { sb.AppendLine(); sb.AppendLine("No Options."); } else { var provider = new Args.Help.HelpProvider(); var bindingDefinition = _argsHelper.GetArgsModelBindingDefinitionForType(parameterType); var modelhelp = provider.GenerateModelHelp(bindingDefinition); var helpFormatter = new Args.Help.Formatters.ConsoleHelpFormatter(80, 1, 5); using (var writer = new StringWriter(sb)) { helpFormatter.WriteHelp(modelhelp, writer); writer.Close(); } } return sb.ToString(); }
internal static void Main(string[] args) { try { // Expand first and then bind to Args var expanded = args.Select(a => parser.ParseArguments(a)).ToArray(); var config = Args.Configuration.Configure<CommandArgs>(); var cmds = config.AsFluent() .UsingStringComparer(StringComparer.InvariantCultureIgnoreCase) .UsingSwitchDelimiter("/") .Initialize() .CreateAndBind(expanded); if (args.Length < 1 || args.Length == 1 && cmds.ShowHelp) { var help = new HelpProvider(); var commandsHelp = help.GenerateModelHelp<CommandArgs>(config); var formatter = new Args.Help.Formatters.ConsoleHelpFormatter(); formatter.WriteHelp(commandsHelp, Console.Out); return; } // TODO: Research for a better way to validate parameters with Args try { ValidateArgs(cmds); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(); Console.WriteLine("Try bootstrapper -help for more information"); } //simple mapping var bootArgs = new BootStrapperArgs { Args = cmds.Args, Block = cmds.Block, EnableSystemProfile = cmds.EnableSystemProfile, Get = cmds.Get, LocalResource = cmds.LocalResource, Overwrite = cmds.Overwrite, Put = cmds.Put, Run = cmds.Run, RunAlways = cmds.RunAlways, StorageConnection = cmds.StorageConnection, Unzip = !String.IsNullOrWhiteSpace(cmds.Unzip), UnzipTarget = cmds.Unzip }; //default to trace logger var logger = new TraceLogger(); var manager = new BootStrapperManager(logger, new PackageDownloader(logger), new PackageRunner(logger), new PackageUnzipper(logger), new PackageUploader(logger), new PackageZipper(logger)); manager.Start(bootArgs); } catch (Exception ex) { Console.WriteLine(ex.ToString()); // TODO: Push error to blob storage? } }