-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
153 lines (117 loc) · 4.12 KB
/
Makefile
File metadata and controls
153 lines (117 loc) · 4.12 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
.PHONY: build build-cli build-server build-tui clean test test-coverage deps run run-server run-cli run-tui install install-cli install-server install-tui docker-build docker-run
# Build targets
build: build-cli build-server build-tui
build-cli:
go build -o bin/video-downloader ./cmd/cli
build-server:
go build -o bin/video-downloader-server ./cmd/server
build-tui:
go build -o bin/video-downloader-tui ./cmd/tui
# Clean build artifacts
clean:
rm -rf bin/
go clean
# Run tests
test:
go test -v ./...
test-coverage:
go test -v -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
# Dependency management
deps:
go mod download
go mod tidy
# Run applications
run: run-cli
run-cli:
go run ./cmd/cli
run-server:
go run ./cmd/server
run-tui:
go run ./cmd/tui
# Install applications
install: install-cli install-server install-tui
install-cli:
go install ./cmd/cli
install-server:
go install ./cmd/server
install-tui:
go install ./cmd/tui
# Docker targets
docker-build:
docker build -t video-downloader .
docker-run:
docker run -p 8080:8080 -v $(PWD)/downloads:/app/downloads video-downloader
# Development helpers
dev-setup:
mkdir -p config data downloads logs temp
go mod download
go generate ./...
# Build for multiple platforms
build-all: build-cli-linux build-cli-windows build-cli-darwin build-server-linux build-server-windows build-server-darwin
build-cli-linux:
GOOS=linux GOARCH=amd64 go build -o bin/video-downloader-linux-amd64 ./cmd/cli
build-cli-windows:
GOOS=windows GOARCH=amd64 go build -o bin/video-downloader-windows-amd64.exe ./cmd/cli
build-cli-darwin:
GOOS=darwin GOARCH=amd64 go build -o bin/video-downloader-darwin-amd64 ./cmd/cli
build-server-linux:
GOOS=linux GOARCH=amd64 go build -o bin/video-downloader-server-linux-amd64 ./cmd/server
build-server-windows:
GOOS=windows GOARCH=amd64 go build -o bin/video-downloader-server-windows-amd64.exe ./cmd/server
build-server-darwin:
GOOS=darwin GOARCH=amd64 go build -o bin/video-downloader-server-darwin-amd64 ./cmd/server
# Linting and formatting
lint:
golangci-lint run
fmt:
go fmt ./...
./scripts/clean-whitespace.sh
# Generate documentation
docs:
godoc -http=:6060
# Example usage
example-cli:
./bin/video-downloader download "https://www.tiktok.com/@tiktok/video/7000000000000000000"
example-server:
./bin/video-downloader-server &
example-api:
curl -X POST http://localhost:8080/api/v1/videos/info \
-H "Content-Type: application/json" \
-d '{"url": "https://www.tiktok.com/@tiktok/video/7000000000000000000"}'
# Database operations
db-backup:
cp data/video-downloader.db data/video-downloader.db.backup
db-restore:
cp data/video-downloader.db.backup data/video-downloader.db
db-clean:
rm -f data/video-downloader.db
@echo "Database removed. A new one will be created on next run."
# Help
help:
@echo "Available targets:"
@echo " build - Build CLI and server"
@echo " build-cli - Build CLI only"
@echo " build-server - Build server only"
@echo " clean - Clean build artifacts"
@echo " test - Run tests"
@echo " test-coverage - Run tests with coverage report"
@echo " deps - Download dependencies"
@echo " run-cli - Run CLI application"
@echo " run-server - Run server application"
@echo " install-cli - Install CLI application"
@echo " install-server - Install server application"
@echo " docker-build - Build Docker image"
@echo " docker-run - Run Docker container"
@echo " dev-setup - Setup development environment"
@echo " build-all - Build for all platforms"
@echo " lint - Run linter"
@echo " fmt - Format code"
@echo " docs - Generate documentation"
@echo " example-cli - Example CLI usage"
@echo " example-server - Example server usage"
@echo " example-api - Example API usage"
@echo " db-backup - Backup database"
@echo " db-restore - Restore database from backup"
@echo " db-clean - Clean database"
@echo " help - Show this help message"