tlc-claude-code 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/bin/init.js +41 -8
- package/docker-compose.dev.yml +16 -0
- package/package.json +2 -1
- package/start-dev.sh +91 -0
package/README.md
CHANGED
|
@@ -172,8 +172,6 @@ tlc rebuild # After package.json changes or to get a clean slate
|
|
|
172
172
|
|
|
173
173
|
**Requirements:** [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
|
174
174
|
|
|
175
|
-
> **Note:** Windows only for now. macOS/Linux support coming soon.
|
|
176
|
-
|
|
177
175
|
---
|
|
178
176
|
|
|
179
177
|
## Test Quality
|
package/bin/init.js
CHANGED
|
@@ -57,7 +57,7 @@ powershell -ExecutionPolicy Bypass -File "%TLC_DIR%\\start-dev.ps1" -ProjectPath
|
|
|
57
57
|
pause
|
|
58
58
|
`;
|
|
59
59
|
|
|
60
|
-
// macOS/Linux shell script
|
|
60
|
+
// macOS/Linux shell script
|
|
61
61
|
const shContent = `#!/bin/bash
|
|
62
62
|
# ========================================
|
|
63
63
|
# TLC Dev Server Launcher
|
|
@@ -68,15 +68,48 @@ const shContent = `#!/bin/bash
|
|
|
68
68
|
# Database: localhost:5433
|
|
69
69
|
# ========================================
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
set -e
|
|
72
|
+
|
|
73
|
+
# Find TLC installation
|
|
74
|
+
TLC_DIR=""
|
|
75
|
+
LOCATIONS=(
|
|
76
|
+
"$HOME/.nvm/versions/node/*/lib/node_modules/tlc-claude-code"
|
|
77
|
+
"/usr/local/lib/node_modules/tlc-claude-code"
|
|
78
|
+
"/usr/lib/node_modules/tlc-claude-code"
|
|
79
|
+
"$HOME/.npm-global/lib/node_modules/tlc-claude-code"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
# Check npm global
|
|
83
|
+
NPM_ROOT=$(npm root -g 2>/dev/null || echo "")
|
|
84
|
+
if [ -n "$NPM_ROOT" ] && [ -f "$NPM_ROOT/tlc-claude-code/start-dev.sh" ]; then
|
|
85
|
+
TLC_DIR="$NPM_ROOT/tlc-claude-code"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Check common locations
|
|
89
|
+
if [ -z "$TLC_DIR" ]; then
|
|
90
|
+
for pattern in "\${LOCATIONS[@]}"; do
|
|
91
|
+
for dir in $pattern; do
|
|
92
|
+
if [ -f "$dir/start-dev.sh" ]; then
|
|
93
|
+
TLC_DIR="$dir"
|
|
94
|
+
break 2
|
|
95
|
+
fi
|
|
96
|
+
done
|
|
97
|
+
done
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
if [ -z "$TLC_DIR" ]; then
|
|
101
|
+
echo "[TLC] ERROR: Could not find TLC installation"
|
|
102
|
+
echo "[TLC] Install with: npm install -g tlc-claude-code"
|
|
103
|
+
exit 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
PROJECT_PATH="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
107
|
+
|
|
108
|
+
echo "[TLC] Found TLC at: $TLC_DIR"
|
|
109
|
+
echo "[TLC] Starting dev server for: $PROJECT_PATH"
|
|
77
110
|
echo ""
|
|
78
111
|
|
|
79
|
-
|
|
112
|
+
exec "$TLC_DIR/start-dev.sh" "$PROJECT_PATH"
|
|
80
113
|
`;
|
|
81
114
|
|
|
82
115
|
// Detect OS - WSL counts as Windows since user will double-click .bat from Explorer
|
package/docker-compose.dev.yml
CHANGED
|
@@ -79,5 +79,21 @@ services:
|
|
|
79
79
|
- app
|
|
80
80
|
restart: on-failure
|
|
81
81
|
|
|
82
|
+
# Playwright E2E Tests (optional - starts on demand)
|
|
83
|
+
playwright:
|
|
84
|
+
image: mcr.microsoft.com/playwright:v1.40.0-jammy
|
|
85
|
+
container_name: tlc-${COMPOSE_PROJECT_NAME:-dev}-playwright
|
|
86
|
+
working_dir: /app
|
|
87
|
+
profiles:
|
|
88
|
+
- test
|
|
89
|
+
command: npx playwright test
|
|
90
|
+
environment:
|
|
91
|
+
- BASE_URL=http://app:5000
|
|
92
|
+
- CI=true
|
|
93
|
+
volumes:
|
|
94
|
+
- ${PROJECT_DIR:-.}:/app
|
|
95
|
+
depends_on:
|
|
96
|
+
- app
|
|
97
|
+
|
|
82
98
|
volumes:
|
|
83
99
|
postgres-data:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tlc-claude-code",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "TLC - Test Led Coding for Claude Code",
|
|
5
5
|
"bin": {
|
|
6
6
|
"tlc": "./bin/tlc.js",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"server/",
|
|
14
14
|
"docker-compose.dev.yml",
|
|
15
15
|
"start-dev.ps1",
|
|
16
|
+
"start-dev.sh",
|
|
16
17
|
"start-dev.bat",
|
|
17
18
|
"*.md",
|
|
18
19
|
"install.sh"
|
package/start-dev.sh
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# TLC Dev Server Launcher
|
|
4
|
+
# Usage: ./start-dev.sh [project-path]
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
PROJECT_PATH="${1:-$(pwd)}"
|
|
9
|
+
|
|
10
|
+
echo ""
|
|
11
|
+
echo " ============================"
|
|
12
|
+
echo " TLC Dev Server"
|
|
13
|
+
echo " ============================"
|
|
14
|
+
echo ""
|
|
15
|
+
|
|
16
|
+
# Check Docker
|
|
17
|
+
echo "[TLC] Checking Docker..."
|
|
18
|
+
if ! docker info >/dev/null 2>&1; then
|
|
19
|
+
echo "[TLC] Docker is not running."
|
|
20
|
+
|
|
21
|
+
# Try to start Docker based on OS
|
|
22
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
23
|
+
echo "[TLC] Starting Docker Desktop..."
|
|
24
|
+
open -a Docker
|
|
25
|
+
elif [[ -f /etc/debian_version ]] || [[ -f /etc/redhat-release ]]; then
|
|
26
|
+
echo "[TLC] Starting Docker service..."
|
|
27
|
+
sudo systemctl start docker 2>/dev/null || sudo service docker start 2>/dev/null || true
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
echo "[TLC] Waiting for Docker..."
|
|
31
|
+
TIMEOUT=60
|
|
32
|
+
ELAPSED=0
|
|
33
|
+
while [ $ELAPSED -lt $TIMEOUT ]; do
|
|
34
|
+
sleep 2
|
|
35
|
+
ELAPSED=$((ELAPSED + 2))
|
|
36
|
+
if docker info >/dev/null 2>&1; then
|
|
37
|
+
break
|
|
38
|
+
fi
|
|
39
|
+
printf "."
|
|
40
|
+
done
|
|
41
|
+
echo ""
|
|
42
|
+
|
|
43
|
+
if ! docker info >/dev/null 2>&1; then
|
|
44
|
+
echo "[TLC] ERROR: Docker failed to start"
|
|
45
|
+
echo "[TLC] Please start Docker manually and try again"
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo "[TLC] Docker is ready!"
|
|
51
|
+
|
|
52
|
+
# Resolve project path
|
|
53
|
+
PROJECT_PATH="$(cd "$PROJECT_PATH" 2>/dev/null && pwd)"
|
|
54
|
+
if [ -z "$PROJECT_PATH" ]; then
|
|
55
|
+
echo "[TLC] ERROR: Invalid project path"
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Get project name from directory
|
|
60
|
+
PROJECT_NAME=$(basename "$PROJECT_PATH" | tr '[:upper:]' '[:lower:]' | tr -cd 'a-z0-9')
|
|
61
|
+
if [ -z "$PROJECT_NAME" ]; then
|
|
62
|
+
PROJECT_NAME="dev"
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
echo "[TLC] Project: $PROJECT_PATH"
|
|
66
|
+
echo "[TLC] Name: $PROJECT_NAME"
|
|
67
|
+
|
|
68
|
+
# Set environment
|
|
69
|
+
export PROJECT_DIR="$PROJECT_PATH"
|
|
70
|
+
export COMPOSE_PROJECT_NAME="$PROJECT_NAME"
|
|
71
|
+
|
|
72
|
+
# Find TLC installation directory
|
|
73
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
74
|
+
cd "$SCRIPT_DIR"
|
|
75
|
+
|
|
76
|
+
echo ""
|
|
77
|
+
echo "[TLC] Starting services..."
|
|
78
|
+
echo " Dashboard: http://localhost:3147"
|
|
79
|
+
echo " App: http://localhost:5000"
|
|
80
|
+
echo " DB Admin: http://localhost:8080"
|
|
81
|
+
echo " Database: localhost:5433 (postgres/postgres)"
|
|
82
|
+
echo ""
|
|
83
|
+
echo "[TLC] Containers: tlc-$PROJECT_NAME-*"
|
|
84
|
+
echo "[TLC] Press Ctrl+C to stop"
|
|
85
|
+
echo ""
|
|
86
|
+
|
|
87
|
+
# Run docker-compose
|
|
88
|
+
docker-compose -f docker-compose.dev.yml up --build
|
|
89
|
+
|
|
90
|
+
echo ""
|
|
91
|
+
echo "[TLC] Stopped."
|