From 22494e0856634bc93026d20d5fe2a1b8faa1562b Mon Sep 17 00:00:00 2001 From: t0kubetsu Date: Tue, 9 Jun 2026 17:34:45 +0200 Subject: [PATCH 1/7] fix(devkit): remove SC2034 dead variable assignments Remove DEFAULT_OUTPUT_JSON/OUTPUT_JSON mechanism in proxmox_vm.vm_id.get_usage.to.jsons.sh (--json/--text output modes were a planned TODO never implemented; OUTPUT_JSON was never read). Remove SIMPLE_TYPE and SIMPLE_VALUE dead local declarations in devkit_proxmox.STDIN.normalize.to.jsons.sh (code re-checks STDIN_DATA directly via regex at the usage sites). --- devkit_proxmox.STDIN.normalize.to.jsons.sh | 10 ---------- proxmox_vm.vm_id.get_usage.to.jsons.sh | 6 ------ 2 files changed, 16 deletions(-) diff --git a/devkit_proxmox.STDIN.normalize.to.jsons.sh b/devkit_proxmox.STDIN.normalize.to.jsons.sh index 0bf33d1..66b5d92 100755 --- a/devkit_proxmox.STDIN.normalize.to.jsons.sh +++ b/devkit_proxmox.STDIN.normalize.to.jsons.sh @@ -5,7 +5,6 @@ parse_stdin_schema() { local SCHEMA=("$@") local STDIN_DATA KEY_NAME KEY_TYPE - local SIMPLE_VALUE SIMPLE_TYPE local KV_PAIR=() if [ -t 0 ]; then @@ -15,15 +14,6 @@ parse_stdin_schema() { STDIN_DATA=$(cat -) - if [[ "$STDIN_DATA" =~ ^[0-9]+$ ]]; then - SIMPLE_TYPE="INT" - SIMPLE_VALUE="$STDIN_DATA" - - elif [[ "$STDIN_DATA" =~ ^[a-zA-Z0-9._-]+$ ]]; then - SIMPLE_TYPE="STR" - SIMPLE_VALUE="$STDIN_DATA" - fi - # # PURE TEXT CASE # diff --git a/proxmox_vm.vm_id.get_usage.to.jsons.sh b/proxmox_vm.vm_id.get_usage.to.jsons.sh index 0717d73..9d29192 100755 --- a/proxmox_vm.vm_id.get_usage.to.jsons.sh +++ b/proxmox_vm.vm_id.get_usage.to.jsons.sh @@ -9,8 +9,6 @@ set -euo pipefail ACTION="vm_list_usage" -# DEFAULT_OUTPUT_JSON=true # todo -DEFAULT_OUTPUT_JSON=true # ARG_VM_NAME_FILTER="" #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### @@ -75,16 +73,12 @@ proxmox__inc.warmup_checks_stdin.sh # #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### -OUTPUT_JSON="$DEFAULT_OUTPUT_JSON" - while [[ $# -gt 0 ]]; do case "$1" in --json) - OUTPUT_JSON=true shift ;; --text) - OUTPUT_JSON=false shift ;; -*) From 9a2d0b0e08fac79154f3c25e8bf35eb2e4d74c10 Mon Sep 17 00:00:00 2001 From: t0kubetsu Date: Tue, 9 Jun 2026 10:16:36 +0200 Subject: [PATCH 2/7] chore(ci): add CI workflow and Dependabot hardening - CI runs inside containerised Debian/Python/Node images (not bare ubuntu-latest) - Dependabot enabled for package ecosystem + github-actions --- .github/dependabot.yml | 7 +++++++ .github/workflows/ci.yml | 27 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..50e50eb --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: monthly + labels: [dependencies, ci] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9f5a355 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,27 @@ +name: CI +on: + push: + branches: [main, dev, 'feature/**'] + pull_request: + branches: [main, dev] +jobs: + shellcheck: + name: ShellCheck + runs-on: ubuntu-latest + container: + image: debian:trixie-slim + steps: + - run: apt-get update && apt-get install -y --no-install-recommends git shellcheck + - uses: actions/checkout@v4 + - run: find . -name '*.sh' -exec shellcheck --severity=warning {} + + + ansible-lint: + name: Ansible Lint + runs-on: ubuntu-latest + container: + image: python:3.13-slim + steps: + - run: apt-get update && apt-get install -y --no-install-recommends git + - uses: actions/checkout@v4 + - run: pip install --no-cache-dir ansible-lint + - run: ansible-lint . --profile=production From 616bb059c8333aac3ee714a2ede920be9385819a Mon Sep 17 00:00:00 2001 From: t0kubetsu Date: Tue, 9 Jun 2026 10:30:25 +0200 Subject: [PATCH 3/7] fix(ci): add ca-certificates to debian:trixie-slim apt install debian:trixie-slim ships without CA certificates; actions/checkout@v4 clones via HTTPS and fails with "SSL CA cert" error without them. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9f5a355..448d3c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: container: image: debian:trixie-slim steps: - - run: apt-get update && apt-get install -y --no-install-recommends git shellcheck + - run: apt-get update && apt-get install -y --no-install-recommends ca-certificates git shellcheck - uses: actions/checkout@v4 - run: find . -name '*.sh' -exec shellcheck --severity=warning {} + From d01a3506f26a25be7050b113d925c14ca1b38732 Mon Sep 17 00:00:00 2001 From: t0kubetsu Date: Tue, 9 Jun 2026 11:56:52 +0200 Subject: [PATCH 4/7] =?UTF-8?q?ci(workflow):=20fix=20push=20branch=20trigg?= =?UTF-8?q?ers=20=E2=80=94=20feat/**=20+=20fix/**=20replace=20feature/**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 448d3c7..3bf2f71 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ name: CI on: push: - branches: [main, dev, 'feature/**'] + branches: [main, dev, 'feat/**', 'fix/**'] pull_request: branches: [main, dev] jobs: From dd00c8de26b43399b2b9930f5446fe8b6b517e0c Mon Sep 17 00:00:00 2001 From: t0kubetsu Date: Tue, 9 Jun 2026 17:35:51 +0200 Subject: [PATCH 5/7] fix(ci): bump actions/checkout from v4 to v6 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3bf2f71..42c72ee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: image: debian:trixie-slim steps: - run: apt-get update && apt-get install -y --no-install-recommends ca-certificates git shellcheck - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - run: find . -name '*.sh' -exec shellcheck --severity=warning {} + ansible-lint: @@ -22,6 +22,6 @@ jobs: image: python:3.13-slim steps: - run: apt-get update && apt-get install -y --no-install-recommends git - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - run: pip install --no-cache-dir ansible-lint - run: ansible-lint . --profile=production From 7b969ffcfd539a474e73e749c024f565c3c5a5d8 Mon Sep 17 00:00:00 2001 From: t0kubetsu Date: Tue, 11 Aug 2026 16:09:03 +0200 Subject: [PATCH 6/7] =?UTF-8?q?fix(ci):=20drop=20ansible-lint=20job=20?= =?UTF-8?q?=E2=80=94=20repo=20contains=20no=20Ansible=20YAML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The production-profile ansible-lint job answered pparage's review question the hard way: despite the repo name, the tree holds only shell scripts, ansible.cfg variants, Python callback plugins and JSON examples — the only YAML is .github/ itself. A lint gate for absent tech is noise; re-add with profile basic + .ansible-lint (like the sibling repos) if roles or playbooks ever land here. ShellCheck gate verified locally (shellcheck 0.11.0, --severity=warning, all 106 scripts): only failures are the 3 SC2034 dead variables already fixed by PR #118 — merge #118 first. --- .github/workflows/ci.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42c72ee..b4dbc90 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,13 +15,7 @@ jobs: - uses: actions/checkout@v6 - run: find . -name '*.sh' -exec shellcheck --severity=warning {} + - ansible-lint: - name: Ansible Lint - runs-on: ubuntu-latest - container: - image: python:3.13-slim - steps: - - run: apt-get update && apt-get install -y --no-install-recommends git - - uses: actions/checkout@v6 - - run: pip install --no-cache-dir ansible-lint - - run: ansible-lint . --profile=production + # No ansible-lint job: despite the repo name there are no roles or + # playbooks here — only shell scripts, ansible.cfg variants and Python + # callback plugins. Re-add it (profile: basic + .ansible-lint config, + # like the sibling repos) if Ansible YAML ever lands in this tree. From fd0d3de53589e8a4eaea4ac476c5c01133ae2b84 Mon Sep 17 00:00:00 2001 From: t0kubetsu Date: Tue, 11 Aug 2026 16:27:52 +0200 Subject: [PATCH 7/7] fix(devkit): remove dead ACTION assignments in the two _with_api list scripts (SC2034) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Their jq output hardcodes action: "vm_list" — the variable was never wired in, unlike the other _with_api scripts which pass --arg action "$ACTION". Same dead-var removal approach as #118. Verified: shellcheck --severity=warning green across the whole tree. --- proxmox_vm.list_with_api.to.jsons.sh | 1 - ...mox_vm.vm_id.list_vm_and_extract_vm_name_with_api.to.jsons.sh | 1 - 2 files changed, 2 deletions(-) diff --git a/proxmox_vm.list_with_api.to.jsons.sh b/proxmox_vm.list_with_api.to.jsons.sh index a2980be..e587615 100755 --- a/proxmox_vm.list_with_api.to.jsons.sh +++ b/proxmox_vm.list_with_api.to.jsons.sh @@ -11,7 +11,6 @@ set -euo pipefail -ACTION="vm_list" SOURCE_TAG="proxmox-api" DEFAULT_OUTPUT_JSON=true ARG_VM_NAME_FILTER="" diff --git a/proxmox_vm.vm_id.list_vm_and_extract_vm_name_with_api.to.jsons.sh b/proxmox_vm.vm_id.list_vm_and_extract_vm_name_with_api.to.jsons.sh index 49e85d3..93eeb54 100755 --- a/proxmox_vm.vm_id.list_vm_and_extract_vm_name_with_api.to.jsons.sh +++ b/proxmox_vm.vm_id.list_vm_and_extract_vm_name_with_api.to.jsons.sh @@ -10,7 +10,6 @@ set -euo pipefail -ACTION="vm_list" SOURCE_TAG="proxmox-api" DEFAULT_OUTPUT_JSON=true