/// <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}")); } }
/// <summary> /// Конструктор с указанием файла конфигурации /// </summary> /// <param name="Config"></param> public State(string Config) { Env = new ProgEnv(); if (Config != null) { Env.Load(Config); } }