Refuse only GHA _work installs; drop the standalone myBin checkout as the install target.
70 lines
2.5 KiB
Makefile
70 lines
2.5 KiB
Makefile
ROOT_DIR := $(shell pwd)
|
|
|
|
# Prefer PYTHON= override. Else shebang of `mytoolkit` on PATH. Else python3.
|
|
ifndef PYTHON
|
|
CLI_BIN := $(shell command -v mytoolkit 2>/dev/null)
|
|
ifneq ($(CLI_BIN),)
|
|
PYTHON := $(shell head -1 "$(CLI_BIN)" 2>/dev/null | sed 's|^#!||')
|
|
endif
|
|
ifeq ($(strip $(PYTHON)),)
|
|
PYTHON := python3
|
|
endif
|
|
endif
|
|
|
|
.PHONY: help install uninstall sync-skill test
|
|
|
|
help:
|
|
@echo "Usage: make [target]"
|
|
@echo ""
|
|
@echo " install Editable install into CLI Python + sync skill"
|
|
@echo " (refuse GHA runner/_work trees; PYTHON=$(PYTHON))"
|
|
@echo " sync-skill Copy the bundled agent skill to ~/.agents/skills/mytoolkit/"
|
|
@echo " test Run the pytest suite"
|
|
@echo " uninstall Uninstall mytoolkit and remove shell completions"
|
|
|
|
# Truth source for day-to-day work: xiaohe-agent/packages/mytoolkit (submodule).
|
|
# Refuse ephemeral GHA runner checkouts so PATH CLI cannot silently point at _work.
|
|
install:
|
|
@case "$(ROOT_DIR)" in \
|
|
*/_work/*|*/.xiaohe/actions-runner/*) \
|
|
echo "ERROR: refuse install from GHA runner worktree: $(ROOT_DIR)" >&2; \
|
|
echo "Use: cd <xiaohe-agent>/packages/mytoolkit && make install" >&2; \
|
|
echo " or: cd <xiaohe-agent> && make update / ./setup.sh" >&2; \
|
|
exit 1 ;; \
|
|
esac
|
|
@echo "Installing editable mytoolkit"
|
|
@echo " ROOT=$(ROOT_DIR)"
|
|
@echo " PYTHON=$(PYTHON)"
|
|
$(PYTHON) -m pip install -e "$(ROOT_DIR)" --upgrade
|
|
@echo "Installing shell completions…"
|
|
@mytoolkit completion install || echo "Warning: completion install failed"
|
|
@$(MAKE) -s sync-skill
|
|
@echo "Editable install:"
|
|
@$(PYTHON) -m pip show mytoolkit | awk '/^(Name|Version|Location|Editable project location):/'
|
|
@ed="$$($(PYTHON) -m pip show mytoolkit | awk -F': ' '/Editable project location:/ {print $$2}')"; \
|
|
case "$$ed" in \
|
|
*/_work/*|*/.xiaohe/actions-runner/*) \
|
|
echo "ERROR: Editable still points at runner tree: $$ed" >&2; exit 1 ;; \
|
|
esac
|
|
|
|
sync-skill:
|
|
@echo "Syncing agent skill to ~/.agents/skills/mytoolkit/ ..."
|
|
@mkdir -p "$(HOME)/.agents/skills"
|
|
@if command -v rsync >/dev/null 2>&1; then \
|
|
rsync -av --delete "$(ROOT_DIR)/.agents/skills/mytoolkit/" "$(HOME)/.agents/skills/mytoolkit/"; \
|
|
else \
|
|
rm -rf "$(HOME)/.agents/skills/mytoolkit"; \
|
|
cp -R "$(ROOT_DIR)/.agents/skills/mytoolkit" "$(HOME)/.agents/skills/mytoolkit"; \
|
|
fi
|
|
|
|
uninstall:
|
|
@mytoolkit uninstall || $(PYTHON) -m pip uninstall mytoolkit -y
|
|
|
|
test:
|
|
@cd "$(ROOT_DIR)" && \
|
|
if command -v uv >/dev/null 2>&1; then \
|
|
uv run pytest tests/ -q; \
|
|
else \
|
|
$(PYTHON) -m pytest tests/ -q; \
|
|
fi
|