示例#1
0
        /// <summary>
        /// Executes a script from the configuration.
        /// </summary>
        /// <param name="script"></param>
        /// <returns>CLI return code.</returns>
        private int ExecuteConfigScript(Models.Script script)
        {
            int result = 0;

            List <ScriptPart> scriptParts = script.GetScriptParts();

            foreach (ScriptPart part in scriptParts)
            {
                if (part.Program != Constants.ProgramKsc)
                {
                    _logger.StartExternalProcessExecution(part);
                    result = StartExternalProcess(part);
                    if (result != 0)
                    {
                        break;
                    }
                    _logger.StopExternalProcessExecution(part);
                }
                else
                {
                    result = ActionDispatcher.Dispatch(part.Arguments.Split(' '), false);
                }
            }

            return(result);
        }
示例#2
0
        private static string Getbody(FrontContext context, Models.Script script)
        {
            string result = null;

            if (script != null && script.Body != null)
            {
                if (script.Extension == null || script.Extension == "js" || script.Extension == ".js")
                {
                    result = script.Body;
                }
                else
                {
                    var engines = Kooboo.Sites.Engine.Manager.GetScript();

                    var find = engines.Find(o => o.Extension == script.Extension);
                    if (find != null)
                    {
                        result = find.Execute(context.RenderContext, script.Body);
                    }
                    else
                    {
                        result = script.Body;
                    }
                }
            }

            return(result);
        }
示例#3
0
        /// <summary>
        /// Runs the run action.
        /// </summary>
        /// <returns></returns>
        public override int Run()
        {
            int result = 0;

            SanitizedConfiguration config = LoadConfiguration();

            if (IsKerboscript(_options.Script) == true)
            {
                string fullScriptPath = Path.GetFullPath(_options.Script);
                _logger.StartKerboscriptExecution(fullScriptPath);
                result = ExecuteKerboscript(fullScriptPath, config);
                if (result == 0)
                {
                    _logger.StopKerboscriptExecution(fullScriptPath);
                }
            }
            else
            {
                if (config != null)
                {
                    Models.Script script = config.Scripts.Find(s => s.Name == _options.Script);
                    if (script != null)
                    {
                        result = ExecuteConfigScript(script);
                    }
                    else
                    {
                        _logger.ScriptNotFound(_options.Script);
                        result = 1;
                    }
                }
            }

            return(result);
        }
示例#4
0
        public static Models.ValidationResult AddScript(Models.Script script)
        {
            using (var uow = new DAL.UnitOfWork())
            {
                var validationResult = ValidateScript(script, true);
                if (validationResult.IsValid)
                {
                    uow.ScriptRepository.Insert(script);
                    validationResult.IsValid = uow.Save();
                }

                return(validationResult);
            }
        }
示例#5
0
        public static Models.ValidationResult UpdateScript(Models.Script script)
        {
            using (var uow = new DAL.UnitOfWork())
            {
                var validationResult = ValidateScript(script, false);
                if (validationResult.IsValid)
                {
                    uow.ScriptRepository.Update(script, script.Id);
                    validationResult.IsValid = uow.Save();
                }

                return(validationResult);
            }
        }
示例#6
0
        public static Models.ValidationResult ValidateScript(Models.Script script, bool isNewScript)
        {
            var validationResult = new Models.ValidationResult();

            if (string.IsNullOrEmpty(script.Name) || !script.Name.All(c => char.IsLetterOrDigit(c) || c == '_'))
            {
                validationResult.IsValid = false;
                validationResult.Message = "Script Name Is Not Valid";
                return(validationResult);
            }

            if (isNewScript)
            {
                using (var uow = new DAL.UnitOfWork())
                {
                    if (uow.ScriptRepository.Exists(h => h.Name == script.Name))
                    {
                        validationResult.IsValid = false;
                        validationResult.Message = "This Script Already Exists";
                        return(validationResult);
                    }
                }
            }
            else
            {
                using (var uow = new DAL.UnitOfWork())
                {
                    var originalScript = uow.ScriptRepository.GetById(script.Id);
                    if (originalScript.Name != script.Name)
                    {
                        if (uow.ScriptRepository.Exists(h => h.Name == script.Name))
                        {
                            validationResult.IsValid = false;
                            validationResult.Message = "This Script Already Exists";
                            return(validationResult);
                        }
                    }
                }
            }

            return(validationResult);
        }
示例#7
0
        public ScriptAssertion(Models.Script script, bool canIdNull = false) : base()
        {
            if (script == null)
            {
                throw new Exception("O parâmetro passo não pode ser nulo [classe ScriptAssertion]");
            }

            if (!canIdNull)
            {
                if (script.Id == Guid.Empty)
                {
                    SetNofication("500", "O ID não pode ser nulo");
                }
            }

            if (script.PassoId == Guid.Empty)
            {
                SetNofication("500", "O ID do Passo não pode ser nulo");
            }

            if (string.IsNullOrEmpty(script.NomeScript))
            {
                SetNofication("500", "Informe a Nome");
            }

            if (string.IsNullOrEmpty(script.DescricaoScript))
            {
                SetNofication("500", "Informe a Descrição");
            }

            if (!Enum.IsDefined(typeof(Enums.TipoScript), script.TipoScript))
            {
                SetNofication("500", "Tipo de script");
            }

            if (string.IsNullOrEmpty(script.Mnemonico))
            {
                SetNofication("500", "Informe o Mnemônico");
            }
        }