@@ -58,14 +58,23 @@ TOC_START=<\!--ts-->
5858TOC_END =<\!--te-->
5959TOC_PATH =toc.md
6060
61+ # Default target
62+ .PHONY : help
63+ help : # # Show the help
64+ @echo " Usage: make <target>"
65+ @echo
66+ @echo " Targets:"
67+ @grep -E ' ^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | sort | awk ' BEGIN {FS = ":.*?## "}; {printf " \033[36m%-26s\033[0m %s\n", $$1, $$2}'
68+ @echo
69+
6170all : prepare_test test build
6271.PHONY : test test-ci coverage
6372.PHONY : download download-restic-key
6473.PHONY : build build-mac build-linux build-pi build-windows build-no-selfupdate build-all
6574.PHONY : generate-config-reference generate-jsonschema generate-install generate-restic
6675.PHONY : all verify prepare_test prepare_build install clean ramdisk rest-server nightly toc syslog checkdoc
6776
68- verify :
77+ verify : # # Verify go installation
6978ifeq ($(wildcard $(GOPATH ) /.) ,)
7079 @echo "GOPATH not found, please check your go installation"
7180 exit 1
@@ -85,7 +94,7 @@ $(GOBIN)/github-markdown-toc.go: verify $(GOBIN)/eget
8594
8695$(GOBIN ) /mockery : verify $(GOBIN ) /eget
8796 @echo " [*] $@ "
88- " $( GOBIN) /eget" vektra/mockery --tag v2.53.3 --upgrade-only --to ' $(GOBIN)'
97+ " $( GOBIN) /eget" vektra/mockery --tag v2.53.5 --upgrade-only --to ' $(GOBIN)'
8998
9099$(GOBIN ) /golangci-lint : verify $(GOBIN ) /eget
91100 @echo " [*] $@ "
@@ -95,81 +104,85 @@ $(GOBIN)/hugo: $(GOBIN)/eget
95104 @echo " [*] $@ "
96105 " $( GOBIN) /eget" gohugoio/hugo --tag v0.145.0 --upgrade-only --asset=extended_0 --to ' $(GOBIN)'
97106
107+ $(GOBIN ) /muffet : verify $(GOBIN ) /eget
108+ @echo " [*] $@ "
109+ " $( GOBIN) /eget" raviqqe/muffet --upgrade-only --to ' $(GOBIN)'
110+
98111prepare_build : verify download
99112 @echo " [*] $@ "
100113
101- prepare_test : verify download $(GOBIN ) /mockery
114+ prepare_test : verify download $(GOBIN ) /mockery # # Generate mocks
102115 @echo " [*] $@ "
103116 find . -path " */mocks/*" -exec rm {} \;
104117 " $( GOBIN) /mockery" --config .mockery.yaml
105118
106- download : verify
119+ download : verify # # Download dependencies
107120 @echo " [*] $@ "
108121 GOPATH=" $( GOPATH) " \
109122 $(GOMOD ) download
110123
111- download-restic-key :
124+ download-restic-key : # # Download restic GPG key
112125 @echo " [*] $@ "
113126 KEY_FILE=$(abspath restic/gpg-key.asc)
114127 curl https://restic.net/gpg-key-alex.asc > $(KEY_FILE )
115128
116- install : prepare_build
129+ install : prepare_build # # Install the binary (to $GOBIN)
117130 @echo " [*] $@ "
118131 GOBIN=" $( GOBIN) " \
119132 $(GOINSTALL ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
120133
121- build : prepare_build
134+ build : prepare_build # # Build the binary
122135 @echo " [*] $@ "
123136 GOPATH=" $( GOPATH) " \
124137 $(GOBUILD ) -o $(BINARY ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
125138
126- build-no-selfupdate : prepare_build
139+ build-no-selfupdate : prepare_build # # Build the binary without self-update feature
127140 @echo " [*] $@ "
128141 GOPATH=" $( GOPATH) " \
129142 $(GOBUILD ) -o $(BINARY ) -v -tags no_self_update -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
130143
131- build-mac : prepare_build
144+ build-mac : prepare_build # # Build the binary for macOS
132145 @echo " [*] $@ "
133146 GOPATH=" $( GOPATH) " \
134147 GOOS=" darwin" GOARCH=" amd64" $(GOBUILD ) -o $(BINARY_DARWIN_AMD64 ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
135148 GOPATH=" $( GOPATH) " \
136149 GOOS=" darwin" GOARCH=" arm64" $(GOBUILD ) -o $(BINARY_DARWIN_ARM64 ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
137150
138- build-linux : prepare_build
151+ build-linux : prepare_build # # Build the binary for Linux
139152 @echo " [*] $@ "
140153 GOPATH=" $( GOPATH) " \
141154 GOOS=" linux" GOARCH=" amd64" $(GOBUILD ) -o $(BINARY_LINUX_AMD64 ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
142155 GOPATH=" $( GOPATH) " \
143156 GOOS=" linux" GOARCH=" arm64" $(GOBUILD ) -o $(BINARY_LINUX_ARM64 ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
144157
145- build-pi : prepare_build
158+ build-pi : prepare_build # # Build the binary for Raspberry Pi (armv6)
146159 @echo " [*] $@ "
147160 GOPATH=" $( GOPATH) " \
148161 GOOS=" linux" GOARCH=" arm" GOARM=" 6" $(GOBUILD ) -o $(BINARY_PI ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
149162
150- build-windows : prepare_build
163+ build-windows : prepare_build # # Build the binary for Windows
151164 @echo " [*] $@ "
152165 GOPATH=" $( GOPATH) " \
153166 GOOS=" windows" GOARCH=" amd64" $(GOBUILD ) -o $(BINARY_WINDOWS_AMD64 ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
154167 GOPATH=" $( GOPATH) " \
155168 GOOS=" windows" GOARCH=" arm64" $(GOBUILD ) -o $(BINARY_WINDOWS_ARM64 ) -v -ldflags " -X 'main.commit=${BUILD_COMMIT} ' -X 'main.date=${BUILD_DATE} ' -X 'main.builtBy=make'"
156169
157- build-all : build-mac build-linux build-pi build-windows
170+ build-all : build-mac build-linux build-pi build-windows # # Build the binary for all platforms
158171
159- test : prepare_test
172+ test : prepare_test # # Run unit tests
160173 @echo " [*] $@ "
161174 $(GOTEST ) $(TESTS )
162175
163- test-ci : prepare_test
176+ test-ci : prepare_test # # Run unit tests with coverage (for CI)
164177 @echo " [*] $@ "
165178 $(GOTEST ) -v -race -short -coverprofile=' coverage.out' ./...
166179
167- coverage :
180+ coverage : # # Generate coverage report
168181 @echo " [*] $@ "
169182 $(GOTEST ) -coverprofile=$(COVERAGE_FILE ) $(TESTS )
170183 $(GOTOOL ) cover -html=$(COVERAGE_FILE )
171184
172- clean :
185+ clean : # # Clean up the build artifacts
173186 @echo " [*] $@ "
174187 $(GOCLEAN )
175188 rm -rf $(BINARY ) \
@@ -188,7 +201,7 @@ clean:
188201 find . -path " */mocks/*" -exec rm {} \;
189202 restic cache --cleanup
190203
191- ramdisk : ${TMP_MOUNT}
204+ ramdisk : ${TMP_MOUNT} # # Create a ramdisk for testing
192205
193206# Fixed size ramdisk for mac OS X
194207${TMP_MOUNT_DARWIN} :
@@ -200,7 +213,7 @@ ${TMP_MOUNT_LINUX}:
200213 mkdir -p ${TMP_MOUNT_LINUX}
201214 sudo mount -t tmpfs -o " rw,relatime,size=2097152k,uid=` id -u` ,gid=` id -g` " tmpfs ${TMP_MOUNT_LINUX}
202215
203- rest-server :
216+ rest-server : # # Run rest-server docker container for testing
204217 @echo " [*] $@ "
205218 REST_IMAGE=restic/rest-server
206219 REST_CONTAINER=rest_server
@@ -210,7 +223,7 @@ rest-server:
210223 docker pull ${REST_IMAGE}
211224 docker run -d -p 8000:8000 -v ${REST_DATA}:/data --name ${REST_CONTAINER} --restart always -e "OPTIONS=${REST_OPTIONS}" ${REST_IMAGE}
212225
213- nightly : $(GOBIN ) /goreleaser
226+ nightly : $(GOBIN ) /goreleaser # # Create a nightly release (for testing goreleaser setup)
214227 @echo " [*] $@ "
215228 GITLAB_TOKEN= goreleaser --snapshot --skip=publish --clean
216229
@@ -221,11 +234,11 @@ toc: $(GOBIN)/github-markdown-toc.go
221234 sed -i " .2" " /${TOC_START} /r ${TOC_PATH} " " ${README} "
222235 rm ${README} .1 ${README} .2 ${TOC_PATH}
223236
224- generate-install :
237+ generate-install : # # Generate the install script using godownloader
225238 @echo " [*] $@ "
226239 godownloader .godownloader.yml -r creativeprojects/resticprofile -o install.sh
227240
228- generate-restic :
241+ generate-restic : # # Generate the restic commands JSON file
229242 @echo " [*] $@ "
230243 $(GOBUILD ) -o $(RESTIC_GEN ) $(abspath restic/generator)
231244
@@ -246,7 +259,7 @@ generate-restic:
246259
247260 cp $(RESTIC_CMD) restic/commands.json
248261
249- generate-jsonschema : build
262+ generate-jsonschema : build # # Generate the JSON schema files
250263 @echo " [*] $@ "
251264
252265 mkdir -p $(JSONSCHEMA_DIR) || echo "$(JSONSCHEMA_DIR) exists"
@@ -261,7 +274,7 @@ generate-jsonschema: build
261274 done ; \
262275 done
263276
264- generate-config-reference : build
277+ generate-config-reference : build # # Generate the configuration reference documentation
265278 @echo " [*] $@ "
266279
267280 META_TITLE="Resticprofile configuration reference" \
@@ -276,12 +289,12 @@ generate-config-reference: build
276289 $(abspath $(BINARY)) generate --config-reference --to $(CONFIG_REFERENCE_DIR)
277290
278291.PHONY : documentation
279- documentation : generate-jsonschema generate-config-reference $(GOBIN ) /hugo
292+ documentation : generate-jsonschema generate-config-reference $(GOBIN ) /hugo # # Generate the documentation site
280293 @echo " [*] $@ "
281294 cd docs && hugo --minify
282295
283296.PHONY : syslog-ng
284- syslog-ng :
297+ syslog-ng : # # Run syslog-ng docker container for testing
285298 @echo " [*] $@ "
286299 docker run -d \
287300 --name=syslog-ng \
@@ -295,27 +308,27 @@ syslog-ng:
295308 -v $(CURRENT_DIR ) /log:/var/log \
296309 lscr.io/linuxserver/syslog-ng:latest
297310
298- checkdoc :
311+ checkdoc : # # Check documentation
299312 @echo " [*] $@ "
300313 $(GOCMD ) run ./config/checkdoc -r docs/content -i changelog.md
301314
302315.PHONY : checklinks
303- checklinks :
316+ checklinks : $( GOBIN ) /muffet # # Check for broken links in the documentation site
304317 @echo " [*] $@ "
305318 muffet --buffer-size=8192 --max-connections-per-host=8 --rate-limit=20 \
306319 --exclude=" (linux\.die\.net|scoop\.sh|commit)" \
307320 --header=" User-Agent: Muffet/$$ (muffet --version)" \
308321 http://127.0.0.1:1313/resticprofile/
309322
310323.PHONY : lint
311- lint : $(GOBIN ) /golangci-lint
324+ lint : $(GOBIN ) /golangci-lint # # Run golangci-lint
312325 @echo " [*] $@ "
313326 GOOS=darwin golangci-lint run
314327 GOOS=linux golangci-lint run
315328 GOOS=windows golangci-lint run
316329
317330.PHONY : fix
318- fix : $(GOBIN ) /golangci-lint
331+ fix : $(GOBIN ) /golangci-lint # # Run golangci-lint with --fix
319332 @echo " [*] $@ "
320333 $(GOCMD ) mod tidy
321334 $(GOCMD ) fix ./...
@@ -329,10 +342,10 @@ deploy-current: build-linux build-pi
329342 for server in $$ (cat targets_amd64.txt); do \
330343 echo " Deploying to $$ server" ; \
331344 rsync -avz --progress $(BINARY_LINUX_AMD64 ) $$ server: ; \
332- ssh $$ server " sudo -S install $( BINARY_LINUX_AMD64) /usr/local/bin/resticprofile" ; \
345+ ssh -t $$ server " sudo -S install $( BINARY_LINUX_AMD64) /usr/local/bin/resticprofile" ; \
333346 done
334347 for server in $$ (cat targets_armv6.txt); do \
335348 echo " Deploying to $$ server" ; \
336349 rsync -avz --progress $(BINARY_PI ) $$ server: ; \
337- ssh $$ server " sudo -S install $( BINARY_PI) /usr/local/bin/resticprofile" ; \
350+ ssh -t $$ server " sudo -S install $( BINARY_PI) /usr/local/bin/resticprofile" ; \
338351 done
0 commit comments