示例#1
0
        public void SetUp(Options opts)
        {
            this.opts = opts;
            UnityContainer ScriptContainer = ContainerFactory.ConfigureContainer();

            this.scriptExecutor = ScriptContainer.Resolve <IScriptExecutor>();
        }
示例#2
0
        public ExecuteScriptCommand(
            string script,
            string[] scriptArgs,
            IFileSystem fileSystem,
            IScriptExecutor scriptExecutor,
            IScriptPackResolver scriptPackResolver,
            ILog logger,
            IAssemblyResolver assemblyResolver,
            IFileSystemMigrator fileSystemMigrator,
            IScriptLibraryComposer composer
            )
        {
            Guard.AgainstNullArgument("fileSystem", fileSystem);
            Guard.AgainstNullArgument("scriptExecutor", scriptExecutor);
            Guard.AgainstNullArgument("scriptPackResolver", scriptPackResolver);
            Guard.AgainstNullArgument("logger", logger);
            Guard.AgainstNullArgument("assemblyResolver", assemblyResolver);
            Guard.AgainstNullArgument("fileSystemMigrator", fileSystemMigrator);
            Guard.AgainstNullArgument("composer", composer);

            _script             = script;
            ScriptArgs          = scriptArgs;
            _fileSystem         = fileSystem;
            _scriptExecutor     = scriptExecutor;
            _scriptPackResolver = scriptPackResolver;
            _logger             = logger;
            _assemblyResolver   = assemblyResolver;
            _fileSystemMigrator = fileSystemMigrator;
            _composer           = composer;
        }
 public SystemAccessController(IUserManager userManager, IScriptExecutor scriptExecutor, IDepartmentController departmentController)
 {
     _userManager          = userManager;
     _userPageSize         = ConfigHelper.GetPaginationSize();
     _scriptExecutor       = scriptExecutor;
     _departmentController = departmentController;
 }
示例#4
0
        protected PackagesProviderBase(
            Project project,
            IProjectManager projectManager,
            ResourceDictionary resources,
            ProviderServices providerServices,
            IProgressProvider progressProvider)
        {
            if (projectManager == null) {
                throw new ArgumentNullException("projectManager");
            }

            if (project == null) {
                throw new ArgumentNullException("project");
            }

            if (resources == null) {
                throw new ArgumentNullException("resources");
            }

            if (providerServices == null) {
                throw new ArgumentNullException("providerServices");
            }

            _progressProvider = progressProvider;
            _resources = resources;
            _scriptExecutor = providerServices.ScriptExecutor;
            _progressWindowOpener = providerServices.ProgressWindow;
            _outputConsole = new Lazy<IConsole>(() => providerServices.OutputConsoleProvider.CreateOutputConsole(requirePowerShellHost: false));
            ProjectManager = projectManager;
            _project = project;
        }
 public PluginDispatcher(IWebBrowser browser, Func <string, bool> executeOnUrl)
 {
     this.executeOnUrl          = executeOnUrl;
     this.browser               = browser;
     this.browser.FrameLoadEnd += browser_FrameLoadEnd;
     this.executor              = new CefScriptExecutor(browser);
 }
示例#6
0
            public override UpgradeEngine Given()
            {
                scriptProvider = Substitute.For <IScriptProvider>();
                versionTracker = Substitute.For <IJournal>();
                versionTracker.GetExecutedScripts().Returns(new List <ExecutedSqlScript>
                {
                    new ExecutedSqlScript {
                        Hash = "a", Name = "#1"
                    },
                    new ExecutedSqlScript {
                        Hash = "b", Name = "#2"
                    },
                    new ExecutedSqlScript {
                        Hash = "c", Name = "#3"
                    }
                });
                scriptExecutor = Substitute.For <IScriptExecutor>();

                var config = new UpgradeConfiguration
                {
                    ConnectionManager = new TestConnectionManager(Substitute.For <IDbConnection>())
                };

                config.ScriptProviders.Add(scriptProvider);
                config.ScriptExecutor = scriptExecutor;
                config.Journal        = versionTracker;

                var upgrader = new UpgradeEngine(config);

                return(upgrader);
            }
示例#7
0
        public object Execute(IScriptExecutor repl, object[] args)
        {
            Guard.AgainstNullArgument("repl", repl);

            repl.Reset();
            return null;
        }
 public ScriptServices(
     IFileSystem fileSystem,
     IPackageAssemblyResolver packageAssemblyResolver, 
     IScriptExecutor executor,
     IScriptEngine engine,
     IFilePreProcessor filePreProcessor,
     IReplCommandService replCommandService,
     IScriptPackResolver scriptPackResolver, 
     IPackageInstaller packageInstaller,
     ILog logger,
     IAssemblyResolver assemblyResolver,
     IConsole console = null,
     IInstallationProvider installationProvider = null 
     )
 {
     FileSystem = fileSystem;
     PackageAssemblyResolver = packageAssemblyResolver;
     Executor = executor;
     Engine = engine;
     FilePreProcessor = filePreProcessor;
     ReplCommandService = replCommandService;
     ScriptPackResolver = scriptPackResolver;
     PackageInstaller = packageInstaller;
     Logger = logger;
     Console = console;
     AssemblyResolver = assemblyResolver;
     InstallationProvider = installationProvider;
 }
示例#9
0
 public ExecuteScriptCommand(string script, IFileSystem fileSystem, IScriptExecutor scriptExecutor, IScriptPackResolver scriptPackResolver)
 {
     _script = script;
     _fileSystem = fileSystem;
     _scriptExecutor = scriptExecutor;
     _scriptPackResolver = scriptPackResolver;
 }
 public ScriptActivity(
     IScriptExecutor scriptExecutor,
     ILogger <ScriptActivity> logger)
 {
     _scriptExecutor = scriptExecutor;
     _logger         = logger;
 }
示例#11
0
        public ExecuteScriptCommandBase(
            string script,
            string[] scriptArgs,
            IFileSystem fileSystem,
            IScriptExecutor scriptExecutor,
            IScriptPackResolver scriptPackResolver,
            ILogProvider logProvider,
            IAssemblyResolver assemblyResolver,
            IScriptLibraryComposer composer
            )
        {
            Guard.AgainstNullArgument("fileSystem", fileSystem);
            Guard.AgainstNullArgument("scriptExecutor", scriptExecutor);
            Guard.AgainstNullArgument("scriptPackResolver", scriptPackResolver);
            Guard.AgainstNullArgument("logProvider", logProvider);
            Guard.AgainstNullArgument("assemblyResolver", assemblyResolver);
            Guard.AgainstNullArgument("composer", composer);

            Script              = script;
            ScriptArgs          = scriptArgs;
            FileSystem          = fileSystem;
            ScriptExecutor      = scriptExecutor;
            _scriptPackResolver = scriptPackResolver;
            Logger              = logProvider.ForCurrentType();
            AssemblyResolver    = assemblyResolver;
            Composer            = composer;
        }
示例#12
0
        private static CalamariResult ExecuteScript(IScriptExecutor psse, string scriptName, IVariables variables)
        {
            var runner = new TestCommandLineRunner(ConsoleLog.Instance, variables);
            var result = psse.Execute(new Script(scriptName), variables, runner);

            return(new CalamariResult(result.ExitCode, runner.Output));
        }
示例#13
0
        private static InstalledProvider CreateInstalledProvider(
            IVsPackageManager packageManager   = null,
            IPackageRepository localRepository = null,
            Project project = null,
            IScriptExecutor scriptExecutor               = null,
            ISolutionManager solutionManager             = null,
            IPackageRestoreManager packageRestoreManager = null)
        {
            if (packageManager == null)
            {
                packageManager = new Mock <IVsPackageManager>().Object;
            }

            var mockProgressWindowOpener = new Mock <IProgressWindowOpener>();

            if (project == null)
            {
                project = new Mock <Project>().Object;
            }

            if (scriptExecutor == null)
            {
                scriptExecutor = new Mock <IScriptExecutor>().Object;
            }

            var services = new ProviderServices(
                null,
                mockProgressWindowOpener.Object,
                new Mock <IProviderSettings>().Object,
                new Mock <IUpdateAllUIService>().Object,
                scriptExecutor,
                new MockOutputConsoleProvider(),
                new Mock <IVsCommonOperations>().Object
                );

            if (localRepository == null)
            {
                localRepository = new MockPackageRepository();
            }

            if (solutionManager == null)
            {
                solutionManager = new Mock <ISolutionManager>().Object;
            }

            if (packageRestoreManager == null)
            {
                packageRestoreManager = new Mock <IPackageRestoreManager>().Object;
            }

            return(new InstalledProvider(
                       packageManager,
                       project,
                       localRepository,
                       new System.Windows.ResourceDictionary(),
                       services,
                       new Mock <IProgressProvider>().Object,
                       solutionManager,
                       packageRestoreManager));
        }
示例#14
0
        public static void AddReferences(this IScriptExecutor executor, params Type[] typesFromReferencedAssembly)
        {
            Guard.AgainstNullArgument("typeFromReferencedAssembly", typesFromReferencedAssembly);
            var paths = typesFromReferencedAssembly.Select(t => t.Assembly.Location);

            executor.AddReferences(paths.ToArray());
        }
示例#15
0
        public static void ImportNamespaces(this IScriptExecutor executor, params Type[] typesFromReferencedAssembly)
        {
            Guard.AgainstNullArgument("typesFromReferencedAssembly", typesFromReferencedAssembly);
            var namespaces = typesFromReferencedAssembly.Select(t => t.Namespace);

            executor.ImportNamespaces(namespaces.ToArray());
        }
示例#16
0
    private bool TryCompile(string source, IScriptExecutor executor, out string errors,
                            out Func <object, Task <object> > invoker)
    {
        invoker = null;
        errors  = null;

        if (source.ToLower().EndsWith(".csx"))
        {
            source = "#load " + Environment.NewLine + source;
        }

        //return the type
        source += "System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType";

        var result = executor.ExecuteScript(source);

        if (result.CompileExceptionInfo != null)
        {
            var scriptException = (ScriptCompilationException)result.CompileExceptionInfo.SourceException;
            errors = scriptException.Message;
            return(false);
        }
        var returnValue = result.ReturnValue;
        var type        = (Type)returnValue;

        invoker = GetInvoker(type);

        errors = null;
        return(true);
    }
 public InitializationScriptRunner(
     Solution solution,
     IScriptExecutor scriptExecutor)
 {
     this.solution       = solution;
     this.scriptExecutor = scriptExecutor;
 }
示例#18
0
 public ScriptServices(
     IFileSystem fileSystem,
     IPackageAssemblyResolver packageAssemblyResolver,
     IScriptExecutor executor,
     IRepl repl,
     IScriptEngine engine,
     IFilePreProcessor filePreProcessor,
     IScriptPackResolver scriptPackResolver,
     IPackageInstaller packageInstaller,
     IObjectSerializer objectSerializer,
     ILog logger,
     IAssemblyResolver assemblyResolver,
     IEnumerable<IReplCommand> replCommands,
     IConsole console = null,
     IInstallationProvider installationProvider = null)
 {
     FileSystem = fileSystem;
     PackageAssemblyResolver = packageAssemblyResolver;
     Executor = executor;
     Repl = repl;
     Engine = engine;
     FilePreProcessor = filePreProcessor;
     ScriptPackResolver = scriptPackResolver;
     PackageInstaller = packageInstaller;
     ObjectSerializer = objectSerializer;
     Logger = logger;
     Console = console;
     AssemblyResolver = assemblyResolver;
     InstallationProvider = installationProvider;
     ReplCommands = replCommands;
 }
示例#19
0
        public ExecuteScriptCommand(
            string script,
            string[] scriptArgs,
            IFileSystem fileSystem,
            IScriptExecutor scriptExecutor,
            IScriptPackResolver scriptPackResolver,
            ILog logger,
            IAssemblyResolver assemblyResolver,
            IFileSystemMigrator fileSystemMigrator,
            IScriptLibraryComposer composer
            )
        {
            Guard.AgainstNullArgument("fileSystem", fileSystem);
            Guard.AgainstNullArgument("scriptExecutor", scriptExecutor);
            Guard.AgainstNullArgument("scriptPackResolver", scriptPackResolver);
            Guard.AgainstNullArgument("logger", logger);
            Guard.AgainstNullArgument("assemblyResolver", assemblyResolver);
            Guard.AgainstNullArgument("fileSystemMigrator", fileSystemMigrator);
            Guard.AgainstNullArgument("composer", composer);

            _script = script;
            ScriptArgs = scriptArgs;
            _fileSystem = fileSystem;
            _scriptExecutor = scriptExecutor;
            _scriptPackResolver = scriptPackResolver;
            _logger = logger;
            _assemblyResolver = assemblyResolver;
            _fileSystemMigrator = fileSystemMigrator;
            _composer = composer;
        }
        public static void AddReferenceAndImportNamespaces(this IScriptExecutor executor, Type[] types)
        {
            Guard.AgainstNullArgument("executor", executor);

            executor.AddReferences(types);
            executor.ImportNamespaces(types);
        }
示例#21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DatabaseUpgrader"/> class.
 /// </summary>
 public DatabaseUpgrader(string connectionString, IScriptProvider scriptProvider, IVersionTracker versionTracker, IScriptExecutor scriptExecutor)
 {
     _connectionString = connectionString;
     _scriptExecutor = scriptExecutor;
     _versionTracker = versionTracker;
     _scriptProvider = scriptProvider;
 }
 public ScriptServices(
     IFileSystem fileSystem,
     IPackageAssemblyResolver packageAssemblyResolver,
     IScriptExecutor executor,
     IScriptEngine engine,
     IFilePreProcessor filePreProcessor,
     IReplCommandService replCommandService,
     IScriptPackResolver scriptPackResolver,
     IPackageInstaller packageInstaller,
     ILog logger,
     IAssemblyResolver assemblyResolver,
     IConsole console = null,
     IInstallationProvider installationProvider = null
     )
 {
     FileSystem = fileSystem;
     PackageAssemblyResolver = packageAssemblyResolver;
     Executor             = executor;
     Engine               = engine;
     FilePreProcessor     = filePreProcessor;
     ReplCommandService   = replCommandService;
     ScriptPackResolver   = scriptPackResolver;
     PackageInstaller     = packageInstaller;
     Logger               = logger;
     Console              = console;
     AssemblyResolver     = assemblyResolver;
     InstallationProvider = installationProvider;
 }
示例#23
0
        protected PackagesProviderBase(
            Project project,
            IProjectManager projectManager,
            ResourceDictionary resources,
            ProviderServices providerServices,
            IProgressProvider progressProvider)
        {
            if (projectManager == null)
            {
                throw new ArgumentNullException("projectManager");
            }

            if (project == null)
            {
                throw new ArgumentNullException("project");
            }

            if (resources == null)
            {
                throw new ArgumentNullException("resources");
            }

            if (providerServices == null)
            {
                throw new ArgumentNullException("providerServices");
            }

            _progressProvider     = progressProvider;
            _resources            = resources;
            _scriptExecutor       = providerServices.ScriptExecutor;
            _progressWindowOpener = providerServices.ProgressWindow;
            _outputConsole        = new Lazy <IConsole>(() => providerServices.OutputConsoleProvider.CreateOutputConsole(requirePowerShellHost: false));
            ProjectManager        = projectManager;
            _project = project;
        }
示例#24
0
            public override UpgradeEngine Given()
            {
                scriptProvider = Substitute.For <IScriptProvider>();
                scriptProvider.GetScripts(Arg.Any <IConnectionManager>()).Returns(new List <SqlScript>
                {
                    new SqlScript("#1", "Content of #1"),
                    new SqlScript("#3", "Content of #3"),
                });
                versionTracker = Substitute.For <IJournal>();
                versionTracker.GetExecutedScripts().Returns(new[] { "#1", "#2", "#3" });
                scriptExecutor = Substitute.For <IScriptExecutor>();

                var config = new UpgradeConfiguration
                {
                    ConnectionManager = new TestConnectionManager(Substitute.For <IDbConnection>())
                };

                config.ScriptProviders.Add(scriptProvider);
                config.ScriptExecutor = scriptExecutor;
                config.Journal        = versionTracker;

                var upgrader = new UpgradeEngine(config);

                return(upgrader);
            }
        public MigrationResult ExecuteMigration(string connectionString, string scriptFilePath)
        {
            // Generate C# DataContext using SqlMetal
            var sqlMetalConnectionStringArg = GetSqlMetalConnectionStringArg(connectionString);
            var generatedCSharpDataContext  = new LinqToSQLDataContextGenerator().GenerateDataContext_AndGetCSharpCode(connectionString, sqlMetalConnectionStringArg, dbmlManipulator);

            // Get LinqPad Script
            var linqpadCreator = new LinqPadCSharpCreator();
            var script         = linqpadCreator.Parse(scriptFilePath);

            // Add namespace for DataContext
            script.Namespaces.Add(LinqToSQLDataContextGenerator.DataContextNamespace);

            // Convert LinqPad Script to Executable Source Code
            var executableScript = linqpadCreator.MakeScriptExecutable(script, generatedCSharpDataContext);
            Action <Exception> logExceptionWithSourceCode = (ex) =>
            {
                string primarySourceCode = executableScript.SourceCodePieces.First();
                logger.ErrorException(scriptFilePath, ex);
                logger.Error(primarySourceCode);
            };

            // Create Compiler
            var             csharpProvider = new CSharpCodeProvider();
            IScriptCompiler compiler       = new CodeDomScriptCompiler(csharpProvider);

            Assembly assembly = null;

            try
            {
                // Compile Script > .NET Assembly
                assembly = compiler.Compile(executableScript.AssemblyReferences, executableScript.SourceCodePieces);
            }
            catch (Exception ex)
            {
                var myException = new MigrationException(new MigrationResult(scriptFilePath, false, new[] { "Failed to compile script." }, ex));
                logExceptionWithSourceCode(myException);
                throw myException;
            }

            IScriptExecutor executor = GetScriptExecutor(script);

            try
            {
                // Execute!
                var result = executor.Execute(assembly, scriptFilePath);
                return(result);
            }
            catch (MigrationException ex)
            {
                logExceptionWithSourceCode(ex);
                throw ex;
            }
            catch (Exception ex)
            {
                var myException = new MigrationException(new MigrationResult(scriptFilePath, false, new[] { "Failed to execute compiled script." }, ex));
                logExceptionWithSourceCode(myException);
                throw myException;
            }
        }
示例#26
0
        protected PowerShellHost(string name, IRestoreEvents restoreEvents, IRunspaceManager runspaceManager)
        {
            _restoreEvents   = restoreEvents;
            _runspaceManager = runspaceManager;

            // TODO: Take these as ctor arguments
            _sourceRepositoryProvider = ServiceLocator.GetInstance <ISourceRepositoryProvider>();
            _solutionManager          = ServiceLocator.GetInstance <IVsSolutionManager>();
            _settings = ServiceLocator.GetInstance <ISettings>();
            _deleteOnRestartManager = ServiceLocator.GetInstance <IDeleteOnRestartManager>();
            _scriptExecutor         = ServiceLocator.GetInstance <IScriptExecutor>();

            _dte = ServiceLocator.GetInstance <DTE>();
            _sourceControlManagerProvider = ServiceLocator.GetInstanceSafe <ISourceControlManagerProvider>();
            _commonOperations             = ServiceLocator.GetInstanceSafe <ICommonOperations>();
            PackageManagementContext      = new PackageManagementContext(_sourceRepositoryProvider, _solutionManager,
                                                                         _settings, _sourceControlManagerProvider, _commonOperations);

            _name            = name;
            IsCommandEnabled = true;

            InitializeSources();

            _sourceRepositoryProvider.PackageSourceProvider.PackageSourcesChanged += PackageSourceProvider_PackageSourcesChanged;
            _restoreEvents.SolutionRestoreCompleted += RestoreEvents_SolutionRestoreCompleted;
        }
示例#27
0
 public static void ExecuteScript(this IScriptExecutor executor, string installPath, string scriptFileName, IPackage package, Project project, ILogger logger)
 {
     if (package.HasPowerShellScript(new[] { scriptFileName }))
     {
         executor.Execute(installPath, scriptFileName, package, project, logger);
     }
 }
示例#28
0
        public object Execute(IScriptExecutor repl, object[] args)
        {
            Guard.AgainstNullArgument("repl", repl);

            repl.Reset();
            return(null);
        }
示例#29
0
        /// <summary>
        /// This executes the install script.
        /// </summary>
        /// <param name="p_tfmFileManager">The transactional file manager to use to interact with the file system.</param>
        /// <returns><c>true</c> if the script completed successfully;
        /// <c>false</c> otherwise.</returns>
        protected bool RunScript(TxFileManager p_tfmFileManager)
        {
            IModFileInstaller mfiFileInstaller = CreateFileInstaller(p_tfmFileManager, m_dlgOverwriteConfirmationDelegate);
            bool booResult = false;

            if (Mod.HasInstallScript)
            {
                IDataFileUtil dfuDataFileUtility = new DataFileUtil(GameMode.GameModeEnvironmentInfo.InstallationPath);

                IIniInstaller iniIniInstaller = CreateIniInstaller(p_tfmFileManager, m_dlgOverwriteConfirmationDelegate);
                IGameSpecificValueInstaller gviGameSpecificValueInstaller = CreateGameSpecificValueInstaller(p_tfmFileManager, m_dlgOverwriteConfirmationDelegate);

                InstallerGroup  ipgInstallers = new InstallerGroup(dfuDataFileUtility, mfiFileInstaller, iniIniInstaller, gviGameSpecificValueInstaller, PluginManager);
                IScriptExecutor sexScript     = Mod.InstallScript.Type.CreateExecutor(Mod, GameMode, EnvironmentInfo, ipgInstallers, UIContext);
                sexScript.TaskStarted      += new EventHandler <EventArgs <IBackgroundTask> >(ScriptExecutor_TaskStarted);
                sexScript.TaskSetCompleted += new EventHandler <TaskSetCompletedEventArgs>(ScriptExecutor_TaskSetCompleted);
                booResult = sexScript.Execute(Mod.InstallScript);

                iniIniInstaller.FinalizeInstall();

                if (gviGameSpecificValueInstaller != null)
                {
                    gviGameSpecificValueInstaller.FinalizeInstall();
                }
            }
            else
            {
                booResult = RunBasicInstallScript(mfiFileInstaller, ActiveMods);
            }
            mfiFileInstaller.FinalizeInstall();
            return(booResult);
        }
示例#30
0
 public ScriptServices(
     IFileSystem fileSystem,
     IPackageAssemblyResolver packageAssemblyResolver,
     IScriptExecutor executor,
     IRepl repl,
     IScriptEngine engine,
     IFilePreProcessor filePreProcessor,
     IScriptPackResolver scriptPackResolver,
     IPackageInstaller packageInstaller,
     IObjectSerializer objectSerializer,
     ILog logger,
     IAssemblyResolver assemblyResolver,
     IEnumerable <IReplCommand> replCommands,
     IFileSystemMigrator fileSystemMigrator,
     IConsole console = null,
     IInstallationProvider installationProvider = null)
 {
     FileSystem = fileSystem;
     PackageAssemblyResolver = packageAssemblyResolver;
     Executor             = executor;
     Repl                 = repl;
     Engine               = engine;
     FilePreProcessor     = filePreProcessor;
     ScriptPackResolver   = scriptPackResolver;
     PackageInstaller     = packageInstaller;
     ObjectSerializer     = objectSerializer;
     Logger               = logger;
     Console              = console;
     AssemblyResolver     = assemblyResolver;
     InstallationProvider = installationProvider;
     ReplCommands         = replCommands;
     FileSystemMigrator   = fileSystemMigrator;
 }
示例#31
0
        protected CalamariResult ExecuteScript(IScriptExecutor psse, string scriptName, IVariables variables)
        {
            var runner = new TestCommandLineRunner(new InMemoryLog(), variables);
            var result = psse.Execute(new Script(scriptName), variables, runner);

            return(new CalamariResult(result.ExitCode, runner.Output));
        }
示例#32
0
            public override UpgradeEngine Given()
            {
                scriptProvider = Substitute.For <IScriptProvider>();
                scriptProvider.GetScripts(Arg.Any <IConnectionManager>()).Returns(new List <SqlScript> {
                    new SqlScript("1234", "foo")
                });
                versionTracker = Substitute.For <IJournal>();
                dbConnection   = Substitute.For <IDbConnection>();
                dbCommand      = Substitute.For <IDbCommand>();
                dbConnection.CreateCommand().Returns(dbCommand);
                var connectionManager = new TestConnectionManager(dbConnection);

                scriptExecutor = new SqlScriptExecutor(() => connectionManager, () => Substitute.For <IUpgradeLog>(), null, () => true, null, () => versionTracker);

                var builder = new UpgradeEngineBuilder()
                              .WithScript(new SqlScript("1234", "create table $var$ (Id int)"))
                              .JournalTo(versionTracker)
                              .WithVariable("var", "sub");

                builder.Configure(c => c.ScriptExecutor    = scriptExecutor);
                builder.Configure(c => c.ConnectionManager = connectionManager);

                var upgrader = builder.Build();

                return(upgrader);
            }
示例#33
0
 /// <summary>
 /// Register executor for execution scripts.
 /// </summary>
 public static bool RegisterExecutor(string ext, IScriptExecutor executor)
 {
     if (executors.ContainsKey(ext))
         return false;
     executors.Add(ext, executor);
     return true;
 }
示例#34
0
 public UserManagerService(IPermissionController permissionController, IUserController userController, IRoleController roleController, IScriptExecutor scriptExecutor, IDepartmentController departmentController)
 {
     _permissionController = permissionController;
     _userController       = userController;
     _roleController       = roleController;
     _scriptExecutor       = scriptExecutor;
     _departmentController = departmentController;
 }
示例#35
0
 public VsPackageInstaller(IVsPackageManagerFactory packageManagerFactory,
                           IScriptExecutor scriptExecutor,
                           IPackageRepositoryFactory repositoryFactory)
 {
     _packageManagerFactory = packageManagerFactory;
     _scriptExecutor = scriptExecutor;
     _repositoryFactory = repositoryFactory;
 }
示例#36
0
 public virtual void AfterEach()
 {
     ScriptProvider = null;
     VersionTracker = null;
     ScriptExecutor = null;
     Log = null;
     DbUpgrader = null;
 }
示例#37
0
 public virtual void AfterEach()
 {
     ScriptProvider = null;
     VersionTracker = null;
     ScriptExecutor = null;
     Log            = null;
     DbUpgrader     = null;
 }
示例#38
0
 public VsPackageInstaller(IVsPackageManagerFactory packageManagerFactory,
                           IScriptExecutor scriptExecutor,
                           IPackageRepositoryFactory repositoryFactory)
 {
     _packageManagerFactory = packageManagerFactory;
     _scriptExecutor        = scriptExecutor;
     _repositoryFactory     = repositoryFactory;
 }
示例#39
0
        /// <summary>
        /// Windows service shell
        /// </summary>
        public WindowsServiceShell()
        {
            _executor = new ScriptExecutor(GetType());
            _scripts  = new ScriptsBoundle();

            _exceptionFactoryFactory = new WindowsServiceExceptionFactory(new Win32ServiceMessages());
            _mapper = new Mapper();
        }
示例#40
0
 public VsPackageUninstaller(IVsPackageManagerFactory packageManagerFactory,
                             IPackageRepository packageRepository,
                             IScriptExecutor scriptExecutor)
 {
     _packageManagerFactory = packageManagerFactory;
     _scriptExecutor = scriptExecutor;
     _packageRepository = packageRepository;
 }
示例#41
0
 public VsPackageUninstaller(IVsPackageManagerFactory packageManagerFactory,
                             IPackageRepository packageRepository,
                             IScriptExecutor scriptExecutor)
 {
     _packageManagerFactory = packageManagerFactory;
     _scriptExecutor        = scriptExecutor;
     _packageRepository     = packageRepository;
 }
示例#42
0
 public ProviderServices(
     ILicenseWindowOpener licenseWindowOpener,
     IProgressWindowOpener progressWindow,
     IScriptExecutor scriptExecutor,
     IOutputConsoleProvider outputConsoleProvider)
 {
     LicenseWindow = licenseWindowOpener;
     ProgressWindow = progressWindow;
     ScriptExecutor = scriptExecutor;
     OutputConsoleProvider = outputConsoleProvider;
 }
示例#43
0
        public ExecuteScriptCs(IFileSystem fileSystem,
														IPackageAssemblyResolver packageAssemblyResolver,
														IPackageInstaller packageInstaller, IScriptPackResolver scriptPackResolver,
														IScriptExecutor scriptExecutor)
        {
            //this.logger = logger;
            this.fileSystem = fileSystem;
            this.packageAssemblyResolver = packageAssemblyResolver;
            this.packageInstaller = packageInstaller;
            this.scriptPackResolver = scriptPackResolver;
            this.scriptExecutor = scriptExecutor;
        }
示例#44
0
 public ScriptServiceRoot(
     IFileSystem fileSystem,
     IPackageAssemblyResolver packageAssemblyResolver, 
     IScriptExecutor executor, 
     IScriptPackResolver scriptPackResolver, IPackageInstaller packageInstaller)
 {
     FileSystem = fileSystem;
     PackageAssemblyResolver = packageAssemblyResolver;
     Executor = executor;
     ScriptPackResolver = scriptPackResolver;
     PackageInstaller = packageInstaller;
 }
示例#45
0
 public VsPackageInstaller(IVsPackageManagerFactory packageManagerFactory,
                           IScriptExecutor scriptExecutor,
                           IPackageRepositoryFactory repositoryFactory,
                           IVsCommonOperations vsCommonOperations,
                           ISolutionManager solutionManager)
 {
     _packageManagerFactory = packageManagerFactory;
     _scriptExecutor = scriptExecutor;
     _repositoryFactory = repositoryFactory;
     _vsCommonOperations = vsCommonOperations;
     _solutionManager = solutionManager;
 }
示例#46
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ApplicationDatabase"/> class.
 /// </summary>
 /// <param name="connectionString">The connection string.</param>
 public ApplicationDatabase(string connectionString)
 {
     _connectionString = connectionString;
     _scriptExecutor = new SqlScriptExecutor();
     _versionTracker = new SchemaVersionsTableSqlVersionTracker();
     _scriptProvider = new EmbeddedSqlScriptProvider(
         Assembly.GetExecutingAssembly(),
         versionNumber => string.Format(
                              "Bindable.Cms.Database.Scripts.Sequential.Script{0}.sql",
                              versionNumber.ToString().PadLeft(4, '0')));
     _upgrader = new DatabaseUpgrader(connectionString, _scriptProvider, _versionTracker, _scriptExecutor);
 }
示例#47
0
        public ScriptCsHost()
        {
            var logger = new ConsoleOutLogger("default", Common.Logging.LogLevel.Info, true, true, false, "dd MMM yyy hh:mm:ss");

            var scriptCsBuilder = new ScriptServicesBuilder(new ScriptConsole(), logger)
                .LogLevel(LogLevel.Debug)
                .Cache(true)
                .Repl(false)
                .ScriptEngine<RoslynScriptEngine>();

            _exec = scriptCsBuilder.Build().Executor;
        }
示例#48
0
 /// <summary>
 /// Creates an instance of the package installer for unit testing of registry-based preinstalled packages. This should only be used for unit tests.
 /// </summary>
 /// <param name="registryKeys">The optional list of parent registry keys to look in (used for unit tests).</param>
 internal VsPackageInstaller(IVsPackageManagerFactory packageManagerFactory,
                             IScriptExecutor scriptExecutor,
                             IPackageRepositoryFactory repositoryFactory,
                             IOutputConsoleProvider consoleProvider,
                             IVsCommonOperations vsCommonOperations,
                             ISolutionManager solutionManager,
                             IVsWebsiteHandler websiteHandler,
                             IVsPackageInstallerServices packageServices,
                             IEnumerable<IRegistryKey> registryKeys)
     : this(packageManagerFactory, scriptExecutor, repositoryFactory, consoleProvider, vsCommonOperations, solutionManager, websiteHandler, packageServices)
 {
     _registryKeys = registryKeys;
 }
示例#49
0
 /// <summary>
 /// Creates an instance of the package installer for unit testing of extension-based preinstalled packages.  This should only be used for unit tests.
 /// </summary>
 /// <param name="vsExtensionManager">A mock extension manager instance (used for unit tests).</param>
 internal VsPackageInstaller(IVsPackageManagerFactory packageManagerFactory,
                             IScriptExecutor scriptExecutor,
                             IPackageRepositoryFactory repositoryFactory,
                             IOutputConsoleProvider consoleProvider,
                             IVsCommonOperations vsCommonOperations,
                             ISolutionManager solutionManager,
                             IVsWebsiteHandler websiteHandler,
                             IVsPackageInstallerServices packageServices,
                             object vsExtensionManager)
     : this(packageManagerFactory, scriptExecutor, repositoryFactory, consoleProvider, vsCommonOperations, solutionManager, websiteHandler, packageServices)
 {
     _vsExtensionManager = vsExtensionManager;
 }
示例#50
0
 public ProviderServices(
     IUserNotifierServices userNotifierServices,
     IProgressWindowOpener progressWindow,
     IProviderSettings selectedProviderSettings,
     IScriptExecutor scriptExecutor,
     IOutputConsoleProvider outputConsoleProvider,
     IVsCommonOperations vsCommonOperations)
 {
     UserNotifierServices = userNotifierServices;
     ProgressWindow = progressWindow;
     ScriptExecutor = scriptExecutor;
     OutputConsoleProvider = outputConsoleProvider;
     ProviderSettings = selectedProviderSettings;
     VsCommonOperations = vsCommonOperations;
 }
示例#51
0
        public object Execute(IScriptExecutor repl, object[] args)
        {
            Guard.AgainstNullArgument("repl", repl);

            if (args == null || args.Length == 0)
            {
                return null;
            }

            var path = args[0].ToString();

            repl.FileSystem.CurrentDirectory = Path.GetFullPath(Path.Combine(repl.FileSystem.CurrentDirectory, path));

            return null;
        }
示例#52
0
        public object Execute(IScriptExecutor repl, object[] args)
        {
            var replExecutor = repl as IReplExecutor;
            if(replExecutor == null)
                throw new Exception("Could not find repl executor to get available commands.");

            var replCommands = replExecutor.ReplCommands;
            var commands = "Available REPL commands:" + Environment.NewLine;
            foreach (var replCommand in replCommands)
            {
                var helpText = replCommand is IReplCommandWithInfo ? ((IReplCommandWithInfo) replCommand).Help : "";
                commands += String.Format(" :{0,-15} - {1}", replCommand.CommandName, helpText);
                commands += Environment.NewLine;
            }
            return commands;
        }
示例#53
0
 public ExecuteScriptCommand(string script,
     string[] scriptArgs,
     IFileSystem fileSystem,
     IScriptExecutor scriptExecutor,
     IScriptPackResolver scriptPackResolver,
     ILog logger,
     IAssemblyResolver assemblyResolver)
 {
     _script = script;
     _fileSystem = fileSystem;
     ScriptArgs = scriptArgs;
     _scriptExecutor = scriptExecutor;
     _scriptPackResolver = scriptPackResolver;
     _logger = logger;
     _assemblyResolver = assemblyResolver;
 }
示例#54
0
 public VsPackageInstaller(IVsPackageManagerFactory packageManagerFactory,
                           IScriptExecutor scriptExecutor,
                           IPackageRepositoryFactory repositoryFactory,
                           IOutputConsoleProvider consoleProvider,
                           IVsCommonOperations vsCommonOperations,
                           ISolutionManager solutionManager,
                           IVsWebsiteHandler websiteHandler,
                           IVsPackageInstallerServices packageServices)
 {
     _packageManagerFactory = packageManagerFactory;
     _scriptExecutor = scriptExecutor;
     _repositoryFactory = repositoryFactory;
     _consoleProvider = consoleProvider;
     _vsCommonOperations = vsCommonOperations;
     _solutionManager = solutionManager;
     _websiteHandler = websiteHandler;
     _packageServices = packageServices;
 }
示例#55
0
        public virtual void BeforeEach()
        {
            ScriptProvider = Substitute.For<IScriptProvider> ();
            VersionTracker = Substitute.For<IJournal> ();
            ScriptExecutor = Substitute.For<IScriptExecutor> ();
            ScriptPreprocessor = Substitute.For<IScriptPreprocessor>();

            Log = Substitute.For<IUpgradeLog> ();

            var config = new UpgradeConfiguration();

            config.ScriptPreprocessors.Add(ScriptPreprocessor);
            config.ScriptProviders.Add(ScriptProvider);
            config.ScriptExecutor = ScriptExecutor;
            config.Journal = VersionTracker;
            config.Log = Log;

            DbUpgrader = new ScriptExecutingEngine(config);
        }
示例#56
0
        public object Execute(IScriptExecutor repl, object[] args)
        {
            Guard.AgainstNullArgument("repl", repl);

            var dir = repl.FileSystem.CurrentDirectory;

            var originalColor = _console.ForegroundColor;
            _console.ForegroundColor = ConsoleColor.Yellow;
            try
            {
                _console.WriteLine(dir);
            }
            finally
            {
                _console.ForegroundColor = originalColor;
            }

            return null;
        }
示例#57
0
        public object Execute(IScriptExecutor repl, object[] args)
        {
            if (args == null || args.Length == 0)
            {
                return null;
            }

            string version = null;
            var allowPre = false;
            if (args.Length >= 2)
            {
                version = args[1].ToString();
            }

            allowPre = args.Length >= 3 && args[2].ToString().ToUpperInvariant() == "PRE";

            _logger.InfoFormat("Installing {0}", args[0]);

            _installationProvider.Initialize();

            var packageRef = new PackageReference(
                args[0].ToString(), new FrameworkName(".NETFramework,Version=v4.0"), version);

            _packageInstaller.InstallPackages(new[] { packageRef }, allowPre);
            _packageAssemblyResolver.SavePackages();

            var dlls = _packageAssemblyResolver.GetAssemblyNames(repl.FileSystem.CurrentDirectory)
                .Except(repl.References.PathReferences).ToArray();

            if(repl is IReplExecutor)
                ((IReplExecutor)repl).AddReferencesAndNotify(dlls);
            else
                repl.AddReferences(dlls);

            foreach (var dll in dlls)
            {
                _logger.InfoFormat("Added reference to {0}", dll);
            }

            return null;
        }
示例#58
0
 public ScriptServiceRoot(
     IFileSystem fileSystem,
     IPackageAssemblyResolver packageAssemblyResolver, 
     IScriptExecutor executor,
     IScriptEngine engine,
     IFilePreProcessor filePreProcessor,
     IScriptPackResolver scriptPackResolver, 
     IPackageInstaller packageInstaller,
     ILog logger,
     IConsole console = null)
 {
     FileSystem = fileSystem;
     PackageAssemblyResolver = packageAssemblyResolver;
     Executor = executor;
     Engine = engine;
     FilePreProcessor = filePreProcessor;
     ScriptPackResolver = scriptPackResolver;
     PackageInstaller = packageInstaller;
     Logger = logger;
     Console = console;
 }
        private async Task ApplyScriptsAsync(IDictionary<BuildItem, List<BuildItem>> scriptsToDependencies, IScriptExecutor executor, Func<BuildItem, IEnumerable<BuildItem>> referencerFunc, Func<BuildItem, bool> eligibilityFunc, Action<BuildItem> successAction, Action<BuildItem, Exception> failureAction)
        {
            // Execute script files that don't have any dependencies and remove them from the queue.
            // Continue doing this until all scripts have executed.
            var eligibleScripts = scriptsToDependencies.Where(x => !x.Value.Any() && eligibilityFunc(x.Key)).ToList();
            while (eligibleScripts.Any())
            {
                foreach (var s in eligibleScripts)
                {
                    try
                    {
                        // Run script
                        await executor.ExecuteAsync(s.Key.Script, s.Key.BuildAction);

                        // Remove this script from all other scripts' dependencies
                        //foreach (var r in s.Key.Referencers)
                        foreach (var r in referencerFunc(s.Key).Where(scriptsToDependencies.ContainsKey))
                        {
                            scriptsToDependencies[r].Remove(s.Key);
                        }

                        // Set status
                        successAction(s.Key);
                    }
                    catch (Exception ex)
                    {
                        failureAction(s.Key, ex);
                    }

                    // Remove this script from the queue
                    scriptsToDependencies.Remove(s.Key);
                }
                eligibleScripts = scriptsToDependencies.Where(x => !x.Value.Any() && eligibilityFunc(x.Key)).ToList();
            }

            foreach (var s in scriptsToDependencies.Keys.Where(eligibilityFunc))
            {
                s.ReportError(new CircularDependencyError(s, scriptsToDependencies));
            }
        }
示例#60
0
        public ScriptServices(
            IFileSystem fileSystem,
            IPackageAssemblyResolver packageAssemblyResolver,
            IScriptExecutor executor,
            IRepl repl,
            IScriptEngine engine,
            IFilePreProcessor filePreProcessor,
            IScriptPackResolver scriptPackResolver,
            IPackageInstaller packageInstaller,
            IObjectSerializer objectSerializer,
            ILogProvider logProvider,
            IAssemblyResolver assemblyResolver,
            IEnumerable<IReplCommand> replCommands,
            IFileSystemMigrator fileSystemMigrator,
            IConsole console = null,
            IInstallationProvider installationProvider = null,
            IScriptLibraryComposer scriptLibraryComposer = null
            )
        {
            FileSystem = fileSystem;
            PackageAssemblyResolver = packageAssemblyResolver;
            Executor = executor;
            Repl = repl;
            Engine = engine;
            FilePreProcessor = filePreProcessor;
            ScriptPackResolver = scriptPackResolver;
            PackageInstaller = packageInstaller;
            ObjectSerializer = objectSerializer;
            LogProvider = logProvider;
#pragma warning disable 618
            Logger = new ScriptCsLogger(logProvider.ForCurrentType());
#pragma warning restore 618
            Console = console;
            AssemblyResolver = assemblyResolver;
            InstallationProvider = installationProvider;
            ReplCommands = replCommands;
            FileSystemMigrator = fileSystemMigrator;
            ScriptLibraryComposer = scriptLibraryComposer;
        }