Files
upstream-atomic-crm/makefile
upstream-mirror 93ecc1a6f8
Some checks failed
✅ Check / 🔬 ESLint (push) Failing after 21s
✅ Check / 🏷️ Typecheck (push) Failing after 11s
✅ Check / 🔎 Test (push) Failing after 11s
✅ Check / e2e-test (push) Failing after 11s
✅ Check / 🔨 Build (push) Failing after 11s
🚀 Deploy / 🚀 Deploy (doc) (push) Failing after 12s
🚀 Deploy / 🚀 Deploy (demo) (push) Failing after 12s
🚀 Deploy / 🚀 Deploy (supabase) (push) Failing after 18s
snapshot of https://github.com/marmelab/atomic-crm.git (main, 2026-09-18; blobs > 131072B omitted)
2026-09-18 01:48:50 +05:00

177 lines
5.3 KiB
Makefile

.PHONY: build help
# Run silently, show output on failure
run-silent = $1 >/tmp/atomic-crm-$2.log 2>&1 || (cat /tmp/atomic-crm-$2.log && false)
# Same but captures TTY output (for docker/supabase)
ifeq ($(shell uname),Darwin)
run-silent-tty = script -q /tmp/atomic-crm-$2.log $1 >/dev/null 2>&1 || (cat /tmp/atomic-crm-$2.log && false)
else
run-silent-tty = script -eq /dev/null -c "$1" >/tmp/atomic-crm-$2.log 2>&1 || (cat /tmp/atomic-crm-$2.log && false)
endif
help:
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
install: package.json ## install dependencies
npm install
install-playwright-browsers: install ## install the playwright browsers matching the repo's pinned version
npx playwright install chromium chromium-headless-shell
install-claude-plugins:
claude plugin marketplace update claude-plugins-official
claude plugin install typescript-lsp@claude-plugins-official
install-lsp:
npm install -g typescript-language-server
start-supabase: ## start supabase locally
npx supabase start
start-supabase-functions: ## start the supabase Functions watcher
npx supabase functions serve
supabase-migrate-database: ## apply the migrations to the database
npx supabase migration up
supabase-reset-database: ## reset (and clear!) the database
npx supabase db reset
start-app: ## start the app locally
npm run dev
start-app-e2e: ## start the app pointing to the e2e supabase instance
npx vite --port 5175 --force --mode e2e &
stop-app-e2e:
kill $$(lsof -t -i:5175)
start-app-e2e-ci: build-e2e ## start the app pointing to the e2e supabase instance in CI mode (no open, no watch)
npx serve -l 5175 -L -s dist &
start: start-supabase start-app ## start the stack locally
start-demo: ## start the app locally in demo mode
npm run dev:demo
stop-supabase: ## stop local supabase
npx supabase stop
stop: stop-supabase ## stop the stack locally
start-supabase-e2e: ## start a separate supabase instance for e2e (fresh DB every run)
@npx supabase stop --workdir .supabase-e2e --no-backup 2>/dev/null || true
rm -rf .supabase-e2e/supabase
mkdir -p .supabase-e2e/supabase
cp supabase/config.e2e.toml .supabase-e2e/supabase/config.toml
cp -r supabase/migrations .supabase-e2e/supabase/migrations
cp -r supabase/schemas .supabase-e2e/supabase/schemas
cp -r supabase/functions .supabase-e2e/supabase/functions
cp -r supabase/templates .supabase-e2e/supabase/templates
cp supabase/seed.sql .supabase-e2e/supabase/seed.sql
cp supabase/signing_keys.json .supabase-e2e/supabase/signing_keys.json
@$(call run-silent-tty,npx supabase start --workdir .supabase-e2e,supabase-e2e)
stop-supabase-e2e: ## stop the e2e supabase instance
npx supabase stop --workdir .supabase-e2e --no-backup
start-e2e: start-supabase-e2e start-app-e2e ## start the stack in e2e mode (fresh supabase instance + app pointing to it)
start-e2e-ci: start-supabase-e2e start-app-e2e-ci ## start the stack in e2e mode in CI (fresh supabase instance + built app pointing to it)
stop-e2e: stop-supabase-e2e stop-app-e2e ## stop the stack in e2e mode
build: ## build the app
npm run build
build-e2e: ## build the app in e2e mode (with the e2e supabase config)
@$(call run-silent,npm run build:e2e,build-e2e)
build-demo: ## build the app in demo mode
npm run build:demo
prod-start: build supabase-deploy
open http://127.0.0.1:3000 && npx serve -l tcp://127.0.0.1:3000 dist
prod-deploy: build supabase-deploy
npm run ghpages:deploy
supabase-remote-init:
npm run supabase:remote:init
$(MAKE) supabase-deploy
supabase-deploy:
npx supabase db push
npx supabase functions deploy
test-unit: test-app test-functions
test: test-unit
test-app:
npm run test:unit:app
test-functions:
npm run test:unit:functions
test-e2e: start-e2e
npx playwright test --ui
test-e2e-ci: start-e2e-ci
npx wait-on http-get://localhost:54341/auth/v1/health http-get://localhost:5175
npx playwright test
lint:
npm run lint
npm run prettier
publish:
npm publish
typecheck:
npm run typecheck
doc-install:
@(cd doc && npm install)
doc: doc-dev
doc-dev:
@(cd doc && npm run dev)
doc-build:
@(cd doc && npm run build)
doc-preview: doc-build
@(cd doc && npm run preview)
doc-deploy:
@(cd doc && npx gh-pages -b gh-pages -d dist -e doc -m "Deploy docs" --remove doc)
registry-build: ## build the shadcn registry
npm run registry:build
registry-deploy: registry-build ## Deploy the shadcn registry (Automatically done by CI/CD pipeline)
@(cd public/r && npx gh-pages -b gh-pages -d ./ -s atomic-crm.json -e r -m "Deploy registry" --remove r)
registry-gen: ## Generate the shadcn registry (ran automatically by a pre-commit hook)
npm run registry:gen
npx prettier --config ./.prettierrc.json --write "registry.json"
update-changelog: ## Update the changelog with the unreleased changes (ran automatically by a pre-commit hook)
npm run update-changelog
npx prettier --config ./.prettierrc.json --write "CHANGELOG.md"
storybook: ## start storybook
npm run storybook
watch: ## live monitor of the most recent agent session (agents, hooks, diagnosis)
node scripts/harness-monitor.mjs --watch
monitor: ## one-shot summary of the most recent agent session (pass SESSION=<id> to pick one)
@node scripts/harness-monitor.mjs $(if $(SESSION),--session $(SESSION),)
sessions: ## list known agent sessions, newest first
@node scripts/harness-monitor.mjs --list