Esempio n. 1
0
        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?
            }
        }