Esempio n. 1
0
        public CommandResult Execute()
        {
            try
            {
                _fileSystemMigrator.Migrate();

                var assemblyPaths    = Enumerable.Empty <string>();
                var workingDirectory = _fileSystem.GetWorkingDirectory(_script);
                if (workingDirectory != null)
                {
                    assemblyPaths = _assemblyResolver.GetAssemblyPaths(workingDirectory);
                }

                _composer.Compose(workingDirectory);

                _scriptExecutor.Initialize(assemblyPaths, _scriptPackResolver.GetPacks(), ScriptArgs);
                var scriptResult  = _scriptExecutor.Execute(_script, ScriptArgs);
                var commandResult = Inspect(scriptResult);
                _scriptExecutor.Terminate();
                return(commandResult);
            }
            catch (FileNotFoundException ex)
            {
                _logger.ErrorFormat("{0} - '{1}'.", ex, ex.Message, ex.FileName);
                return(CommandResult.Error);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                return(CommandResult.Error);
            }
        }
Esempio n. 2
0
        // run script from file
        public void Run(string scriptPath)
        {
            // preserve current directory
            var previousCurrentDirectory = Environment.CurrentDirectory;

            try
            {
                // set directory to where script is
                // required to find NuGet dependencies
                Environment.CurrentDirectory = Path.GetDirectoryName(scriptPath);

                // prepare NuGet dependencies, download them if required
                var nuGetReferences = PreparePackages(
                    scriptPath,
                    fileSystem, packageAssemblyResolver,
                    packageInstaller);

                // get script packs: not fully tested yet
                var scriptPacks = scriptPackResolver.GetPacks();

                // execute script from file
                scriptExecutor.Initialize(nuGetReferences, scriptPacks);
                scriptExecutor.Execute(scriptPath);
            }
            finally
            {
                // restore current directory
                Environment.CurrentDirectory = previousCurrentDirectory;
            }
        }
Esempio n. 3
0
        public CommandResult Execute()
        {
            try
            {
                _fileSystemMigrator.Migrate();

                var assemblyPaths    = Enumerable.Empty <string>();
                var workingDirectory = _fileSystem.GetWorkingDirectory(_script);
                if (workingDirectory != null)
                {
                    assemblyPaths = _assemblyResolver.GetAssemblyPaths(workingDirectory);
                }

                _composer.Compose(workingDirectory);

                _scriptExecutor.Initialize(assemblyPaths, _scriptPackResolver.GetPacks(), ScriptArgs);

                // HACK: This is a (dirty) fix for #1086. This might be a temporary solution until some further refactoring can be done.
                _scriptExecutor.ScriptEngine.CacheDirectory = Path.Combine(workingDirectory ?? _fileSystem.CurrentDirectory, _fileSystem.DllCacheFolder);
                var scriptResult  = _scriptExecutor.Execute(_script, ScriptArgs);
                var commandResult = Inspect(scriptResult);
                _scriptExecutor.Terminate();
                return(commandResult);
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Error executing script '{0}'", ex, _script);
                return(CommandResult.Error);
            }
        }
Esempio n. 4
0
        public ScriptResult Execute(string script)
        {
            _exec.AddReferences(typeof(Percentage));
            _exec.AddReferenceAndImportNamespaces(new [] { typeof(PackageBuilder), GetType(), typeof(RequiredAttribute) });
            _exec.ImportNamespaces("System.Linq", "CavemanTools");

            _exec.Initialize(new string[0], new IScriptPack[0]);
            return(_exec.ExecuteScript(GetScriptContent(script)));
        }
Esempio n. 5
0
        public CommandResult Execute()
        {
            try
            {
                var assemblyPaths = Enumerable.Empty <string>();

                var workingDirectory = _fileSystem.GetWorkingDirectory(_script);
                if (workingDirectory != null)
                {
                    assemblyPaths = _assemblyResolver.GetAssemblyPaths(workingDirectory, _script);
                }

                _scriptExecutor.Initialize(assemblyPaths, _scriptPackResolver.GetPacks(), ScriptArgs);
                var result = _scriptExecutor.Execute(_script, ScriptArgs);
                _scriptExecutor.Terminate();

                if (result == null)
                {
                    return(CommandResult.Error);
                }

                if (result.CompileExceptionInfo != null)
                {
                    _logger.Error(result.CompileExceptionInfo.SourceException.Message);
                    _logger.Debug(result.CompileExceptionInfo.SourceException);
                    return(CommandResult.Error);
                }

                if (result.ExecuteExceptionInfo != null)
                {
                    _logger.Error(result.ExecuteExceptionInfo.SourceException);
                    return(CommandResult.Error);
                }

                return(CommandResult.Success);
            }
            catch (FileNotFoundException fnfex)
            {
                _logger.ErrorFormat("{0} - {1}", fnfex.Message, fnfex.FileName);
                return(CommandResult.Error);
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);
                return(CommandResult.Error);
            }
        }