refactor: separated command script
Some checks failed
railiance-tests / smoke (push) Has been cancelled

This commit is contained in:
2025-09-13 02:39:47 +02:00
parent 0bfdf465c1
commit 7530468d80
3 changed files with 76 additions and 29 deletions

View File

@@ -0,0 +1,55 @@
#!/usr/bin/env bash
# tools/cmd/railiance-doctor — workstation & provisioning toolchain checks
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
source "${ROOT}/lib/railiance-print.sh"
ver() {
local cmd="$1" out=""
if command -v "$cmd" >/dev/null 2>&1; then
out="$("$cmd" --version 2>/dev/null || "$cmd" -V 2>/dev/null || "$cmd" version 2>/dev/null || true)"
echo "$out" | head -n1
else
echo ""
fi
}
have(){ command -v "$1" >/dev/null 2>&1; }
OP_REQ=(curl git jq python3 ssh)
PROV_REQ=(ansible)
PROV_OPT=(age docker helm kubectl kustomize podman rsync scp sops tar yq)
missing_req=0
print_hdr "Operator toolchain (required on your workstation)"
for cmd in "${OP_REQ[@]}"; do
if have "$cmd"; then ok "$cmd" "$(ver "$cmd")"; else bad "$cmd" "missing"; missing_req=1; fi
done
print_hdr "Provisioning toolchain"
for cmd in "${PROV_REQ[@]}"; do
if have "$cmd"; then ok "$cmd" "$(ver "$cmd")"; else bad "$cmd" "missing (needed to run playbooks)"; missing_req=1; fi
done
for cmd in "${PROV_OPT[@]}"; do
if have "$cmd"; then ok "$cmd" "$(ver "$cmd")"; else warn "$cmd" "not installed (only needed if you use related features)"; fi
done
cat <<'NOTE'
Notes:
- Operator tools are needed on your local machine to drive Railiance.
- Provisioning:
• ansible — required to bootstrap hosts
• kubectl/helm/kustomize — needed once Kubernetes is up
• sops/age — for managing encrypted secrets (recommended)
• docker or podman — only if building images locally
• yq — handy for YAML manipulation in scripts
• rsync/scp/tar — file transfer & packaging utilities
TIP: On Debian/Ubuntu install basics with:
sudo apt-get update && sudo apt-get install -y \
curl git jq python3 openssh-client ansible rsync tar
NOTE
exit $missing_req