public static IScriptServicesBuilder Create(Config config, string[] scriptArgs)
        {
            Guard.AgainstNullArgument("commandArgs", config);
            Guard.AgainstNullArgument("scriptArgs", scriptArgs);

            IConsole console = new ScriptConsole();

            if (!string.IsNullOrWhiteSpace(config.OutputFile))
            {
                console = new FileConsole(config.OutputFile, console);
            }

            var logProvider            = new ColoredConsoleLogProvider(config.LogLevel, console);
            var initializationServices = new InitializationServices(logProvider);

            initializationServices.GetAppDomainAssemblyResolver().Initialize();

            // 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));
        }
Пример #2
0
        private ScriptServices CreateScriptServices()
        {
            var console     = new ScriptConsole();
            var logProvider = new ColoredConsoleLogProvider(LogLevel.Info, console);

            var initializationServices = new InitializationServices(logProvider);

            initializationServices.GetAppDomainAssemblyResolver().Initialize();

            var scriptServicesBuilder = new ScriptServicesBuilder(console, logProvider, null, null, initializationServices);

            scriptServicesBuilder.Overrides[typeof(IFileSystem)] = _options.FileSystem;
            scriptServicesBuilder.LoadScriptPacks();
            scriptServicesBuilder.LoadModules(".csx", _options.Modules);

            var scriptServices = scriptServicesBuilder.Build();

            var assemblies = scriptServices.AssemblyResolver.GetAssemblyPaths(_options.FileSystem.CurrentDirectory, true);
            var packs      = scriptServices.ScriptPackResolver.GetPacks();

            scriptServices.Executor.Initialize(assemblies, packs, _options.ScriptArgs);
            scriptServices.Executor.AddReferences(typeof(Attribute), typeof(ExportAttribute));
            scriptServices.Executor.ImportNamespaces("System.ComponentModel.Composition");

            if (_options.References != null)
            {
                scriptServices.Executor.AddReferenceAndImportNamespaces(_options.References);
            }

            return(scriptServices);
        }
        public void Initialize()
        {
            var console     = (IConsole) new ScriptConsole();
            var logProvider = new ColoredConsoleLogProvider(LogLevel.Info, console);

            var builder = new ScriptServicesBuilder(console, logProvider);

            builder.ScriptEngine <CSharpScriptEngine>();
            var services = builder.Build();

            Executor = (ScriptExecutor)services.Executor;
            Executor.Initialize(Enumerable.Empty <string>(), Enumerable.Empty <IScriptPack>());
        }
        public static void Main(string[] args)
        {
            var console     = (IConsole) new ScriptConsole();
            var logProvider = new ColoredConsoleLogProvider(LogLevel.Info, console);

            var builder = new ScriptServicesBuilder(console, logProvider);

            SetEngine(builder);
            var services = builder.Build();

            var executor = (ScriptExecutor)services.Executor;

            executor.Initialize(Enumerable.Empty <string>(), Enumerable.Empty <IScriptPack>());
            ExecuteLooseScript(executor);
            ExecuteFile(executor);
        }
Пример #5
0
        static void Main(string[] args)
        {
            var console     = (IConsole) new ScriptConsole();
            var logProvider = new ColoredConsoleLogProvider(LogLevel.Info, console);
            var builder     = new ScriptServicesBuilder(console, logProvider);

            builder.ScriptHostFactory <DictionaryScriptHostFactory>();
            SetEngine(builder);
            var services = builder.Build();

            var executor = (ScriptExecutor)services.Executor;

            //add the Message reference and using so we can use the Message type.
            executor.AddReferences(typeof(Message).Assembly);
            executor.ImportNamespaces("DynamicHostExample");

            executor.Initialize(Enumerable.Empty <string>(), Enumerable.Empty <IScriptPack>());

            ExecuteLooseScript(executor);
            Console.ReadLine();
        }
        public ScriptCsExtension(ScriptCsOptions options)
        {
            this.options = options;

            var console     = (IConsole) new ScriptConsole();
            var logProvider = new ColoredConsoleLogProvider(LogLevel.Info, console);

            var builder = new ScriptServicesBuilder(console, logProvider);

            //var useMono = Type.GetType("Mono.Runtime") != null;
            //if (useMono)
            //{
            //    builder.ScriptEngine<MonoScriptEngine>();
            //}
            //else {
            builder.ScriptEngine <CSharpScriptEngine>();
            //}

            scriptServices = builder.Build();

            scriptExecutor = (ScriptExecutor)scriptServices.Executor;
            scriptExecutor.Initialize(Enumerable.Empty <string>(), Enumerable.Empty <IScriptPack>());
        }