Пример #1
0
        /// <summary>
        /// Выполнить команду скрипта
        /// </summary>
        /// <param name="E">Окружение</param>
        /// <param name="T">Программатор</param>
        /// <param name="P">Проект</param>
        /// <param name="S">Скрипт</param>
        /// <param name="Options">Опции программатора (из доступных к выбору пользователя) и пользовательский ввод</param>
        /// <returns></returns>
        public ExecResult Exec(ProgEnv E, UniTool T, Project.Project P, Script S, Project.Action A, ArgumentList Options)
        {
            var     Command = A.Command;
            UniTool ExecT   = null;

            // Проверим, относится ли это к программатору
            if (T.CmdAvail(Command))
            {
                ExecT = T;
            }
            else
            {
                // Это не команда программатору, поищем в библиотеке утилит
                var Tool = E.GetToolByCommand(Command);
                if (Tool != null)
                {
                    ExecT = Tool;
                }
            }

            if (ExecT != null)
            {
                // Есть такая команда в библиотеке
                // Сформируем таблицу параметров
                var FullArgs = GetArgs(T, P, S, A, Options);

                return(ExecT.Exec(Command, FullArgs, E.OptRewriteRules));
            }
            else
            {
                return(new ERError($"Not available command: {Command}"));
            }
        }
Пример #2
0
 /// <summary>
 /// Конструктор с указанием файла конфигурации
 /// </summary>
 /// <param name="Config"></param>
 public State(string Config)
 {
     Env = new ProgEnv();
     if (Config != null)
     {
         Env.Load(Config);
     }
 }