73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Makefile
		
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Makefile
		
	
	
all: debug
 | 
						|
.PHONY: all
 | 
						|
 | 
						|
# Builds the debug release inside the Alpine container. For build caching, two
 | 
						|
# volumes are used named `fej_build-cache` and `fej_registry-cache`. These
 | 
						|
# images are automatically created for you if they don't exist. If you
 | 
						|
# encounter any strange build errors, you can try removing this volumes to
 | 
						|
# start a completely fresh build.
 | 
						|
debug:
 | 
						|
	@ ./build -m dev -a run build
 | 
						|
.PHONY: debug
 | 
						|
 | 
						|
# Builds the release version. In contrary to the debug version, this build
 | 
						|
# doesn't use volumes for caching, as this would require the build to happen
 | 
						|
# during runtime instead of during the building of the image. Instead, it uses
 | 
						|
# the new `--mount` feature from Buildkit. This does mean that only very recent
 | 
						|
# Docker engines can build the release version (in my case, at the time of
 | 
						|
# writing this, 20.10.5).
 | 
						|
release:
 | 
						|
	@ ./build -m rel
 | 
						|
.PHONY: release
 | 
						|
 | 
						|
# This builds the release version, and pushes all relevant tags to my Docker
 | 
						|
# Hub repository, namely chewingbever/fej
 | 
						|
push:
 | 
						|
	@ ./build -m rel -a push
 | 
						|
.PHONY: push
 | 
						|
 | 
						|
# This builds the debug release, and runs it detached. The reason we detach the
 | 
						|
# container is because Rocket has a tendency to ignore ctlr-c when inside a
 | 
						|
# container, which gets annoying really fast.
 | 
						|
run:
 | 
						|
	@ ./build -m dev -a run
 | 
						|
.PHONY: run
 | 
						|
 | 
						|
# As a workaround, we just have a stop command that stops the container.
 | 
						|
stop:
 | 
						|
	@ docker stop -t 2 fej
 | 
						|
	@ docker stop fej_db
 | 
						|
.PHONY: stop
 | 
						|
 | 
						|
# This attaches to the running container, essentially giving the same result as
 | 
						|
# just running `cargo run` locally.
 | 
						|
logs:
 | 
						|
	@ docker logs -f fej
 | 
						|
.PHONY: logs
 | 
						|
 | 
						|
# This just starts up a shell inside the fej container
 | 
						|
sh:
 | 
						|
	@ docker exec -it fej sh
 | 
						|
.PHONY: sh
 | 
						|
 | 
						|
# Builds the debug version, and runs the tests (but doesn't detach).
 | 
						|
test:
 | 
						|
	@ ./build -m dev -a run -l -- test --no-fail-fast
 | 
						|
.PHONY: test
 | 
						|
 | 
						|
# Runs the cargo code formatter on your code.
 | 
						|
format:
 | 
						|
	@ cargo fmt
 | 
						|
.PHONY: format
 | 
						|
 | 
						|
# Lints your code. This also gets run in the pre-commit hook, basically
 | 
						|
# preventing you from committing badly-formatted code.
 | 
						|
lint:
 | 
						|
	@ cargo fmt -- --check
 | 
						|
.PHONY: lint
 | 
						|
 | 
						|
# This builds the documentation for the project, excluding the documentation.
 | 
						|
docs:
 | 
						|
	@ cargo doc --no-deps
 | 
						|
.PHONY: docs
 |