private static int Main(string[] args) { string[] scriptArgs; ScriptCsArgs.SplitScriptArgs(ref args, out scriptArgs); var commandArgs = ParseArguments(args); var configurator = new LoggerConfigurator(commandArgs.LogLevel); var console = new ScriptConsole(); configurator.Configure(console); var logger = configurator.GetLogger(); var scriptServicesBuilder = new ScriptServicesBuilder(console, logger) . Debug(commandArgs.Debug). LogLevel(commandArgs.LogLevel). ScriptName(commandArgs.ScriptName). Repl(commandArgs.Repl); var modules = GetModuleList(commandArgs.Modules); var extension = Path.GetExtension(commandArgs.ScriptName); if (extension != null) extension = extension.Substring(1); scriptServicesBuilder.LoadModules(extension, modules); var scriptServiceRoot = scriptServicesBuilder.Build(); var commandFactory = new CommandFactory(scriptServiceRoot); var command = commandFactory.CreateCommand(commandArgs, scriptArgs); var result = command.Execute(); return result == CommandResult.Success ? 0 : -1; }
private static int Main(string[] args) { ProfileOptimization.SetProfileRoot(typeof(Program).Assembly.Location); ProfileOptimization.StartProfile(typeof(Program).Assembly.GetName().Name + ".profile"); var console = new ScriptConsole(); var parser = new ArgumentHandler(new ArgumentParser(console), new ConfigFileParser(console), new FileSystem()); var arguments = parser.Parse(args); var commandArgs = arguments.CommandArguments; var scriptArgs = arguments.ScriptArguments; var configurator = new LoggerConfigurator(commandArgs.LogLevel); configurator.Configure(console); var logger = configurator.GetLogger(); var scriptServicesBuilder = new ScriptServicesBuilder(console, logger) .Cache(commandArgs.Cache) .Debug(commandArgs.Debug) .LogLevel(commandArgs.LogLevel) .ScriptName(commandArgs.ScriptName) .Repl(commandArgs.Repl); var modules = GetModuleList(commandArgs.Modules); var extension = Path.GetExtension(commandArgs.ScriptName); if (string.IsNullOrWhiteSpace(extension) && !commandArgs.Repl) { // No extension was given, i.e we might have something like // "scriptcs foo" to deal with. We activate the default extension, // to make sure it's given to the LoadModules below. extension = ".csx"; if (!string.IsNullOrWhiteSpace(commandArgs.ScriptName)) { // If the was in fact a script specified, we'll extend it // with the default extension, assuming the user giving // "scriptcs foo" actually meant "scriptcs foo.csx". We // perform no validation here thought; let it be done by // the activated command. If the file don't exist, it's // up to the command to detect and report. commandArgs.ScriptName += extension; } } scriptServicesBuilder.LoadModules(extension, modules); var scriptServiceRoot = scriptServicesBuilder.Build(); var commandFactory = new CommandFactory(scriptServiceRoot); var command = commandFactory.CreateCommand(commandArgs, scriptArgs); var result = command.Execute(); return result == CommandResult.Success ? 0 : -1; }
public static IScriptServicesBuilder Create(ScriptCsArgs commandArgs, string[] scriptArgs) { Guard.AgainstNullArgument("commandArgs", commandArgs); Guard.AgainstNullArgument("scriptArgs", scriptArgs); IConsole console = new ScriptConsole(); if (!string.IsNullOrWhiteSpace(commandArgs.Output)) { console = new FileConsole(commandArgs.Output, console); } var logLevel = commandArgs.LogLevel ?? LogLevel.Info; var configurator = new LoggerConfigurator(logLevel); configurator.Configure(console); var logger = configurator.GetLogger(); var initializationServices = new InitializationServices(logger); initializationServices.GetAppDomainAssemblyResolver().Initialize(); var scriptServicesBuilder = new ScriptServicesBuilder(console, logger, null, null, initializationServices) .Cache(commandArgs.Cache) .Debug(commandArgs.Debug) .LogLevel(logLevel) .ScriptName(commandArgs.ScriptName) .Repl(commandArgs.Repl); var modules = commandArgs.Modules == null ? new string[0] : commandArgs.Modules.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); var extension = Path.GetExtension(commandArgs.ScriptName); if (string.IsNullOrWhiteSpace(extension) && !commandArgs.Repl) { // No extension was given, i.e we might have something like // "scriptcs foo" to deal with. We activate the default extension, // to make sure it's given to the LoadModules below. extension = ".csx"; if (!string.IsNullOrWhiteSpace(commandArgs.ScriptName)) { // If the was in fact a script specified, we'll extend it // with the default extension, assuming the user giving // "scriptcs foo" actually meant "scriptcs foo.csx". We // perform no validation here thought; let it be done by // the activated command. If the file don't exist, it's // up to the command to detect and report. commandArgs.ScriptName += extension; } } return(scriptServicesBuilder.LoadModules(extension, modules)); }
private static ArgumentParseResult ParseArguments(string[] args) { var console = new ScriptConsole(); try { var parser = new ArgumentHandler(new ArgumentParser(console), new ConfigFileParser(console), new FileSystem()); return(parser.Parse(args)); } finally { console.Exit(); } }
public static IScriptServicesBuilder Create(Config config, string[] scriptArgs) { Guard.AgainstNullArgument("commandArgs", config); Guard.AgainstNullArgument("scriptArgs", scriptArgs); IConsole console; if (config.Console == null) { console = new ScriptConsole(); if (!string.IsNullOrWhiteSpace(config.OutputFile)) { console = new FileConsole(config.OutputFile, console); } } else { console = config.Console; } var logProvider = new ColoredConsoleLogProvider(config.LogLevel, console); var initializationServices = new InitializationServices(logProvider); initializationServices.GetAppDomainAssemblyResolver().Initialize(); if (config.ScriptName != null && Path.GetFileName(config.ScriptName) != config.ScriptName) { var path = Path.GetFullPath(config.ScriptName); initializationServices.GetFileSystem().CurrentDirectory = Path.GetDirectoryName(path); config.ScriptName = path; } // NOTE (adamralph): this is a hideous assumption about what happens inside the CommandFactory. // It is a result of the ScriptServicesBuilderFactory also having to know what is going to happen inside the // Command Factory so that it builds the builder(:-p) correctly in advance. // This demonstrates the technical debt that exists with the ScriptServicesBuilderFactory and CommandFactory // in their current form. We have a separate refactoring task raised to address this. var repl = config.Repl || (!config.Clean && config.PackageName == null && !config.Save && config.ScriptName == null); var scriptServicesBuilder = new ScriptServicesBuilder(console, logProvider, null, null, initializationServices) .Cache(config.Cache) .Debug(config.Debug) .LogLevel(config.LogLevel) .ScriptName(config.ScriptName) .Repl(repl); return(scriptServicesBuilder.LoadModules(Path.GetExtension(config.ScriptName) ?? ".csx", config.Modules)); }
private static int Main(string[] args) { var console = new ScriptConsole(); var parser = new ArgumentHandler(new ArgumentParser(console), new ConfigFileParser(console), new FileSystem()); var arguments = parser.Parse(args); var commandArgs = arguments.CommandArguments; var scriptArgs = arguments.ScriptArguments; var configurator = new LoggerConfigurator(commandArgs.LogLevel); configurator.Configure(console); var logger = configurator.GetLogger(); var scriptServicesBuilder = new ScriptServicesBuilder(console, logger) .InMemory(commandArgs.InMemory) .LogLevel(commandArgs.LogLevel) .ScriptName(commandArgs.ScriptName) .Repl(commandArgs.Repl); var modules = GetModuleList(commandArgs.Modules); var extension = Path.GetExtension(commandArgs.ScriptName); if (!string.IsNullOrWhiteSpace(extension)) { extension = extension.Substring(1); } else if (extension == string.Empty) { console.WriteLine(string.Format("{0} is not a valid script name.", commandArgs.ScriptName)); return(1); } scriptServicesBuilder.LoadModules(extension, modules); var scriptServiceRoot = scriptServicesBuilder.Build(); var commandFactory = new CommandFactory(scriptServiceRoot); var command = commandFactory.CreateCommand(commandArgs, scriptArgs); var result = command.Execute(); return(result == CommandResult.Success ? 0 : -1); }
private static int Main(string[] args) { var console = new ScriptConsole(); var parser = new ArgumentHandler(new ArgumentParser(console), new ConfigFileParser(console), new FileSystem()); var arguments = parser.Parse(args); var commandArgs = arguments.CommandArguments; var scriptArgs = arguments.ScriptArguments; var configurator = new LoggerConfigurator(commandArgs.LogLevel); configurator.Configure(console); var logger = configurator.GetLogger(); var scriptServicesBuilder = new ScriptServicesBuilder(console, logger) .InMemory(commandArgs.InMemory) .LogLevel(commandArgs.LogLevel) .ScriptName(commandArgs.ScriptName) .Repl(commandArgs.Repl); var modules = GetModuleList(commandArgs.Modules); var extension = Path.GetExtension(commandArgs.ScriptName); if (!string.IsNullOrWhiteSpace(extension)) { extension = extension.Substring(1); } else if (extension == string.Empty) { console.WriteLine(string.Format("{0} is not a valid script name.", commandArgs.ScriptName)); return 1; } scriptServicesBuilder.LoadModules(extension, modules); var scriptServiceRoot = scriptServicesBuilder.Build(); var commandFactory = new CommandFactory(scriptServiceRoot); var command = commandFactory.CreateCommand(commandArgs, scriptArgs); var result = command.Execute(); return result == CommandResult.Success ? 0 : -1; }
public void Initialize() { var console = new ScriptConsole(); var scriptServicesBuilder = new ScriptServicesBuilder(console, _logger); scriptServicesBuilder.LoadModules("csx", new string[0]); _scriptServiceRoot = scriptServicesBuilder.Build(); _scriptServiceRoot.Executor.AddReferences(ScriptExecutor.DefaultReferences.ToArray()); _scriptServiceRoot.Executor.ImportNamespaces(ScriptExecutor.DefaultNamespaces.Concat(new[] { "MMBot", "Newtonsoft.Json", "Newtonsoft.Json.Linq" }).ToArray()); _scriptServiceRoot.Executor.AddReference<Robot>(); _scriptServiceRoot.Executor.AddReference<JArray>(); _scriptServiceRoot.Executor.AddReference<HttpResponseMessage>(); _scriptServiceRoot.Executor.AddReference<IScriptPackContext>(); _scriptServiceRoot.Executor.Initialize(new string[0], new IScriptPack[] { new MMBot2ScriptPackInternal(_robot), }); }
public bool RunScriptFile(string path) { var console = new ScriptConsole(); var scriptServicesBuilder = new ScriptServicesBuilder(console, _logger); scriptServicesBuilder.InMemory(true); scriptServicesBuilder.LoadModules("csx", new string[0]); var scriptServiceRoot = scriptServicesBuilder.Build(); scriptServiceRoot.Executor.AddReferences(ScriptExecutor.DefaultReferences.ToArray()); scriptServiceRoot.Executor.ImportNamespaces(ScriptExecutor.DefaultNamespaces.Concat(new[] { "MMBot", "Newtonsoft.Json", "Newtonsoft.Json.Linq", "System.Xml", "System.Net", "System.Net.Http" }).ToArray()); scriptServiceRoot.Executor.AddReference<Robot>(); scriptServiceRoot.Executor.AddReference<ILog>(); scriptServiceRoot.Executor.AddReference<JArray>(); scriptServiceRoot.Executor.AddReference<HttpResponseMessage>(); scriptServiceRoot.Executor.AddReference<IScriptPackContext>(); scriptServiceRoot.Executor.Initialize(new string[0], new IScriptPack[] { new MMBot2ScriptPackInternal(_robot), }); var result = scriptServiceRoot.Executor.Execute(path); if (result.CompileExceptionInfo != null) { _logger.Error(result.CompileExceptionInfo.SourceException.Message); _logger.Debug(result.CompileExceptionInfo.SourceException); } if (result.ExecuteExceptionInfo != null) { _logger.Error(result.ExecuteExceptionInfo.SourceException); } return result.CompileExceptionInfo == null && result.ExecuteExceptionInfo == null; }
private static int Main(string[] args) { string[] scriptArgs; ScriptCsArgs.SplitScriptArgs(ref args, out scriptArgs); var commandArgs = ParseArguments(args); var configurator = new LoggerConfigurator(commandArgs.LogLevel); var console = new ScriptConsole(); configurator.Configure(console); var logger = configurator.GetLogger(); var scriptServicesBuilder = new ScriptServicesBuilder(console, logger). Debug(commandArgs.Debug). LogLevel(commandArgs.LogLevel). ScriptName(commandArgs.ScriptName). Repl(commandArgs.Repl); var modules = GetModuleList(commandArgs.Modules); var extension = Path.GetExtension(commandArgs.ScriptName); if (extension != null) { extension = extension.Substring(1); } scriptServicesBuilder.LoadModules(extension, modules); var scriptServiceRoot = scriptServicesBuilder.Build(); var commandFactory = new CommandFactory(scriptServiceRoot); var command = commandFactory.CreateCommand(commandArgs, scriptArgs); var result = command.Execute(); return(result == CommandResult.Success ? 0 : -1); }
public bool RunScriptFile(string path) { try { ParseScriptComments(path); } catch (Exception ex) { _logger.Warn(string.Format("Could not parse comments: {0}", ex.Message)); } var console = new ScriptConsole(); var scriptServicesBuilder = new ScriptServicesBuilder(console, _logger); scriptServicesBuilder.InMemory(true); scriptServicesBuilder.LoadModules("csx", new string[0]); var scriptServiceRoot = scriptServicesBuilder.Build(); var defaultReferences = ScriptExecutor.DefaultReferences.ToArray(); var packageReferences = scriptServiceRoot.PackageAssemblyResolver.GetAssemblyNames(Environment.CurrentDirectory); scriptServiceRoot.Executor.AddReferences(defaultReferences.Concat(packageReferences).ToArray()); scriptServiceRoot.Executor.ImportNamespaces(ScriptExecutor.DefaultNamespaces.Concat(new[] { "MMBot", "Newtonsoft.Json", "Newtonsoft.Json.Linq", "System.Xml", "System.Net", "System.Net.Http" }).ToArray()); scriptServiceRoot.Executor.AddReference<Robot>(); scriptServiceRoot.Executor.AddReference<ILog>(); scriptServiceRoot.Executor.AddReference<JArray>(); scriptServiceRoot.Executor.AddReference<HttpResponseMessage>(); scriptServiceRoot.Executor.AddReference<IScriptPackContext>(); scriptServiceRoot.Executor.AddReference<OwinContext>(); scriptServiceRoot.Executor.Initialize(new string[0], new IScriptPack[] { new MMBot2ScriptPackInternal(_robot), }); var result = scriptServiceRoot.Executor.Execute(path); if (result.CompileExceptionInfo != null) { _logger.Error(result.CompileExceptionInfo.SourceException.Message); _logger.Debug(result.CompileExceptionInfo.SourceException); } if (result.ExecuteExceptionInfo != null) { _logger.Error(result.ExecuteExceptionInfo.SourceException); } return result.CompileExceptionInfo == null && result.ExecuteExceptionInfo == null; }
public ReplScriptServicesBuilder(ScriptConsole console, Common.Logging.ILog logger, IRuntimeServices runtimeServices = null) : base(console, logger, runtimeServices) { this.Overrides.Add(typeof(IScriptExecutor), typeof(Repl)); }