SHELL := bash .SHELLFLAGS := -o pipefail -euc export PATH := bin:$(PATH) -include .env export BUILD := build/$(T)/$(L) DEB := riju-$(T)-$(L).deb S3_DEBS := s3://$(S3_BUCKET_BASE)-debs S3_DEB := $(S3_DEBS)/debs/$(DEB) S3_HASH := $(S3_DEBS)/hashes/riju-$(T)-$(L) SHELL_ARGS := ifeq ($(I),admin) SHELL_ARGS := -v $(HOME)/.aws:/var/riju/.aws:ro -e AWS_REGION -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY endif .PHONY: help help: @echo "usage:" @echo @cat Makefile | \ grep -E '[.]PHONY|[#]##' | \ sed -E 's/[.]PHONY: */ make /' | \ sed -E 's/[#]## *(.+)/\n (\1)\n/' ### Build things locally .PHONY: image image: @: $${I} docker build . -f docker/$(I)/Dockerfile -t riju:$(I) --pull .PHONY: script script: @: $${L} $${T} mkdir -p $(BUILD) node src/packager/make-script.js --lang $(L) --type $(T) > $(BUILD)/build.bash chmod +x $(BUILD)/build.bash .PHONY: pkg pkg: @: $${L} $${T} rm -rf $(BUILD)/src $(BUILD)/pkg mkdir -p $(BUILD)/src $(BUILD)/pkg cd $(BUILD)/src && pkg="$(PWD)/$(BUILD)/pkg" ../build.bash fakeroot dpkg-deb --build $(BUILD)/pkg $(BUILD)/$(DEB) ### Run things inside Docker .PHONY: shell shell: @: $${I} docker run -it --rm -v $(PWD):/src $(SHELL_ARGS) riju:$(I) .PHONY: install install: @: $${L} $${T} [[ -z "$$(ls -A /var/lib/apt/lists)" ]] && sudo apt update sudo apt reinstall -y ./$(BUILD)/$(DEB) ### Fetch things from registries .PHONY: pull pull: @: $${I} $${DOCKER_REPO_BASE} docker pull $(DOCKER_REPO_BASE):$(I) docker tag $(DOCKER_REPO_BASE):$(I) riju:$(I) .PHONY: download download: @: $${L} $${T} $${S3_BUCKET_BASE} mkdir -p $(BUILD) aws s3 cp $(S3_DEB) $(BUILD)/$(DEB) ### Publish things to registries .PHONY: push push: @: $${I} $${DOCKER_REPO_BASE} docker tag riju:$(I) $(DOCKER_REPO_BASE):$(I) docker push $(DOCKER_REPO_BASE):$(I) .PHONY: upload upload: @: $${L} $${T} $${S3_BUCKET_BASE} hash=$$(dpkg-deb -f $(BUILD)/$(DEB) Riju-Script-Hash); test $${hash}; aws s3 cp - $(S3_HASH)/$${hash} < /dev/null aws s3 cp $(BUILD)/$(DEB) $(S3_DEB) ### Miscellaneous .PHONY: dockerignore dockerignore: echo "# This file is generated by 'make dockerignore', do not edit." > .dockerignore cat .gitignore | sed 's#^#**/#' >> .dockerignore