#!/usr/bin/env bash set -Eeuo pipefail IFS=$'\n\t' log() { printf '%s\n' "$*"; } log_err() { printf 'ERR: %s\n' "$*" >&2; } usage() { cat <<'USG' Usage: omnicron.sh [args] Subcommands: log [k=v ...] Structured event log notify Ops notification artifact-put Upload artifact (no-op shim) artifact-get Download artifact (no-op shim) Notes: - Degrades to no-op if real 'omnicron' CLI not found. - Reads env: OMNICRON_URL, OMNICRON_TOKEN, OMNICRON_ENV USG } cleanup() { :; } trap cleanup EXIT has_real_cli() { command -v omnicron >/dev/null 2>&1; } sub=${1:-} shift || true if [[ -z "${sub}" ]]; then usage; exit 1 fi if has_real_cli; then # Delegate to real CLI if available omnicron "${sub}" "$@" || { log_err "real omnicron CLI failed; falling back to shim" } fi case "${sub}" in log) evt=${1:-} shift || true [[ -z "${evt}" ]] && { log_err "event required"; exit 2; } printf '{"type":"event","event":"%s","env":"%s","args_raw":"%s"}\n' \ "$evt" "${OMNICRON_ENV:-dev}" "$*" ;; notify) level=${1:-}; message=${2:-} [[ -z "${level}" || -z "${message}" ]] && { log_err "level and message required"; exit 2; } printf '{"type":"notify","level":"%s","message":"%s","env":"%s"}\n' \ "$level" "$message" "${OMNICRON_ENV:-dev}" ;; artifact-put) path=${1:-}; name=${2:-} [[ -z "${path}" || -z "${name}" ]] && { log_err "path and name required"; exit 2; } printf '{"type":"artifact_put","path":"%s","name":"%s","provider":"shim"}\n' \ "$path" "$name" ;; artifact-get) name=${1:-}; dest=${2:-} [[ -z "${name}" || -z "${dest}" ]] && { log_err "name and dest required"; exit 2; } printf '{"type":"artifact_get","name":"%s","dest":"%s","provider":"shim"}\n' \ "$name" "$dest" ;; --help|-h|help) usage; ;; *) log_err "unknown subcommand: ${sub}"; usage; exit 2; ;; esac