feat(plugins): ping no catálogo, ausente não interrompe o run
A entrada fica no mesmo registro. Sem o build nesta máquina o comando segue só com os plugins que existem. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
beaf9190c9
commit
61753c421a
3 files changed
+32
-5
No files matched your search
+1
-1
@@ -25,7 +25,7 @@ del /q "%CD%\.pitiupi\plugins\*.jar" 2>nul
|
||||
|
||||
set "PITIUPI_REPO=%CD%"
|
||||
set "PITIUPI_PLUGINS=%CD%\.pitiupi\plugins"
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$repo = $env:PITIUPI_REPO; $dest = $env:PITIUPI_PLUGINS; $reg = Get-Content -Raw (Join-Path $repo 'plugins.registry.json') | ConvertFrom-Json; foreach ($p in $reg.plugins) { $dir = Join-Path $repo ($p.dir -replace '/','\'); if ($p.build -ne 'ant') { Write-Error ('build nao suportado neste prompt: ' + $p.build); exit 1 }; & ant -f (Join-Path $dir 'build.xml') jar; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $src = Join-Path $dir ($p.jar -replace '/','\'); if (-not (Test-Path -LiteralPath $src)) { Write-Error ('JAR ausente: ' + $src); exit 1 }; Copy-Item -LiteralPath $src -Destination (Join-Path $dest ($p.id + '.jar')) -Force }"
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$repo = $env:PITIUPI_REPO; $dest = $env:PITIUPI_PLUGINS; $reg = Get-Content -Raw (Join-Path $repo 'plugins.registry.json') | ConvertFrom-Json; foreach ($p in @($reg.plugins)) { $dir = Join-Path $repo ($p.dir -replace '/','\'); $marker = Join-Path $dir 'build.xml'; if ($p.build -eq 'make') { $marker = Join-Path $dir 'Makefile' }; if (-not (Test-Path -LiteralPath $marker)) { Write-Host ('Plugin ' + $p.id + ' ausente nesta maquina; nao sera carregado.'); continue }; if ($p.build -ne 'ant') { Write-Error ('build nao suportado neste prompt: ' + $p.build); exit 1 }; & ant -f (Join-Path $dir 'build.xml') jar; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $src = Join-Path $dir ($p.jar -replace '/','\'); if (-not (Test-Path -LiteralPath $src)) { Write-Error ('JAR ausente: ' + $src); exit 1 }; Copy-Item -LiteralPath $src -Destination (Join-Path $dest ($p.id + '.jar')) -Force }"
|
||||
if errorlevel 1 exit /b 1
|
||||
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0lib\launch-windows.ps1" -PitiupiHome "%CD%\.pitiupi" -Jar "%CD%\pitiupi\dist\pitiupi.jar"
|
||||
|
||||
+24
-4
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build, instala plugins em PITIUPI_HOME/plugins e executa o núcleo (catálogo: plugins.registry.json).
|
||||
# Plugin do catálogo sem build.xml ou Makefile nesta máquina é ignorado.
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
@@ -49,7 +50,7 @@ repo = Path(sys.argv[2])
|
||||
mode = sys.argv[3]
|
||||
|
||||
data = json.loads(registry_path.read_text(encoding="utf-8"))
|
||||
plugins = data.get("plugins", [])
|
||||
plugins = list(data.get("plugins", []))
|
||||
|
||||
def by_id(pid):
|
||||
for p in plugins:
|
||||
@@ -179,17 +180,25 @@ build_core() {
|
||||
|
||||
build_one_plugin() {
|
||||
local id="$1"
|
||||
local dir build_cmd
|
||||
local dir build_cmd marker
|
||||
dir="$(registry_python field "$id" dir)"
|
||||
build_cmd="$(registry_python field "$id" build)"
|
||||
case "$build_cmd" in
|
||||
ant) (cd "${REPO_ROOT}/${dir}" && ant jar) ;;
|
||||
make) (cd "${REPO_ROOT}/${dir}" && make) ;;
|
||||
ant) marker="${REPO_ROOT}/${dir}/build.xml" ;;
|
||||
make) marker="${REPO_ROOT}/${dir}/Makefile" ;;
|
||||
*)
|
||||
printf 'ERRO: build desconhecido para %s: %s\n' "$id" "$build_cmd" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
if [[ ! -f "${marker}" ]]; then
|
||||
printf 'Plugin %s ausente nesta máquina; não será carregado.\n' "$id"
|
||||
return 0
|
||||
fi
|
||||
case "$build_cmd" in
|
||||
ant) (cd "${REPO_ROOT}/${dir}" && ant jar) ;;
|
||||
make) (cd "${REPO_ROOT}/${dir}" && make) ;;
|
||||
esac
|
||||
}
|
||||
|
||||
build_plugins_from_selection() {
|
||||
@@ -232,6 +241,17 @@ link_plugins_from_selection() {
|
||||
link_name="${id}.jar"
|
||||
src_abs="${REPO_ROOT}/${dir}/${jar_rel}"
|
||||
if [[ ! -f "${src_abs}" ]]; then
|
||||
local marker=""
|
||||
local build_cmd
|
||||
build_cmd="$(registry_python field "$id" build)"
|
||||
case "$build_cmd" in
|
||||
ant) marker="${REPO_ROOT}/${dir}/build.xml" ;;
|
||||
make) marker="${REPO_ROOT}/${dir}/Makefile" ;;
|
||||
esac
|
||||
if [[ -z "${marker}" || ! -f "${marker}" ]]; then
|
||||
printf 'Plugin %s ausente nesta máquina; não será carregado.\n' "$id"
|
||||
continue
|
||||
fi
|
||||
printf 'ERRO: JAR ausente: %s\n' "${src_abs}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in new issue
Block a user