-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
137 lines (115 loc) · 3.6 KB
/
Copy pathTaskfile.yml
File metadata and controls
137 lines (115 loc) · 3.6 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
version: '3'
dotenv: ['.env']
tasks:
default:
cmds:
- task --list
silent: true
dev-env-setup:
desc: Create the local development env file if it is missing
cmds:
- test -f .env.dev
connect:
desc: Access the database CLI
cmds:
- docker exec -it vending-db-prod psql -U $APP_DB_USER -d $APP_DB_NAME
dev-connect:
desc: Access the development database CLI
dotenv: [.env.dev]
cmds:
- docker exec -it vending-db-dev psql -U $APP_DB_USER -d $APP_DB_NAME
generate_sqlc:
desc: Regenerate Go code from SQL queries
cmds:
- docker run --rm -v {{.PWD}}:/src -w /src sqlc/sqlc generate
pretty:
desc: Run code formatters
cmds:
- |
cd backend/
gofumpt -w .
goimports -w .
cd ../web/
npm run pretty
env-setup:
desc: Create .env if it is missing
cmds:
- test -f .env || cp .env.example .env
setup:
desc: Prepare the production env file
cmds:
- task: env-setup
dev:
desc: Start the shared Docker services for local Air and Vite development
dotenv: [.env.dev]
cmds:
- task: dev-env-setup
- docker compose -p outastock-dev --env-file .env.dev -f docker-compose.dev.yml up db swagger caddy
seed:
desc: Run all database seeds on production database
cmds:
- |
for file in db/seeds/*.sql; do
echo "Seeding $file..."
docker exec -i vending-db-prod psql -U $APP_DB_USER -d $APP_DB_NAME < $file
done
clear:
desc: Clear all data from the production database
cmds:
- docker exec -i vending-db-prod psql -U $APP_DB_USER -d $APP_DB_NAME < db/seeds/000_clear.sql
dev-seed:
desc: Run all database seeds on the development database
dotenv: [.env.dev]
cmds:
- |
for file in db/seeds/*.sql; do
echo "Seeding $file..."
docker exec -i vending-db-dev psql -U $APP_DB_USER -d $APP_DB_NAME < $file
done
bench-k6:
desc: Run k6 load tests against the local Go backend
dotenv: [.env.dev]
dir: web
cmds:
- k6 run -e EMAIL="admin@example.com" -e PASSWORD="SecurePassword123!" ./src/benchmarks/transactions.ts
bench-sql:
desc: Run the SQL benchmark script and save results to results.txt
dotenv: [.env.dev]
cmds:
- docker exec -i vending-db-dev psql -U $APP_DB_USER -d $APP_DB_NAME < db/benchmark/bench.sql > results.txt
dev-clear:
desc: Clear all data from the development database
dotenv: [.env.dev]
cmds:
- docker exec -i vending-db-dev psql -U $APP_DB_USER -d $APP_DB_NAME < db/seeds/000_clear.sql
prod:
desc: Run the production stack
cmds:
- task: setup
- docker compose -p outastock-prod --env-file .env -f docker-compose.yml up --build
dev-back:
desc: Run the Go backend locally with Air against the development stack
dotenv: [.env.dev]
cmds:
- air
dev-front:
desc: Run the Vite frontend locally against the development stack
dir: web
dotenv: [../.env.dev]
cmds:
- npm install
- npm run dev
dev-down:
desc: Stop the development Docker services
dotenv: [.env.dev]
cmds:
- docker compose -p outastock-dev --env-file .env.dev -f docker-compose.dev.yml down
dev-nuke:
desc: Stop and remove the development Docker services
dotenv: [.env.dev]
cmds:
- docker compose -p outastock-dev --env-file .env.dev -f docker-compose.dev.yml down -v
nuke:
desc: Delete the production stack and volumes
cmds:
- docker compose -p outastock-prod --env-file .env -f docker-compose.yml down -v --remove-orphans