Commit 7bf952ed authored by Ivan Mazhukin's avatar Ivan Mazhukin

add vscode extension sources

parent 94b10240
{
"version": "0.2.0",
"configurations": [
{
"name": "Run Extension",
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
]
}
]
}
.vscode/**
.gitignore
*.vsix
# EPM Docker Test Runner
Расширение VS Code с кнопками для запуска `epm-docker-test.sh`.
## Использование
1. Откройте эту папку в VS Code: `vscode-extension`.
2. Нажмите `F5`, чтобы запустить Extension Development Host.
3. В открывшемся окне откройте репозиторий с `epm-docker-test.sh`.
4. Используйте панель `EPM Test` на боковой панели активности или кнопку `$(beaker) EPM Test` в строке состояния.
Расширение запускает команды в обычном терминале VS Code, поэтому вывод и интерактивные сообщения остаются видимыми.
## Установка
Для повседневного локального использования без упаковки:
```bash
mkdir -p ~/.vscode/extensions/eter.epm-docker-test-runner-0.1.0
rsync -a --delete ./ ~/.vscode/extensions/eter.epm-docker-test-runner-0.1.0/
```
После этого выполните в VS Code команду `Developer: Reload Window`.
Установка через VSIX-пакет:
```bash
cd vscode-extension
npm install -g @vscode/vsce
vsce package
code --install-extension epm-docker-test-runner-0.1.0.vsix
```
Этот же VSIX можно установить через команду VS Code `Extensions: Install from VSIX...`.
## Действия
- `Run app on systems`: спрашивает приложение и целевые системы.
- `Run app on systems parallel`: спрашивает приложение, затем даёт выбрать пресет или вручную ввести системы, и передаёт `--parallel`.
- `Run app preset`: спрашивает приложение и пресет `main`, `russian` или `all`.
- `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` или настроенный каталог логов.
Когда расширение спрашивает имя приложения, оно пытается определить его по активному файлу, если файл находится в `play.d`, `pack.d` или `repack.d`. Сначала проверяются простые shell-переменные вроде `PRODUCT=rstudio` или `PKGNAME=rstudio`; если они не найдены, используется имя файла без расширения. Если приложение найдено, расширение показывает кликабельные варианты `OK` и `Cancel`; имя приложения можно поправить в поле выбора перед нажатием `OK`.
## Избранное
Закреплённые команды можно добавить в настройки рабочей области:
```json
{
"epmDockerTest.favorites": [
{
"label": "ayugram main",
"app": "ayugram",
"preset": "main"
},
{
"label": "os-release fedora",
"exec": "cat /etc/os-release | head -3",
"systems": ["fedora"]
}
]
}
```
## Настройки
Основные настройки:
- `epmDockerTest.scriptPath`: путь к `epm-docker-test.sh`; пустое значение означает автоопределение.
- `epmDockerTest.workingDirectory`: рабочий каталог команды.
- `epmDockerTest.defaultSystems`: системы по умолчанию для запусков app/exec.
- `epmDockerTest.defaultPreset`: пресет по умолчанию для запусков по пресету.
- `epmDockerTest.defaultMode`: `auto`, `local` или `remote`.
- `epmDockerTest.latest`: передавать `--latest`.
- `epmDockerTest.parallelJobs`: передавать `-j N`, если значение больше `1`.
- `epmDockerTest.localEpmRoot`: локальное дерево eepm для команд `./bin/epm play` вне контейнера.
- `epmDockerTest.eepmDir`, `epmDockerTest.eepmSource`, `epmDockerTest.remoteHost`, `epmDockerTest.remoteUser`, `epmDockerTest.builderUser`, `epmDockerTest.builderPath`, `epmDockerTest.logRoot`: соответствуют одноимённым опциям скрипта.
Для Docker-тестов автоопределение предпочитает ближайший родительский каталог активного файла, в котором есть и `bin/epm`, и `epm-docker-test.sh`. Этот каталог используется как рабочий каталог команды, а его `epm-docker-test.sh` используется как запускаемый скрипт.
{
"name": "epm-docker-test-runner",
"displayName": "EPM Docker Test Runner",
"description": "VS Code buttons for running epm-docker-test.sh test commands.",
"version": "0.1.0",
"publisher": "eter",
"engines": {
"vscode": "^1.85.0"
},
"categories": [
"Other"
],
"activationEvents": [
"onStartupFinished",
"onView:epmDockerTest.actions",
"onCommand:epmDockerTest.runQuick",
"onCommand:epmDockerTest.runApp",
"onCommand:epmDockerTest.runAppParallel",
"onCommand:epmDockerTest.runPreset",
"onCommand:epmDockerTest.runExec",
"onCommand:epmDockerTest.rerunLast",
"onCommand:epmDockerTest.runLocalPlay",
"onCommand:epmDockerTest.runLocalPlayLatest"
],
"main": "./extension.js",
"contributes": {
"commands": [
{
"command": "epmDockerTest.runQuick",
"title": "EPM Docker Test: Run..."
},
{
"command": "epmDockerTest.runApp",
"title": "EPM Docker Test: Run App on Systems"
},
{
"command": "epmDockerTest.runAppParallel",
"title": "EPM Docker Test: Run App on Systems in Parallel"
},
{
"command": "epmDockerTest.runPreset",
"title": "EPM Docker Test: Run App Preset"
},
{
"command": "epmDockerTest.runExec",
"title": "EPM Docker Test: Run Exec Command"
},
{
"command": "epmDockerTest.runLocalPlay",
"title": "EPM Docker Test: Local epm play"
},
{
"command": "epmDockerTest.runLocalPlayLatest",
"title": "EPM Docker Test: Local epm play --latest"
},
{
"command": "epmDockerTest.rerunLast",
"title": "EPM Docker Test: Rerun Last Command"
},
{
"command": "epmDockerTest.openLogs",
"title": "EPM Docker Test: Open Log Folder"
},
{
"command": "epmDockerTest.refresh",
"title": "EPM Docker Test: Refresh"
},
{
"command": "epmDockerTest.configure",
"title": "EPM Docker Test: Configure"
}
],
"configuration": {
"title": "EPM Docker Test",
"properties": {
"epmDockerTest.scriptPath": {
"type": "string",
"default": "",
"description": "Path to epm-docker-test.sh. Empty means auto-detect in the workspace."
},
"epmDockerTest.workingDirectory": {
"type": "string",
"default": "",
"description": "Working directory for test commands. Empty means the workspace folder or script directory."
},
"epmDockerTest.defaultSystems": {
"type": "string",
"default": "fedora",
"description": "Default systems used by Run App on Systems."
},
"epmDockerTest.defaultPreset": {
"type": "string",
"enum": [
"main",
"russian",
"all"
],
"default": "main",
"description": "Default preset used by Run App Preset."
},
"epmDockerTest.defaultMode": {
"type": "string",
"enum": [
"auto",
"local",
"remote"
],
"default": "auto",
"description": "Default runner mode."
},
"epmDockerTest.latest": {
"type": "boolean",
"default": false,
"description": "Pass --latest to epm play."
},
"epmDockerTest.parallelJobs": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Parallel jobs. 0 disables -j/--parallel, 1 runs serially, values greater than 1 pass -j N."
},
"epmDockerTest.eepmDir": {
"type": "string",
"default": "",
"description": "Optional --eepm-dir value."
},
"epmDockerTest.eepmSource": {
"type": "string",
"enum": [
"local",
"builder64"
],
"default": "local",
"description": "Value for --eepm-source."
},
"epmDockerTest.remoteHost": {
"type": "string",
"default": "",
"description": "Optional --remote-host value."
},
"epmDockerTest.remoteUser": {
"type": "string",
"default": "",
"description": "Optional --remote-user value."
},
"epmDockerTest.builderUser": {
"type": "string",
"default": "",
"description": "Optional --builder-user value."
},
"epmDockerTest.builderPath": {
"type": "string",
"default": "",
"description": "Optional --builder-path value."
},
"epmDockerTest.logRoot": {
"type": "string",
"default": "",
"description": "Optional --log-root value."
},
"epmDockerTest.localEpmRoot": {
"type": "string",
"default": "/home/vano/eter/static2/eepm",
"description": "Path to the local eepm tree used by local ./bin/epm play commands."
},
"epmDockerTest.additionalArgs": {
"type": "array",
"default": [],
"items": {
"type": "string"
},
"description": "Extra arguments passed before the app/exec target."
},
"epmDockerTest.favorites": {
"type": "array",
"default": [],
"description": "Pinned commands shown as buttons in the EPM Test activity view.",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"app": {
"type": "string"
},
"systems": {
"type": "array",
"items": {
"type": "string"
}
},
"preset": {
"type": "string",
"enum": [
"main",
"russian",
"all"
]
},
"exec": {
"type": "string"
},
"args": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
},
"viewsContainers": {
"activitybar": [
{
"id": "epmDockerTest",
"title": "EPM Test",
"icon": "resources/epm-test.svg"
}
]
},
"views": {
"epmDockerTest": [
{
"id": "epmDockerTest.actions",
"name": "Actions"
}
]
},
"menus": {
"view/title": [
{
"command": "epmDockerTest.refresh",
"when": "view == epmDockerTest.actions",
"group": "navigation"
}
]
}
}
}
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<g fill="none" stroke="#c5c5c5" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round" transform="translate(6.25 0.6) scale(0.48)">
<path d="M9 3h6"/>
<path d="M10 3v5l-5.2 8.4A3 3 0 0 0 7.4 21h9.2a3 3 0 0 0 2.6-4.6L14 8V3"/>
<path d="M7.5 15h9"/>
</g>
<text x="12" y="21.2" fill="#c5c5c5" font-family="Arial, sans-serif" font-size="7.2" font-weight="700" text-anchor="middle">epm</text>
</svg>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment