-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
73 lines (62 loc) · 3.14 KB
/
Copy pathMakefile
File metadata and controls
73 lines (62 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
IMAGE := sandcastle:zigzag
AUTH_VOLUME := sandcastle-claude-auth
CARGO ?= cargo
RUSTUP ?= rustup
ZIGZAG_MANIFEST := zigzag/Cargo.toml
ZIGZAG_PACKAGE := zigzag-cli
ZIGZAG_BIN := zigzag
ZIGZAG_CLI_PATH := zigzag/crates/zigzag-cli
INSTALL_ROOT ?= $(HOME)/.local
INSTALL_BIN_DIR := $(INSTALL_ROOT)/bin
INSTALL_BIN := $(INSTALL_BIN_DIR)/$(ZIGZAG_BIN)
INSTALL_SHARE_DIR := $(INSTALL_ROOT)/share/zigzag
ZIGZAG_PLUGIN_PACKAGE := zigzag-plugin
ZIGZAG_PLUGIN_TARGET := wasm32-wasip1
ZIGZAG_PLUGIN_WASM := zigzag_plugin.wasm
ZIGZAG_PLUGIN_BUILD := zigzag/target/$(ZIGZAG_PLUGIN_TARGET)/release/$(ZIGZAG_PLUGIN_WASM)
INSTALL_PLUGIN_WASM := $(INSTALL_SHARE_DIR)/$(ZIGZAG_PLUGIN_WASM)
.DEFAULT_GOAL := help
.PHONY: help run build install clean docker login auth-status sandcastle
help:
@echo "Usage: make <target>"
@echo ""
@echo "Targets:"
@echo " run Run zigzag via cargo (pass args with ARGS='...')"
@echo " build Build zigzag binary and native Zellij WASM plugin"
@echo " install Install zigzag to $(INSTALL_BIN) and plugin to $(INSTALL_PLUGIN_WASM)"
@echo " clean Clean Rust build artifacts"
@echo " sandcastle Build Docker image and run Sandcastle"
@echo " login Authenticate Claude Code in container (Claude Max/Pro)"
@echo " auth-status Check authentication status"
@echo " docker Build Docker image only"
run:
$(CARGO) run --manifest-path $(ZIGZAG_MANIFEST) --package $(ZIGZAG_PACKAGE) --bin $(ZIGZAG_BIN) -- $(ARGS)
build:
$(CARGO) build --manifest-path $(ZIGZAG_MANIFEST) --package $(ZIGZAG_PACKAGE) --bin $(ZIGZAG_BIN)
@if command -v "$(RUSTUP)" >/dev/null 2>&1; then $(RUSTUP) target add $(ZIGZAG_PLUGIN_TARGET); else echo "warning: $(RUSTUP) not found; assuming $(ZIGZAG_PLUGIN_TARGET) is already installed"; fi
$(CARGO) build --manifest-path $(ZIGZAG_MANIFEST) --package $(ZIGZAG_PLUGIN_PACKAGE) --target $(ZIGZAG_PLUGIN_TARGET)
install:
$(CARGO) build --manifest-path $(ZIGZAG_MANIFEST) --package $(ZIGZAG_PACKAGE) --bin $(ZIGZAG_BIN) --release
@if command -v "$(RUSTUP)" >/dev/null 2>&1; then $(RUSTUP) target add $(ZIGZAG_PLUGIN_TARGET); else echo "warning: $(RUSTUP) not found; assuming $(ZIGZAG_PLUGIN_TARGET) is already installed"; fi
$(CARGO) build --manifest-path $(ZIGZAG_MANIFEST) --package $(ZIGZAG_PLUGIN_PACKAGE) --release --target $(ZIGZAG_PLUGIN_TARGET)
mkdir -p "$(INSTALL_BIN_DIR)" "$(INSTALL_SHARE_DIR)"
install -m 755 "zigzag/target/release/$(ZIGZAG_BIN)" "$(INSTALL_BIN)"
install -m 644 "$(ZIGZAG_PLUGIN_BUILD)" "$(INSTALL_PLUGIN_WASM)"
clean:
$(CARGO) clean --manifest-path $(ZIGZAG_MANIFEST)
docker:
docker build -t $(IMAGE) .sandcastle/
login: docker
@docker volume inspect $(AUTH_VOLUME) &>/dev/null || docker volume create $(AUTH_VOLUME)
docker run --rm -it \
-v $(AUTH_VOLUME):/home/agent/.claude \
--entrypoint bash $(IMAGE)
auth-status: docker
@docker volume inspect $(AUTH_VOLUME) &>/dev/null || docker volume create $(AUTH_VOLUME)
@docker run --rm \
-v $(AUTH_VOLUME):/home/agent/.claude \
--entrypoint bash $(IMAGE) \
-c "claude auth status"
sandcastle: docker
@docker volume inspect $(AUTH_VOLUME) &>/dev/null || docker volume create $(AUTH_VOLUME)
npm run sandcastle