Skip to content

Commit da3b161

Browse files
hyperpolymathclaude
andcommitted
chore: add UX infrastructure (quickstart, doctor, setup)
Added by ux-rollout.jl batch script. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent acb3be7 commit da3b161

6 files changed

Lines changed: 311 additions & 0 deletions

File tree

Justfile

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -901,3 +901,116 @@ build-riscv:
901901
# Run panic-attacker pre-commit scan
902902
assail:
903903
@command -v panic-attack >/dev/null 2>&1 && panic-attack assail . || echo "panic-attack not found — install from https://github.com/hyperpolymath/panic-attacker"
904+
905+
# ═══════════════════════════════════════════════════════════════════════════════
906+
# ONBOARDING & DIAGNOSTICS
907+
# ═══════════════════════════════════════════════════════════════════════════════
908+
909+
# Check all required toolchain dependencies and report health
910+
doctor:
911+
#!/usr/bin/env bash
912+
echo "═══════════════════════════════════════════════════"
913+
echo " Cloudguard Cli Doctor — Toolchain Health Check"
914+
echo "═══════════════════════════════════════════════════"
915+
echo ""
916+
PASS=0; FAIL=0; WARN=0
917+
check() {
918+
local name="$1" cmd="$2" min="$3"
919+
if command -v "$cmd" >/dev/null 2>&1; then
920+
VER=$("$cmd" --version 2>&1 | head -1)
921+
echo " [OK] $name — $VER"
922+
PASS=$((PASS + 1))
923+
else
924+
echo " [FAIL] $name — not found (need $min+)"
925+
FAIL=$((FAIL + 1))
926+
fi
927+
}
928+
check "just" just "1.25"
929+
check "git" git "2.40"
930+
check "Rust (cargo)" cargo "1.80"
931+
check "Zig" zig "0.13"
932+
# Optional tools
933+
if command -v panic-attack >/dev/null 2>&1; then
934+
echo " [OK] panic-attack — available"
935+
PASS=$((PASS + 1))
936+
else
937+
echo " [WARN] panic-attack — not found (pre-commit scanner)"
938+
WARN=$((WARN + 1))
939+
fi
940+
echo ""
941+
echo " Result: $PASS passed, $FAIL failed, $WARN warnings"
942+
if [ "$FAIL" -gt 0 ]; then
943+
echo " Run 'just heal' to attempt automatic repair."
944+
exit 1
945+
fi
946+
echo " All required tools present."
947+
948+
# Attempt to automatically install missing tools
949+
heal:
950+
#!/usr/bin/env bash
951+
echo "═══════════════════════════════════════════════════"
952+
echo " Cloudguard Cli Heal — Automatic Tool Installation"
953+
echo "═══════════════════════════════════════════════════"
954+
echo ""
955+
if ! command -v cargo >/dev/null 2>&1; then
956+
echo "Installing Rust via rustup..."
957+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
958+
source "$HOME/.cargo/env"
959+
fi
960+
if ! command -v just >/dev/null 2>&1; then
961+
echo "Installing just..."
962+
cargo install just 2>/dev/null || echo "Install just from https://just.systems"
963+
fi
964+
echo ""
965+
echo "Heal complete. Run 'just doctor' to verify."
966+
967+
# Guided tour of the project structure and key concepts
968+
tour:
969+
#!/usr/bin/env bash
970+
echo "═══════════════════════════════════════════════════"
971+
echo " Cloudguard Cli — Guided Tour"
972+
echo "═══════════════════════════════════════════════════"
973+
echo ""
974+
echo '// SPDX-License-Identifier: PMPL-1.0-or-later'
975+
echo ""
976+
echo "Key directories:"
977+
echo " src/ Source code"
978+
echo " ffi/ Foreign function interface (Zig)"
979+
echo " src/abi/ Idris2 ABI definitions"
980+
echo " docs/ Documentation"
981+
echo " tests/ Test suite"
982+
echo " .github/workflows/ CI/CD workflows"
983+
echo " contractiles/ Must/Trust/Dust contracts"
984+
echo " .machine_readable/ Machine-readable metadata"
985+
echo " container/ Container configuration"
986+
echo " examples/ Usage examples"
987+
echo ""
988+
echo "Quick commands:"
989+
echo " just doctor Check toolchain health"
990+
echo " just heal Fix missing tools"
991+
echo " just help-me Common workflows"
992+
echo " just default List all recipes"
993+
echo ""
994+
echo "Read more: README.adoc, EXPLAINME.adoc"
995+
996+
# Show help for common workflows
997+
help-me:
998+
#!/usr/bin/env bash
999+
echo "═══════════════════════════════════════════════════"
1000+
echo " Cloudguard Cli — Common Workflows"
1001+
echo "═══════════════════════════════════════════════════"
1002+
echo ""
1003+
echo "FIRST TIME SETUP:"
1004+
echo " just doctor Check toolchain"
1005+
echo " just heal Fix missing tools"
1006+
echo ""
1007+
echo "DEVELOPMENT:"
1008+
echo " cargo build Build the project"
1009+
echo " cargo test Run tests"
1010+
echo ""
1011+
echo "PRE-COMMIT:"
1012+
echo " just assail Run panic-attacker scan"
1013+
echo ""
1014+
echo "LEARN:"
1015+
echo " just tour Guided project tour"
1016+
echo " just default List all recipes"

QUICKSTART-DEV.adoc

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
= Cloudguard Cli — Developer Quickstart
2+
:toc: preamble
3+
4+
Clone, build, test, contribute.
5+
6+
== Prerequisites
7+
8+
* Git 2.40+
9+
* just (command runner)
10+
* See `just doctor` output for language-specific requirements
11+
12+
== Setup
13+
14+
[source,bash]
15+
----
16+
git clone https://github.com/hyperpolymath/cloudguard-cli
17+
cd cloudguard-cli
18+
just doctor # verify toolchain
19+
just heal # auto-install missing tools
20+
----
21+
22+
== Development Workflow
23+
24+
[source,bash]
25+
----
26+
just tour # understand the codebase
27+
just help-me # see available commands
28+
----
29+
30+
== Before Committing
31+
32+
[source,bash]
33+
----
34+
just assail # run panic-attacker security scan
35+
----
36+
37+
== Contributing
38+
39+
See link:CONTRIBUTING.md[CONTRIBUTING.md] for guidelines.

QUICKSTART-MAINTAINER.adoc

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
= Cloudguard Cli — Maintainer Quickstart
2+
:toc: preamble
3+
4+
Packaging, deployment, and release management.
5+
6+
== Prerequisites
7+
8+
* Git 2.40+
9+
* just (command runner)
10+
* Familiarity with the project (run `just tour` first)
11+
12+
== CI/CD
13+
14+
This project uses GitHub Actions. Workflows are in `.github/workflows/`.
15+
16+
Key workflows:
17+
18+
* `hypatia-scan.yml` — Neurosymbolic security scanning
19+
* `codeql.yml` — Code analysis
20+
* `scorecard.yml` — OpenSSF Scorecard
21+
* `mirror.yml` — GitLab/Bitbucket mirroring
22+
23+
== Releasing
24+
25+
1. Update version in project config
26+
2. Update CHANGELOG.md
27+
3. Tag: `git tag -s v<VERSION>`
28+
4. Push: `git push origin main --tags`
29+
30+
== Container Build (if applicable)
31+
32+
[source,bash]
33+
----
34+
podman build -f Containerfile -t cloudguard-cli:latest .
35+
----
36+
37+
== Mirrors
38+
39+
This repo is mirrored to GitLab and Bitbucket (hyperpolymath accounts)
40+
via the `mirror.yml` workflow.

QUICKSTART-USER.adoc

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
= Cloudguard Cli — User Quickstart
2+
:toc: preamble
3+
4+
Get up and running in 60 seconds.
5+
6+
== Prerequisites
7+
8+
* Git 2.40+
9+
* just (command runner) — https://just.systems
10+
11+
== Install
12+
13+
[source,bash]
14+
----
15+
git clone https://github.com/hyperpolymath/cloudguard-cli
16+
cd cloudguard-cli
17+
just doctor # check toolchain
18+
just heal # auto-install missing tools
19+
----
20+
21+
== First Run
22+
23+
[source,bash]
24+
----
25+
just tour # guided project tour
26+
just help-me # see common workflows
27+
----
28+
29+
== Get Help
30+
31+
* `just help-me` — common workflows
32+
* `just doctor` — diagnose toolchain issues
33+
* https://github.com/hyperpolymath/cloudguard-cli/issues — report bugs
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# Intentfile (A2ML Canonical)
3+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)
4+
5+
@abstract:
6+
Declared intent and purpose for Cloudguard Cli.
7+
@end
8+
9+
## Purpose
10+
11+
Cloudguard Cli — // SPDX-License-Identifier: PMPL-1.0-or-later
12+
13+
## Anti-Purpose
14+
15+
This project is NOT:
16+
- A fork or wrapper around another tool
17+
- A monorepo (unless explicitly structured as one)
18+
19+
## If In Doubt
20+
21+
If you are unsure whether a change is in scope, ask.
22+
Sensitive areas: ABI definitions, license headers, CI workflows.

setup.sh

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/env bash
2+
# SPDX-License-Identifier: PMPL-1.0-or-later
3+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)
4+
#
5+
# Cloudguard Cli — Universal Setup Script
6+
# Detects platform and shell, installs just, then hands off to Justfile.
7+
8+
set -euo pipefail
9+
10+
echo "═══════════════════════════════════════════════════"
11+
echo " Cloudguard Cli — Setup"
12+
echo "═══════════════════════════════════════════════════"
13+
echo ""
14+
15+
# Platform detection
16+
OS="$(uname -s)"
17+
ARCH="$(uname -m)"
18+
echo "Platform: $OS $ARCH"
19+
20+
# Shell detection
21+
CURRENT_SHELL="$(basename "$SHELL" 2>/dev/null || echo "unknown")"
22+
echo "Shell: $CURRENT_SHELL"
23+
echo ""
24+
25+
# Check for just
26+
if ! command -v just >/dev/null 2>&1; then
27+
echo "just (command runner) is required but not installed."
28+
echo ""
29+
case "$OS" in
30+
Linux)
31+
if command -v cargo >/dev/null 2>&1; then
32+
echo "Installing just via cargo..."
33+
cargo install just
34+
elif command -v brew >/dev/null 2>&1; then
35+
echo "Installing just via Homebrew..."
36+
brew install just
37+
else
38+
echo "Install just from: https://just.systems/man/en/installation.html"
39+
exit 1
40+
fi
41+
;;
42+
Darwin)
43+
if command -v brew >/dev/null 2>&1; then
44+
echo "Installing just via Homebrew..."
45+
brew install just
46+
else
47+
echo "Install Homebrew first: https://brew.sh"
48+
echo "Then: brew install just"
49+
exit 1
50+
fi
51+
;;
52+
*)
53+
echo "Install just from: https://just.systems/man/en/installation.html"
54+
exit 1
55+
;;
56+
esac
57+
echo ""
58+
fi
59+
60+
echo "Running diagnostics..."
61+
just doctor
62+
63+
echo ""
64+
echo "Setup complete. Run 'just help-me' for common workflows."

0 commit comments

Comments
 (0)