File size: 2,687 Bytes
021b323
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
74
75
# Makefile for ai-story-teller (local dev & endpoint checks)

# Default Node version (override with: make NODE=20)
NODE ?= 18
PORT ?= 3000

# Path to .env (create from .env.example or manually)
ENV ?= .env

# Test prompts (override with: make test STORY_PROMPT="..." VOICE="..." IMG_PROMPT="...")
STORY_PROMPT ?= A short wholesome bedtime story about a friendly dragon.
VOICE ?= Cloée
IMG_PROMPT ?= a cute cat sticker

.PHONY: help setup env dev build start check-endpoints test clean verify-scripts

help:
	@echo "Targets:"
	@echo "  setup            Install Node deps (npm ci if lockfile exists)"
	@echo "  env              Create .env from .env.example if missing and show key vars"
	@echo "  dev              Run Next.js dev server"
	@echo "  build            Build Next.js app"
	@echo "  start            Start built Next.js app"
	@echo "  check-endpoints  Run Node endpoint check (tests/test_connections/test_endpoints.mjs)"
	@echo "  test             Run bash endpoint checks (story + image)"
	@echo "  clean            Remove .next"
	@echo ""
	@echo "Vars: NODE=$(NODE) PORT=$(PORT) ENV=$(ENV)"
	@echo "Test Vars: STORY_PROMPT='$(STORY_PROMPT)' VOICE='$(VOICE)' IMG_PROMPT='$(IMG_PROMPT)'"

setup:
	@echo ">>> Installing dependencies…"
	@if [ -f package-lock.json ]; then npm ci; else npm install; fi

env:
	@if [ ! -f $(ENV) ] && [ -f .env.example ]; then cp .env.example $(ENV); fi
	@if [ ! -f $(ENV) ]; then \
	  printf "AI_STORY_API_GRADIO_URL=\"\"\nAI_STORY_API_SECRET_TOKEN=\"secret\"\nAI_FAST_IMAGE_SERVER_API_GRADIO_URL=\"\"\nAI_FAST_IMAGE_SERVER_API_SECRET_TOKEN=\"default_secret\"\nNEXT_PUBLIC_ENABLE_COMMUNITY_SHARING=\"false\"\n" > $(ENV); \
	fi
	@echo ">>> Using $(ENV)"
	@grep -E 'AI_.*|NEXT_PUBLIC_' $(ENV) || true

dev: env
	@echo ">>> Starting Next dev on :$(PORT)"
	npm run dev -- -p $(PORT)

build: env
	npm run build

start: env
	npm run start -- -p $(PORT)

# Ensure the bash test script exists & is executable (used by `make test`)
verify-scripts:
	@test -f tests/test_connections/test_endpoints.sh || { \
	  echo "tests/test_connections/test_endpoints.sh not found."; \
	  echo "Please create it and make it executable:"; \
	  echo "  chmod +x tests/test_connections/test_endpoints.sh"; \
	  exit 1; \
	}
	@chmod +x tests/test_connections/test_endpoints.sh

# NEW: Node-based check (mjs only)
check-endpoints: env
	@echo ">>> Running Node endpoint check (mjs)…"
	node tests/test_connections/test_endpoints.mjs

# Keep `make test` EXACTLY as-is (bash script)
test: env verify-scripts
	@echo ">>> Running endpoint checks (story + image)…"
	@./tests/test_connections/test_endpoints.sh "$(STORY_PROMPT)" "$(VOICE)" "$(IMG_PROMPT)"

clean:
	rm -rf .next