Exemple #1
0
        protected static void Run(string[] args, ModuleRewriterBase instance)
        {
            var app = new CommandLineApplication
            {
                Name = "runner",
                HelpTextGenerator = new CustomHelpGenerator()
            };

            app.ValueParsers.Add(new FileInfoValueParser());
            app.ValueParsers.Add(new SemicolonListValueParser());

            app.HelpOption();
            app.VersionOptionFromAssemblyAttributes(Assembly.GetEntryAssembly());

            var source = app.Argument <FileInfo>(
                "source",
                "Location of the source assembly to be processed")
                         .IsRequired()
                         .Accepts(v => v.ExistingFile());

            var target = app.Option <FileInfo>("-o | --output <path>",
                                               "The output path where the rewritten assembly will be copied to; " +
                                               "if not specified the source will be overwritten",
                                               CommandOptionType.SingleValue);

            var debugType = app.Option <DebugType>(
                "--debugtype <value>",
                $"Type of debug symbols to be emitted. ({String.Join(", ", Enum.GetNames(typeof(DebugType)))})", CommandOptionType.SingleValue)
                            .Accepts(v => v.Enum <DebugType>(true));

            var debugSymbols = app.Option <bool>(
                "--debugsymbols <value>",
                $"If debug symbols should be emitted.", CommandOptionType.SingleValue);

            var props = app.Option(
                "-p | --property <value>",
                "Property values for the rewriter in the format of 'name=value'",
                CommandOptionType.MultipleValue)
                        .Accepts(v => v.RegularExpression("^([^=]+)=(.+)"));

            var refs = app.Option(
                "-r | --reference <value>",
                "List of extra reference assemblies. Specify the parameter multiple times or separate assemblies by semicolon.",
                CommandOptionType.MultipleValue);

            app.OnExecute(() =>
            {
                var o = new Options
                {
                    Source       = source.ParsedValue,
                    Target       = target.HasValue() ? target.ParsedValue : null,
                    DebugType    = debugType.HasValue() ? (DebugType?)debugType.ParsedValue : null,
                    DebugSymbols = debugSymbols.HasValue() && debugSymbols.ParsedValue
                };

                AddSemicolonMultiList(o.References, refs);
                AddSemicolonMultiList(o.Properties, props, value =>
                {
                    var index = value.IndexOf('=');
                    return(new KeyValuePair <string, string>(value.Remove(index), value.Substring(index + 1)));
                });

                new Rewriter(instance).Rewrite(o);
            });

            app.Execute(args);
        }
Exemple #2
0
 public Rewriter(ModuleRewriterBase instance)
 {
     this.instance = instance;
 }