garaje 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,6 +21,54 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
21
21
  && apt-get update && apt-get install -y --no-install-recommends gh docker-ce-cli docker-buildx-plugin docker-compose-plugin \
22
22
  && rm -rf /var/lib/apt/lists/*
23
23
 
24
+ # --- Per-bay toolchains -------------------------------------------------------
25
+ # GENERATED by `garaje park` from every parked bay's recipe.yaml — the same
26
+ # declaration the bay images build from. The agent's container therefore carries
27
+ # exactly the runtimes of the code it edits, which is what lets pi-lens spawn a
28
+ # language server and a linter per bay.
29
+ #
30
+ # These layers sit BEFORE the pi/npm layers on purpose. Docker invalidates every
31
+ # layer after a changed one; Ruby compiles from source under mise (~5-10 min).
32
+ # A PI_VERSION bump is frequent and must NOT recompile Ruby. Parking a new bay
33
+ # is rare, and may legitimately pay that recompile cost.
34
+ COPY toolchain/ /tmp/toolchain/
35
+
36
+ # The apt list is a bare, newline-separated file (no comments — xargs would read
37
+ # a '#' line as a package name). Empty for a garaje with no bays, hence the -s test.
38
+ RUN if [ -s /tmp/toolchain/apt-packages.txt ]; then \
39
+ apt-get update \
40
+ && xargs -a /tmp/toolchain/apt-packages.txt \
41
+ apt-get install -y --no-install-recommends \
42
+ && rm -rf /var/lib/apt/lists/*; \
43
+ fi
44
+
45
+ # mise in SHIMS mode. A shim resolves its tool's version from the CALLING
46
+ # directory — and pi-lens spawns language servers with cwd = the bay root. So
47
+ # each bay's own .ruby-version selects its runtime with zero integration code,
48
+ # and two bays on different Ruby versions each get the right one.
49
+ ENV MISE_DATA_DIR=/root/.local/share/mise
50
+ ENV PATH=/root/.local/share/mise/shims:/root/.local/bin:$PATH
51
+
52
+ # Pinned for build reproducibility: an unpinned installer means two teammates
53
+ # who build a month apart get different mise versions — not theoretical, this
54
+ # exact version's install already warns "precompiled ruby will be the default
55
+ # in 2026.8.0". Bump deliberately, matching PI_VERSION's own pinning discipline.
56
+ ARG MISE_VERSION=2026.7.5
57
+ RUN export MISE_VERSION="${MISE_VERSION}" \
58
+ && curl -fsSL https://mise.run | sh \
59
+ && mkdir -p /root/.config/mise \
60
+ && cp /tmp/toolchain/mise.toml /root/.config/mise/config.toml \
61
+ && mise install --yes \
62
+ && mise reshim \
63
+ && rm -rf /tmp/toolchain
64
+
65
+ # pi-side project dependencies live on the pi-deps volume (compose.framework.yaml).
66
+ # ONE shared BUNDLE_PATH serves EVERY bay: bundler namespaces gems by Ruby ABI
67
+ # directory and activates strictly from the calling project's Gemfile.lock. So
68
+ # `bundle exec rubocop` in bays/rtfm gets rtfm's pinned cops and cannot see
69
+ # stacey's gems. Verified against ruby:3.4-slim — see the design spec §2.
70
+ ENV BUNDLE_PATH=/garaje/deps/bundle
71
+
24
72
  # Pi version is pinned in pi/PI_VERSION so a pi bump is a one-file diff
25
73
  # teammates pick up on `git pull && garaje up --build`. Bring the file in first
26
74
  # as its own layer so editing it busts the cache for the npm install layer
File without changes
@@ -0,0 +1,14 @@
1
+ # GENERATED by `garaje park` from bays/*/recipe.yaml. Do not edit by hand.
2
+ #
3
+ # The union of every parked bay's declared runtimes. mise installs all of
4
+ # them; each bay's own .ruby-version / .node-version then selects which one
5
+ # applies inside that bay. pi-lens spawns language servers with cwd = the bay
6
+ # root, so the mise shim on PATH resolves the right version with no glue.
7
+ #
8
+ # bays: (none)
9
+
10
+ [tools]
11
+
12
+ [settings]
13
+ # Honor each bay's .ruby-version / .node-version (they already ship them).
14
+ idiomatic_version_file_enable_tools = ["node", "ruby"]