Расширение VS Code с кнопками для запуска `epm-docker-test.sh`.
Расширение VS Code для быстрого запуска `epm-docker-test.sh` из боковой панели.
## Использование
Оно не заменяет сам скрипт. Расширение только помогает собрать команду, подставить имя `epm play` приложения, выбрать системы или пресет и отправить готовый запуск в обычный терминал VS Code. Поэтому весь вывод, вопросы, ошибки Docker/SSH и ссылки на логи остаются видимыми в терминале.
1. Откройте эту папку в VS Code: `vscode-extension`.
2. Нажмите `F5`, чтобы запустить Extension Development Host.
3. В открывшемся окне откройте репозиторий с `epm-docker-test.sh`.
4. Используйте панель `EPM Test` на боковой панели активности или кнопку `$(beaker) EPM Test` в строке состояния.
## Зачем Нужно
Расширение запускает команды в обычном терминале VS Code, поэтому вывод и интерактивные сообщения остаются видимыми.
Обычно при работе с `eepm` приходится часто проверять один и тот же play-скрипт в контейнерах:
```bash
./epm-docker-test.sh ayugram fedora
./epm-docker-test.sh -j 3 ayugram --preset main
./epm-docker-test.sh --exec"epm --version" debian
```
Расширение сокращает этот цикл до кнопок в панели `EPM Test`:
- запустить текущий `epm play` на одной или нескольких системах;
- запустить play-тест по пресету `main`, `russian` или `all`;
- включить `--latest` одной галочкой;
- запустить произвольную `--exec` команду;
- повторить последнюю команду;
- открыть каталог логов.
## Быстрый Старт
1. Откройте в VS Code рабочую папку, где доступен `epm-docker-test.sh`.
2. Откройте боковую панель `EPM Test` в Activity Bar.
3. Если дерево `eepm` лежит не в рабочем каталоге, задайте `epmDockerTest.eepmDir`, например `./eepm`.
4. Откройте файл из `play.d`, `pack.d` или `repack.d`, если хотите автоподстановку имени приложения.
5. Нажмите нужную кнопку в `EPM Test: Actions`.
Сгенерированная команда будет отправлена в терминал `EPM Docker Test`.
## Установка
Для повседневного локального использования без упаковки:
Этот же VSIX можно установить через команду VS Code `Extensions: Install from VSIX...`.
После обновления расширения выполните в VS Code `Developer: Reload Window`, чтобы панель действий перечиталась.
Для разработки расширения:
1. Откройте папку `vscode-extension` в VS Code.
2. Нажмите `F5`.
3. В Extension Development Host откройте репозиторий с `epm-docker-test.sh`.
## Действия
-`--latest for app tests`: галочка, добавляющая `--latest` к app-тестам.
-`Run app on systems`: спрашивает приложение и целевые системы.
-`Run app on systems parallel`: спрашивает приложение, затем даёт выбрать пресет или вручную ввести системы, и передаёт `--parallel`.
-`Run app on systems parallel`: спрашивает приложение, затем даёт выбрать пресет или вручную ввести системы, и запускает тесты параллельно.
-`Run app preset`: спрашивает приложение и пресет `main`, `russian` или `all`.
-`--latest for app tests`: checkbox в дереве действий, который добавляет `--latest` к app-тестам.
-`Run exec command`: спрашивает shell-команду и целевые системы или пресет.
-`./bin/epm play <app>`: запускает локальный `epm play` вне Docker.
-`./bin/epm play --latest <app>`: запускает локальный `epm play --latest` вне Docker.
-`Rerun last command`: повторяет последнюю сгенерированную команду.
-`Open log folder`: открывает `${XDG_STATE_HOME:-$HOME/.local/state}/epm-docker-test` или настроенный каталог логов.
-`Open log folder`: открывает каталог логов.
-`Configure`: открывает настройки расширения.
Галочка `--latest for app tests` влияет только на Docker app-тесты: `Run app on systems`, `Run app on systems parallel` и `Run app preset`. На `Run exec command` и локальные `./bin/epm play` кнопки она не влияет.
## Автоподстановка Приложения
Когда расширение спрашивает имя приложения, оно пытается определить его по активному файлу:
Когда расширение спрашивает имя приложения, оно пытается определить его по активному файлу, если файл находится в `play.d`, `pack.d` или `repack.d`. Для `play.d` используется имя play-скрипта без расширения, а не `PKGNAME` внутри скрипта. Для `pack.d` и `repack.d` расширение ищет соответствующий play-скрипт по имени файла и простым переменным вроде `PRODUCT`, `PKGNAME` и `BASEPKGNAME`. Если приложение найдено, расширение показывает кликабельные варианты `OK` и `Cancel`; имя приложения можно поправить в поле выбора перед нажатием `OK`.
- для `play.d/<name>.sh` используется `<name>`;
- для `pack.d` и `repack.d` расширение ищет соответствующий play-скрипт;
-`PKGNAME` внутри `play.d` не используется как имя для `epm play`, потому что запуск всегда идёт по имени play-скрипта.
Примеры:
-`play.d/ayugram.sh` -> `ayugram`, даже если внутри `PKGNAME=ayugram-desktop`;
-`epmDockerTest.localEpmRoot`: локальное дерево `eepm` для кнопок `./bin/epm play`.
-`epmDockerTest.additionalArgs`: дополнительные аргументы, которые будут добавлены перед приложением или `--exec`.
Типичная настройка для репозитория, где `epm-docker-test.sh` лежит в корне, а `eepm` склонирован в подпапку:
```json
{
"epmDockerTest.eepmDir":"./eepm"
}
```
## Автоопределение Путей
Если `scriptPath` не задан, расширение ищет `epm-docker-test.sh` в таких местах:
1. рядом с обнаруженным деревом `eepm`;
2. в корне рабочей папки;
3. в подпапке `epm-docker-test`;
4. рядом с установленным расширением.
Для Docker-тестов автоопределение предпочитает ближайший родительский каталог активного файла, в котором есть и `bin/epm`, и `epm-docker-test.sh`. Этот каталог используется как рабочий каталог команды, а его `epm-docker-test.sh` используется как запускаемый скрипт.
Если `workingDirectory` не задан, используется обнаруженное дерево `eepm`, рабочая папка VS Code или каталог скрипта.