_default: @just --list --unsorted tool := "randompass" docker_container_registry := "ghcr.io" docker_user_repo := "mihaigalos" docker_image_version := `cat Cargo.toml | grep ^version | cut -d'=' -f 2 | sed -e 's/"//g' -e 's/ //g'` docker_image := docker_container_registry + "/" + docker_user_repo + "/" + tool+ ":" + docker_image_version docker_image_dockerhub := docker_user_repo + "/" + tool+ ":" + docker_image_version build: #!/bin/bash cargo build --verbose --all || exit 1 for d in $(find test -type d); do pushd $d > /dev/null [ -f Justfile ] && just build popd > /dev/null done test: build #!/bin/bash cargo test --verbose --all || exit 1 setup_dockerize: #!/bin/bash sudo apt update sudo apt-get install -y binfmt-support qemu-user-static sudo apt-get install -y docker.io sudo usermod -aG docker $USER sudo apt-get install -y jq mkdir -p ~/.docker/cli-plugins BUILDX_URL=$(curl https://api.github.com/repos/docker/buildx/releases/latest | jq '.assets[].browser_download_url' | grep linux-arm64) wget $BUILDX_URL -O ~/.docker/cli-plugins/docker-build chmod +x ~/.docker/cli-plugins/docker-buildx docker buildx create --use --name mbuilder docker buildx inspect --bootstrap # assumes just setup_dockerize has run at least once dockerize_amd64 +args="": just _build_docker_with_buildkit "linux/amd64" {{args}} # assumes just setup_dockerize has run at least once dockerize_arm64 +args="": just _build_docker_with_buildkit "linux/arm64" {{args}} dockerize_push_hub_simple +args="": docker build -t {{docker_image_dockerhub}} {{args}} . docker push {{docker_image_dockerhub}} _build_docker_with_buildkit platform="linux/amd64" +args="": #!/bin/bash set -x platform_short=$(echo {{platform}} | cut -d '/' -f2) stdout=$(2>&1 docker buildx build --platform {{platform}} {{args}} -t {{docker_image}} --output "type=oci,dest={{tool}}_${platform_short}.tar" . | tee /tmp/docker_build_${platform_short}_{{tool}}.log 2>&1 && gzip {{tool}}_${platform_short}.tar) just _load_docker {{platform}} _load_docker platform: #!/bin/bash set -x platform_short=$(echo {{platform}} | cut -d '/' -f2) sha256=$(cat /tmp/docker_build_${platform_short}_{{tool}}.log | grep exporting\ config | grep sha256: | head -1 | cut -d':' -f2 | cut -d ' ' -f1) echo $sha256 output={{tool}}_${platform_short} docker load < ${output}.tar.gz docker tag $sha256 {{docker_image}}