-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile.common
49 lines (42 loc) · 1.55 KB
/
Makefile.common
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# === PREAMBLE START
# See https://tech.davis-hansson.com/p/make/
SHELL := bash
.ONESHELL:
.SHELLFLAGS := -eu -o pipefail -c
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
ifeq ($(origin .RECIPEPREFIX), undefined)
$(error This Make does not support .RECIPEPREFIX. Please use GNU Make 4.0 or later)
endif
.RECIPEPREFIX = >
# === PREAMBLE END
# This will fail if there are spaces in the path!
DIR_PROJECT = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
# Define a folder for empty targets which can be conveniently ignored in version control / deployment
# See https://www.gnu.org/software/make/manual/html_node/Empty-Targets.html
DIR_EMPTY := .empty-targets
$(DIR_EMPTY):
> mkdir $(DIR_EMPTY)
.venv:
> python3 -m venv .venv
> source .venv/bin/activate
# https://bugs.python.org/issue30628
> pip install --upgrade pip setuptools wheel
$(DIR_EMPTY)/pypi-deps: requirements.txt | $(DIR_EMPTY) .venv
> source .venv/bin/activate
> pip install --no-cache-dir -r requirements.txt
> touch $@
# TODO Find a better name. Used for private (non PyPI) and / or local dependencies. Adjust imports & ignore files.
# Local dependencies need to be available in each folder meant to be deployed as a Google Cloud Function
DIR_LOCAL_DEPS := shared
.PHONY: $(DIR_LOCAL_DEPS)
$(DIR_LOCAL_DEPS):
> rsync -a --delete $(DIR_PROJECT)$(DIR_LOCAL_DEPS) .
# TODO Add test to prerequisites
.PHONY: deploy
deploy: $(DIR_LOCAL_DEPS)
> gcloud functions deploy $(DEPLOY_NAME) \
> --region $(DEPLOY_REGION) \
> --project $(DEPLOY_PROJECT_ID) \
> $(DEPLOY_ARGS)