r2sync 0.0.4

cli for synchronizing files between a local directory and Cloudflare R2
name = r2sync
ver = v0.0.4

credits.html:
	cargo about generate about.hbs > credits.html

.PHONY: all
all: clean credits.html linux-arm64 linux-amd64 darwin-arm64 darwin-amd64
	./author/dist.sh

.PHONY: upload
upload: all
	env GITHUB_TOKEN=$$(gh auth token) ghr ${ver} dist/

.PHONY: release
release: upload
	git tag -fa v0 -m "Release v0"
	git push origin v0 --force

.PHONY: linux-arm64
linux-arm64:
	docker run --rm --platform linux/arm64 -v "$(PWD)":/home/rust/src -w /home/rust/src rust:latest \
		sh -c "\
		  rustup target add aarch64-unknown-linux-gnu && \
		  apt-get update && apt-get install -y gcc-aarch64-linux-gnu && \
		  export RUSTFLAGS='-C strip=symbols' && \
		  cargo build --release --target aarch64-unknown-linux-gnu && \
		  mkdir -p dist/${name}_${ver}_linux_arm64 && \
		  mv target/aarch64-unknown-linux-gnu/release/${name} ./dist/${name}_${ver}_linux_arm64/${name}"

.PHONY: linux-amd64
linux-amd64:
	docker run --rm --platform linux/amd64 -v "$(PWD)":/home/rust/src -w /home/rust/src rust:latest \
		sh -c "\
		  rustup target add x86_64-unknown-linux-gnu && \
		  apt-get update && apt-get install -y gcc && \
		  export RUSTFLAGS='-C strip=symbols' && \
		  cargo build --release --target x86_64-unknown-linux-gnu && \
		  mkdir -p dist/${name}_${ver}_linux_amd64 && \
		  mv target/x86_64-unknown-linux-gnu/release/${name} ./dist/${name}_${ver}_linux_amd64/${name}"

.PHONE: darwin-arm64
darwin-arm64:
	cargo build --release --target aarch64-apple-darwin
	mkdir -p dist/${name}_${ver}_darwin_arm64
	mv target/aarch64-apple-darwin/release/${name} ./dist/${name}_${ver}_darwin_arm64/${name}

.PHONE: darwin-amd64
darwin-amd64:
	cargo build --release --target x86_64-apple-darwin
	mkdir -p dist/${name}_${ver}_darwin_amd64
	mv target/x86_64-apple-darwin/release/${name} ./dist/${name}_${ver}_darwin_amd64/${name}

.PHONY: clean
clean:
	rm -rf dist
	rm -f credits.html