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); }
public Rewriter(ModuleRewriterBase instance) { this.instance = instance; }