diff --git a/lang/de.json b/lang/de.json index 35c732f6..3e0bc6e9 100644 --- a/lang/de.json +++ b/lang/de.json @@ -6209,7 +6209,6 @@ "This installation will:": "Diese Installation wird:", "This installer will:": "Dieses Installationsprogramm wird:", "This interface is configured but doesn't exist physically": "Diese Schnittstelle ist konfiguriert, aber physisch nicht vorhanden", - "This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.": "Diese Schnittstelle läuft auf dem Proxmox-Knoten als root. Öffnen Sie proxmenux-oci.sh auf dem Proxmox-Host.", "This is IRREVERSIBLE.": "Das ist irreversibel.", "This is a destructive action": "Dies ist eine destruktive Aktion", "This is a simple configuration change": "Dies ist eine einfache Konfigurationsänderung", diff --git a/lang/es.json b/lang/es.json index 178f0c3c..20186114 100644 --- a/lang/es.json +++ b/lang/es.json @@ -6209,7 +6209,7 @@ "This installation will:": "Esta instalación:", "This installer will:": "Este instalador:", "This interface is configured but doesn't exist physically": "Esta interfaz está configurada pero no existe físicamente.", - "This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.": "Esta interfaz se ejecuta en el nodo Proxmox como root. Abre proxmenux-oci.sh en el host Proxmox.", + "This interface runs on the Proxmox node as root. Open OCI manager Apps from the ProxMenux menu on the Proxmox host.": "Esta interfaz se ejecuta en el nodo Proxmox como root. Abre OCI manager Apps desde el menú de ProxMenux en el host Proxmox.", "This is IRREVERSIBLE.": "Esto es IRREVERSIBLE.", "This is a destructive action": "Esta es una acción destructiva.", "This is a simple configuration change": "Este es un cambio de configuración simple.", diff --git a/lang/fr.json b/lang/fr.json index 1f052d64..2b676ca2 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -6209,7 +6209,6 @@ "This installation will:": "Cette installation va :", "This installer will:": "Ce programme d'installation va :", "This interface is configured but doesn't exist physically": "Cette interface est configurée mais n'existe pas physiquement", - "This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.": "Cette interface fonctionne sur le nœud Proxmox comme racine. Ouvrez proxmenux-oci.sh sur l'hôte Proxmox.", "This is IRREVERSIBLE.": "C’est IRRÉVERSIBLE.", "This is a destructive action": "Il s’agit d’une action destructrice", "This is a simple configuration change": "Il s'agit d'un simple changement de configuration", diff --git a/lang/it.json b/lang/it.json index 7bda9ab7..1834d2f8 100644 --- a/lang/it.json +++ b/lang/it.json @@ -6209,7 +6209,6 @@ "This installation will:": "Questa installazione:", "This installer will:": "Questo programma di installazione:", "This interface is configured but doesn't exist physically": "Questa interfaccia è configurata ma non esiste fisicamente", - "This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.": "Questa interfaccia funziona sul nodo Proxmox come root. Aprire proxmenux-oci.sh sull'host Proxmox.", "This is IRREVERSIBLE.": "questo è IRREVERSIBILE.", "This is a destructive action": "Questa è un'azione distruttiva", "This is a simple configuration change": "Si tratta di una semplice modifica della configurazione", diff --git a/lang/pt.json b/lang/pt.json index aae7cb49..a874f7d8 100644 --- a/lang/pt.json +++ b/lang/pt.json @@ -6209,7 +6209,6 @@ "This installation will:": "Esta instalação irá:", "This installer will:": "Este instalador irá:", "This interface is configured but doesn't exist physically": "Esta interface está configurada, mas não existe fisicamente", - "This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.": "Esta interface é executada no nó Proxmox como root. Abra proxmenux-oci.sh no host Proxmox.", "This is IRREVERSIBLE.": "Isso é IRREVERSÍVEL.", "This is a destructive action": "Esta é uma ação destrutiva", "This is a simple configuration change": "Esta é uma simples mudança de configuração", diff --git a/lang/sk.json b/lang/sk.json index 02b811ca..b9b235b9 100644 --- a/lang/sk.json +++ b/lang/sk.json @@ -6209,7 +6209,6 @@ "This installation will:": "Táto inštalácia urobí toto:", "This installer will:": "Tento inštalátor urobí toto:", "This interface is configured but doesn't exist physically": "Toto rozhranie je nastavené, ale fyzicky neexistuje", - "This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.": "Toto rozhranie beží na uzle Proxmox ako koreň. Otvorte proxmenux-oci.sh na hostiteľovi Proxmox.", "This is IRREVERSIBLE.": "Toto je NEVRATNÉ.", "This is a destructive action": "Toto je deštruktívna akcia", "This is a simple configuration change": "Ide o jednoduchú zmenu nastavenia", diff --git a/lang/sv.json b/lang/sv.json index 1df374a9..42cfb71f 100644 --- a/lang/sv.json +++ b/lang/sv.json @@ -6209,7 +6209,6 @@ "This installation will:": "Denna installation kommer att:", "This installer will:": "Detta installationsprogram kommer att:", "This interface is configured but doesn't exist physically": "Detta gränssnitt är konfigurerat men existerar inte fysiskt", - "This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.": "Detta gränssnitt körs på Proxmox-noden som rot. Öppna proxmenux-oci.sh på Proxmox-värden.", "This is IRREVERSIBLE.": "Detta är IRREVERSIBELT.", "This is a destructive action": "Detta är en destruktiv handling", "This is a simple configuration change": "Detta är en enkel konfigurationsändring", diff --git a/oci/PACKAGE-CONTENTS.md b/oci/PACKAGE-CONTENTS.md index d7d6fc8e..6247e40e 100644 --- a/oci/PACKAGE-CONTENTS.md +++ b/oci/PACKAGE-CONTENTS.md @@ -2,7 +2,6 @@ Runtime distribution only: -- `proxmenux-oci.sh`: entry point, run from this directory. - `catalog/`: index, application templates, curated definitions and overlays. - `src/`: menu and deployment orchestrator. - `remote/`: native Proxmox OCI/LXC installation and lifecycle helpers. diff --git a/oci/README.md b/oci/README.md index 4c4871e3..2405ba10 100644 --- a/oci/README.md +++ b/oci/README.md @@ -58,26 +58,24 @@ compatible merely because conversion succeeded. ## Catalog maintenance -The catalog is generated rather than written by hand. `proxmenux-oci.sh` is the -tool that produces and inspects it, and it is what a contributor adding an -application runs: +The catalog is generated rather than written by hand. A contributor adding an +application runs the orchestrator directly from this directory: ```bash -./proxmenux-oci.sh sync -./proxmenux-oci.sh list --filter sonarr -./proxmenux-oci.sh generate sonarr -./proxmenux-oci.sh show sonarr -GITHUB_TOKEN=github_pat_xxx ./proxmenux-oci.sh generate-all +export PYTHONPATH=src +python3 -m proxmenux_oci sync +python3 -m proxmenux_oci list --filter sonarr +python3 -m proxmenux_oci generate sonarr +python3 -m proxmenux_oci show sonarr +GITHUB_TOKEN=github_pat_xxx python3 -m proxmenux_oci generate-all ``` `generate` writes one application's template from its published recipe; `show` prints what the installation would create, which is the fastest way to see whether a translation came out right before installing anything. -On Debian and Proxmox the launcher reuses the distribution packages -`python3-yaml` and `python3-jsonschema` when they are present, so nothing is -installed into the system Python. Where they are absent, install them with APT -before generating the catalog. +It needs `python3-yaml` and `python3-jsonschema`. On Debian and Proxmox both +are distribution packages; install them with APT before generating the catalog. `GITHUB_TOKEN` is optional and only raises the public API rate limit, which the full `generate-all` pass reaches. Never commit a token; `.env` files are diff --git a/oci/proxmenux-oci.sh b/oci/proxmenux-oci.sh deleted file mode 100755 index efd13d63..00000000 --- a/oci/proxmenux-oci.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail - -ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) -VENV_DIR="$ROOT_DIR/.venv" -REQUIREMENTS="$ROOT_DIR/requirements.txt" -STAMP="$VENV_DIR/.requirements.sha256" - -# The orchestrator lives beside this script, so it has to run from where it -# was installed. Piped from a URL there is no directory to read: $0 is "bash", -# ROOT_DIR becomes the working directory, and the first missing file reports a -# path nobody asked for. -if [ ! -r "$REQUIREMENTS" ] || [ ! -d "$ROOT_DIR/src/proxmenux_oci" ]; then - cat >&2 </dev/null 2>&1 || { - echo "ERROR: Python 3 is required." >&2 - exit 1 -} - -if python3 -c 'import yaml, jsonschema' >/dev/null 2>&1; then - PYTHON=python3 -else - if [[ ! -x "$VENV_DIR/bin/python" ]] || ! "$VENV_DIR/bin/python" -m pip --version >/dev/null 2>&1; then - echo "Preparing the local Python environment..." - rm -rf "$VENV_DIR" - python3 -m venv "$VENV_DIR" || { - echo "ERROR: could not create the virtual environment. On Debian, install python3-venv, python3-yaml and python3-jsonschema." >&2 - exit 1 - } - fi - if command -v shasum >/dev/null 2>&1; then - CURRENT_HASH=$(shasum -a 256 "$REQUIREMENTS" | awk '{print $1}') - else - CURRENT_HASH=$(sha256sum "$REQUIREMENTS" | awk '{print $1}') - fi - INSTALLED_HASH=$(cat "$STAMP" 2>/dev/null || true) - if [[ "$CURRENT_HASH" != "$INSTALLED_HASH" ]]; then - echo "Installing the converter dependencies..." - "$VENV_DIR/bin/python" -m pip install --disable-pip-version-check -r "$REQUIREMENTS" - printf '%s\n' "$CURRENT_HASH" >"$STAMP" - fi - PYTHON="$VENV_DIR/bin/python" -fi - -export PYTHONPATH="$ROOT_DIR/src${PYTHONPATH:+:$PYTHONPATH}" -exec "$PYTHON" -m proxmenux_oci "$@" diff --git a/oci/src/proxmenux_oci/management.py b/oci/src/proxmenux_oci/management.py index 91a2eba4..685017fc 100644 --- a/oci/src/proxmenux_oci/management.py +++ b/oci/src/proxmenux_oci/management.py @@ -141,7 +141,7 @@ def interactive_management(project, ui): def _interactive_management(project, ui): if os.geteuid() != 0 or not shutil.which('pct'): - ui.message(translate('This interface runs on the Proxmox node as root. Open proxmenux-oci.sh on the Proxmox host.'), translate('OCI management')) + ui.message(translate('This interface runs on the Proxmox node as root. Open OCI manager Apps from the ProxMenux menu on the Proxmox host.'), translate('OCI management')) return rows = saved_inventory(project) if not rows: