Skip to content

Commit 6d9c39f

Browse files
committed
Declare docker-dev in a SaaS-only mise overlay
SaaS setup cloned/pulled docker-dev imperatively (gh repo clone / git pull) with none of the fleet's origin or auth handling. Replace it with mise's declarative repos phase, scoped to a mise.saas.toml environment overlay loaded only under MISE_ENV=saas — private Basecamp infrastructure is declared ONLY there, never in the OSS root .mise.toml, and OSS setups never load or reach it. saas/bin/setup now trusts the overlay, carries the fleet's fenced docker-dev origin block (shipyard-block: docker-dev-origin v1 — https-auth probe before fresh clones and canonical-ssh rewrites, guided stop on missing auth, forks/dirty left for mise), and converges the checkout with MISE_ENV=saas mise bootstrap --only repos --yes before starting services. SaaS remains macOS/Omarchy-only, per the platform gate.
1 parent 5a2ba43 commit 6d9c39f

2 files changed

Lines changed: 49 additions & 2 deletions

File tree

mise.saas.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# SaaS-only mise overlay, loaded when MISE_ENV=saas (mise environment
2+
# configs: mise.saas.toml loads above .mise.toml in the same directory).
3+
#
4+
# Private Basecamp infrastructure is declared ONLY here — the OSS root
5+
# .mise.toml must never reference it. Consumed by saas/bin/setup, which runs
6+
# the repos phase under MISE_ENV=saas after proving https git auth.
7+
min_version = "2026.7.5"
8+
9+
[bootstrap.repos]
10+
"~/Work/basecamp/docker-dev" = { url = "https://github.com/basecamp/docker-dev.git", ref = "master" }

saas/bin/setup

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,46 @@ set -eo pipefail
44
# SaaS-specific setup tasks
55
# This script is called from the main Fizzy bin/setup when SAAS is enabled
66

7+
# docker-dev is declared in mise.saas.toml — the SaaS-only overlay, loaded via
8+
# MISE_ENV=saas — and converged declaratively through mise's repos phase. The
9+
# OSS root .mise.toml never references it; OSS setups never reach this file.
10+
step "Trusting SaaS mise overlay" mise trust --yes "$app_root/mise.saas.toml"
11+
12+
# shipyard-block: docker-dev-origin v1
13+
# mise syncs docker-dev from the declared https URL: its repos preflight doesn't
14+
# equate ssh with https origins, and fresh clones use the URL as-is. docker-dev is
15+
# private and gh being installed does not imply its git credential helper is
16+
# configured (gh auth setup-git is a separate step), so prove https auth with a
17+
# noninteractive probe wherever mise is about to need it: before a fresh clone, and
18+
# before rewriting the canonical ssh origin of an existing checkout. On failure,
19+
# stop with guidance and leave any working ssh remote untouched. Forks, mirrors,
20+
# and dirty checkouts are left for mise to flag.
21+
docker_dev="$HOME/Work/basecamp/docker-dev"
22+
docker_dev_url="https://github.com/basecamp/docker-dev.git"
23+
docker_dev_https_ok() {
24+
GIT_TERMINAL_PROMPT=0 GIT_ASKPASS=true git ls-remote "$docker_dev_url" HEAD > /dev/null 2>&1
25+
}
26+
docker_dev_auth_required() {
27+
echo "docker-dev syncs from $docker_dev_url, but https git auth isn't set up." >&2
28+
echo "Run: gh auth setup-git — then rerun bin/setup." >&2
29+
exit 1
30+
}
31+
if [ ! -e "$docker_dev/.git" ]; then
32+
docker_dev_https_ok || docker_dev_auth_required
33+
else
34+
case "$(git -C "$docker_dev" config --get remote.origin.url || true)" in
35+
git@github.com:basecamp/docker-dev|git@github.com:basecamp/docker-dev.git|ssh://git@github.com/basecamp/docker-dev|ssh://git@github.com/basecamp/docker-dev.git)
36+
docker_dev_https_ok || docker_dev_auth_required
37+
git -C "$docker_dev" remote set-url origin "$docker_dev_url";;
38+
esac
39+
fi
40+
# shipyard-block-end: docker-dev-origin
41+
42+
step "Syncing docker-dev" env MISE_ENV=saas mise bootstrap --only repos --yes
43+
744
if [ -e tmp/minio-dev.txt ]; then
8-
step "Starting Docker services" bash -c "[ -d ~/Work/basecamp/docker-dev ] && git -C ~/Work/basecamp/docker-dev pull || gh repo clone basecamp/docker-dev ~/Work/basecamp/docker-dev && ~/Work/basecamp/docker-dev/setup minio"
45+
step "Starting Docker services" ~/Work/basecamp/docker-dev/setup minio
946
step "Configuring MinIO" bin/minio-setup
1047
fi
1148

12-
step "Starting mysql" bash -c "[ -d ~/Work/basecamp/docker-dev ] && git -C ~/Work/basecamp/docker-dev pull || gh repo clone basecamp/docker-dev ~/Work/basecamp/docker-dev && ~/Work/basecamp/docker-dev/setup mysql80"
49+
step "Starting mysql" ~/Work/basecamp/docker-dev/setup mysql80

0 commit comments

Comments
 (0)