-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMakefile
112 lines (95 loc) · 3.94 KB
/
Makefile
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
.PHONY: build test clean run db.init db.drop db.test.init db.test.drop
.DEFAULT_GOAL := run
# Set default PGPASSWORD if not defined
PGPASSWORD ?= password
export PGPASSWORD
build:
GOEXPERIMENT=synctest go build -o quackfs.exe ./cmd/quackfs
test: db.test.drop db.test.init localstack.test.init
# Using -test.shuffle to get a deterministic order of tests for now
S3_BUCKET_NAME=quackfs-bucket-test GOEXPERIMENT=synctest go test -failfast -timeout 5s -p 1 -race -shuffle on -v ./... $(TEST)
clean: db.drop
fusermount3 -u /tmp/fuse || true
rm -f quackfs.exe
rm -rf /tmp/fuse
db.init:
@echo "Setting up PostgreSQL database if not already running"
@sudo service postgresql status > /dev/null || sudo service postgresql start
@for i in {1..10}; do pg_isready -h localhost -p 5432 -U postgres && break || sleep 1; done
@if ! psql -h localhost -p 5432 -U postgres -lqt | cut -d \| -f 1 | grep -qw quackfs; then \
echo "Creating quackfs database..."; \
psql -h localhost -p 5432 -U postgres -c "CREATE DATABASE quackfs;"; \
psql -h localhost -p 5432 -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE quackfs TO postgres;"; \
else \
echo "Database quackfs already exists"; \
fi
@psql -h localhost -p 5432 -U postgres -d quackfs -f ./db/schema.sql;
db.test.init:
@echo "Setting up PostgreSQL test database if not already running"
# @sudo service postgresql status > /dev/null || sudo service postgresql start
@for i in {1..10}; do pg_isready -h localhost -p 5432 -U postgres && break || sleep 1; done
@if ! psql -h localhost -p 5432 -U postgres -lqt | cut -d \| -f 1 | grep -qw quackfs_test; then \
echo "Creating quackfs_test database..."; \
psql -h localhost -p 5432 -U postgres -c "CREATE DATABASE quackfs_test;"; \
psql -h localhost -p 5432 -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE quackfs_test TO postgres;"; \
else \
echo "Database quackfs_test already exists"; \
fi
@psql -h localhost -p 5432 -U postgres -d quackfs_test -f ./db/schema.sql;
db.drop:
@echo "Cleaning PostgreSQL database"
@psql -h localhost -p 5432 -U postgres -c "DROP DATABASE IF EXISTS quackfs;" || true
db.test.drop:
@echo "Cleaning PostgreSQL test database"
@psql -h localhost -p 5432 -U postgres -c "DROP DATABASE IF EXISTS quackfs_test;" || true
run: clean build db.init localstack.init
mkdir -p /tmp/fuse
./quackfs.exe -mount /tmp/fuse
load:
./duckdb.sh
duckdb -f ./duckdb.sql /tmp/fuse/db.duckdb
localstack.init:
@if [ -z "$$(docker ps -q -f name=localstack)" ]; then \
echo "Starting LocalStack container..."; \
docker run \
--rm -it -d --name localstack \
-p 127.0.0.1:4566:4566 \
-p 127.0.0.1:4510-4559:4510-4559 \
-v /var/run/docker.sock:/var/run/docker.sock \
localstack/localstack; \
fi; \
if ! awslocal s3 ls | grep " quackfs-bucket$$" > /dev/null; then \
echo "Creating quackfs-bucket..."; \
awslocal s3 mb s3://quackfs-bucket; \
else \
echo "quackfs-bucket already exists."; \
fi
localstack.test.init:
@if [ -z "$$(docker ps -q -f name=localstack)" ]; then \
echo "Starting LocalStack container for tests..."; \
docker run \
--rm -it -d --name localstack \
-p 127.0.0.1:4566:4566 \
-p 127.0.0.1:4510-4559:4510-4559 \
-v /var/run/docker.sock:/var/run/docker.sock \
localstack/localstack; \
else \
echo "LocalStack container is already running."; \
fi; \
if [ -z "$$(docker exec -it localstack awslocal s3 ls | grep quackfs-bucket-test)" ]; then \
echo "Creating test bucket quackfs-bucket-test..."; \
awslocal s3 mb s3://quackfs-bucket-test; \
else \
echo "quackfs-bucket-test already exists. Let's clean it."; \
awslocal s3 rm s3://quackfs-bucket-test --recursive; \
awslocal s3 mb s3://quackfs-bucket-test; \
fi
localstack.drop:
@if [ -n "$$(docker ps -q -f name=localstack)" ]; then \
echo "Stopping LocalStack container..."; \
docker stop localstack || true; \
echo "Removing LocalStack container..."; \
docker rm --force localstack || true; \
fi
install:
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest