# Makefile MONOREPO_ROOT := ../ HERE=$(shell pwd) export MONOREPO_REVISION := $(shell git rev-parse HEAD) export BRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD) export OVERLEAF_BASE_BRANCH ?= sharelatex/sharelatex-base:$(BRANCH_NAME) export OVERLEAF_BASE_LATEST ?= sharelatex/sharelatex-base export OVERLEAF_BASE_TAG ?= sharelatex/sharelatex-base:$(BRANCH_NAME)-$(MONOREPO_REVISION) export OVERLEAF_BRANCH ?= sharelatex/sharelatex:$(BRANCH_NAME) export OVERLEAF_LATEST ?= sharelatex/sharelatex export OVERLEAF_TAG ?= sharelatex/sharelatex:$(BRANCH_NAME)-$(MONOREPO_REVISION) all: build-base build-community build-base: cp .dockerignore $(MONOREPO_ROOT) docker build \ --build-arg BUILDKIT_INLINE_CACHE=1 \ --progress=plain \ --file Dockerfile-base \ --pull \ --cache-from $(OVERLEAF_BASE_LATEST) \ --cache-from $(OVERLEAF_BASE_BRANCH) \ --tag $(OVERLEAF_BASE_TAG) \ --tag $(OVERLEAF_BASE_BRANCH) \ $(MONOREPO_ROOT) build-community: cp .dockerignore $(MONOREPO_ROOT) docker build \ --build-arg BUILDKIT_INLINE_CACHE=1 \ --progress=plain \ --build-arg OVERLEAF_BASE_TAG \ --build-arg MONOREPO_REVISION \ --cache-from $(OVERLEAF_LATEST) \ --cache-from $(OVERLEAF_BRANCH) \ --file Dockerfile \ --tag $(OVERLEAF_TAG) \ --tag $(OVERLEAF_BRANCH) \ $(MONOREPO_ROOT) SHELLCHECK_OPTS = \ --shell=bash \ --external-sources \ --exclude=SC1091 SHELLCHECK_COLOR := $(if $(CI),--color=never,--color) SHELLCHECK_FILES := { git ls-files "*.sh" -z; git grep -Plz "\A\#\!.*bash"; } | sort -zu shellcheck: @$(SHELLCHECK_FILES) | xargs -0 -r docker run --rm -v $(HERE):/mnt -w /mnt \ koalaman/shellcheck:stable $(SHELLCHECK_OPTS) $(SHELLCHECK_COLOR) shellcheck_fix: @$(SHELLCHECK_FILES) | while IFS= read -r -d '' file; do \ diff=$$(docker run --rm -v $(HERE):/mnt -w /mnt koalaman/shellcheck:stable $(SHELLCHECK_OPTS) --format=diff "$$file" 2>/dev/null); \ if [ -n "$$diff" ] && ! echo "$$diff" | patch -p1 >/dev/null 2>&1; then echo "\033[31m$$file\033[0m"; \ elif [ -n "$$diff" ]; then echo "$$file"; \ else echo "\033[2m$$file\033[0m"; fi \ done .PHONY: all \ build-base build-community \ shellcheck shellcheck_fix