feat(02-01): add --dry-run mode that prints full bwrap command and exits
This commit is contained in:
parent
72ba48d004
commit
1eddd9336d
1 changed files with 35 additions and 0 deletions
35
claudebox.sh
35
claudebox.sh
|
|
@ -82,6 +82,41 @@ else
|
|||
SANDBOX_CMD=("$CLAUDE_BIN" --dangerously-skip-permissions "${CLAUDE_ARGS[@]}")
|
||||
fi
|
||||
|
||||
# --dry-run: print the bwrap command without executing (D-09, UX-04)
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
{
|
||||
echo "bwrap \\"
|
||||
echo " --clearenv \\"
|
||||
dry_run_i=0
|
||||
while (( dry_run_i < ${#ENV_ARGS[@]} )); do
|
||||
printf ' %s %s %q \\\n' "${ENV_ARGS[$dry_run_i]}" "${ENV_ARGS[$((dry_run_i+1))]}" "${ENV_ARGS[$((dry_run_i+2))]}"
|
||||
(( dry_run_i += 3 ))
|
||||
done
|
||||
echo " --tmpfs / \\"
|
||||
echo " --proc /proc \\"
|
||||
echo " --dev /dev \\"
|
||||
echo " --tmpfs /tmp \\"
|
||||
echo " --ro-bind /nix/store /nix/store \\"
|
||||
echo " --bind /nix/var/nix /nix/var/nix \\"
|
||||
echo " --ro-bind /etc/resolv.conf /etc/resolv.conf \\"
|
||||
echo " --ro-bind /etc/ssl /etc/ssl \\"
|
||||
echo " --ro-bind /etc/static /etc/static \\"
|
||||
echo " --ro-bind /etc/passwd /etc/passwd \\"
|
||||
echo " --ro-bind /etc/group /etc/group \\"
|
||||
echo " --ro-bind /etc/hosts /etc/hosts \\"
|
||||
echo " --ro-bind /etc/nsswitch.conf /etc/nsswitch.conf \\"
|
||||
echo " --ro-bind /etc/nix /etc/nix \\"
|
||||
printf ' --symlink %q /usr/bin/env \\\n' "$(readlink -f "$(command -v env)")"
|
||||
echo " --tmpfs $HOME \\"
|
||||
echo " --bind $HOME/.claudebox $HOME/.claude \\"
|
||||
printf ' --ro-bind %q %s/.gitconfig \\\n' "$GITCONFIG_TMP" "$HOME"
|
||||
echo " --bind $CWD $CWD \\"
|
||||
echo " --chdir $CWD \\"
|
||||
printf ' -- %s\n' "${SANDBOX_CMD[*]}"
|
||||
} >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# exec bwrap (SAND-04 through SAND-15, UX-06, D-01)
|
||||
exec bwrap \
|
||||
--clearenv \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue