alias dev := devcontainer alias t := transaction workdir := `pwd` basename := `basename $(pwd)` dockerfile := '.devcontainer/Dockerfile' container := basename + '-devcontainer' uid := `id -u` gid := `id -g` image := container + '-img' ssh_key := env('HOME') + '/.ssh/id_rsa.pub' # for use in dev container build: mkdir -p build cd build && cmake .. && make # test a transaction transaction: docker exec -u root -it {{container}} dnf reinstall libdnf5 --setopt=pluginpath=build/src \ --setopt=pluginconfpath=src -y clean: docker container stop {{container}} || : docker container rm {{container}} || : docker image rm {{image}} || : rm -rf build # (re)start Docker dev container devcontainer: (docker container ls --all | grep -q {{container}} && docker container stop {{container}} \ && docker container rm {{container}}) || : docker build --secret id=key,src={{ssh_key}} --build-arg UID={{uid}} --build-arg GID={{gid}} \ --build-arg BASENAME={{basename}} -t {{image}} -f {{dockerfile}} . docker container create --name {{container}} -v {{workdir}}:/volume/{{basename}} \ -p 2222:2222 {{image}} docker container start {{container}}