This repository has been archived by the owner on Aug 25, 2024. It is now read-only.
generated from entelecheia/course-template
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Makefile
147 lines (108 loc) · 5.71 KB
/
Makefile
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# To do stuff with make, you type `make` in a directory that has a file called
# "Makefile". You can also type `make -f <makefile>` to use a different filename.
#
# A Makefile is a collection of rules. Each rule is a recipe to do a specific
# thing, sort of like a grunt task or an npm package.json script.
#
# A rule looks like this:
#
# <target>: <prerequisites...>
# <commands>
#
# The "target" is required. The prerequisites are optional, and the commands
# are also optional, but you have to have one or the other.
#
# Type `make` to show the available targets and a description of each.
#
.DEFAULT_GOAL := help
.PHONY: help
help: ## Display this help
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-25s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
##@ Clean-up
clean: ## run all clean commands
@poe clean
##@ Utilities
large-files: ## show the 20 largest files in the repo
@find . -printf '%s %p\n'| sort -nr | head -20
disk-usage: ## show the disk usage of the repo
@du -h -d 2 .
git-sizer: ## run git-sizer
@git-sizer --verbose
gc-prune: ## garbage collect and prune
@git gc --prune=now
##@ Setup
install-node: ## install node
@export NVM_DIR="$${HOME}/.nvm"; \
[ -s "$${NVM_DIR}/nvm.sh" ] && . "$${NVM_DIR}/nvm.sh"; \
nvm install --lts
nvm-ls: ## list node versions
@export NVM_DIR="$${HOME}/.nvm"; \
[ -s "$${NVM_DIR}/nvm.sh" ] && . "$${NVM_DIR}/nvm.sh"; \
nvm ls
set-default-node: ## set default node
@export NVM_DIR="$${HOME}/.nvm"; \
[ -s "$${NVM_DIR}/nvm.sh" ] && . "$${NVM_DIR}/nvm.sh"; \
nvm alias default node
install-pipx: ## install pipx (pre-requisite for external tools)
@command -v pipx &> /dev/null || pip install --user pipx || true
install-copier: install-pipx ## install copier (pre-requisite for init-project)
@command -v copier &> /dev/null || pipx install copier || true
install-poetry: install-pipx ## install poetry (pre-requisite for install)
@command -v poetry &> /dev/null || pipx install poetry || true
install-poe: install-pipx ## install poetry (pre-requisite for install)
@command -v poe &> /dev/null || pipx install poethepoet || true
install-commitzen: install-pipx ## install commitzen (pre-requisite for commit)
@command -v cz &> /dev/null || pipx install commitizen || true
install-precommit: install-pipx ## install pre-commit
@command -v pre-commit &> /dev/null || pipx install pre-commit || true
install-precommit-hooks: install-precommit ## install pre-commit hooks
@pre-commit install
mkvirtualenv: ## create the project environment
@python3 -m venv "$$WORKON_HOME/deepnlp-2023"
@. "$$WORKON_HOME/deepnlp-2023/bin/activate"
@pip install --upgrade pip setuptools wheel
mkvirtualenv-system: ## create the project environment with system site packages
@python3 -m venv "$$WORKON_HOME/deepnlp-2023" --system-site-packages
@. "$$WORKON_HOME/deepnlp-2023/bin/activate"
@pip install --upgrade pip setuptools wheel
workon: ## activate the project environment
@. "$$WORKON_HOME/deepnlp-2023/bin/activate"
initialize: install-pipx ## initialize the project environment
@pipx install copier
@pipx install poethepoet
@pipx install commitizen
@pipx install pre-commit
init-project: initialize remove-template ## initialize the project (Warning: do this only once!)
@copier copy --trust --answers-file .copier-config.yaml gh:entelecheia/hyperfast-python-template .
reinit-project: install-copier ## reinitialize the project (Warning: this may overwrite existing files!)
@bash -c 'args=(); while IFS= read -r file; do args+=("--skip" "$$file"); done < .copierignore; copier copy --trust "$${args[@]}" --answers-file .copier-config.yaml gh:entelecheia/hyperfast-python-template .'
reinit-docker-project: install-copier ## reinitialize the project (Warning: this may overwrite existing files!)
@bash -c 'args=(); while IFS= read -r file; do args+=("--skip" "$$file"); done < .copierignore; copier copy "$${args[@]}" --answers-file .copier-docker-config.yaml --trust gh:entelecheia/hyperfast-docker-template .'
##@ Docker
symlink-global-docker-env: ## symlink global docker env file for local development
@DOCKERFILES_SHARE_DIR="$HOME/.local/share/dockerfiles" \
DOCKER_GLOBAL_ENV_FILENAME=".env.docker" \
DOCKER_GLOBAL_ENV_FILE="$${DOCKERFILES_SHARE_DIR}/$${DOCKER_GLOBAL_ENV_FILENAME}" \
[ -f "$${DOCKER_GLOBAL_ENV_FILE}" ] && ln -sf "$${DOCKER_GLOBAL_ENV_FILE}" .env.docker || echo "Global docker env file not found"
docker-login: ## login to docker
@bash .docker/.docker-scripts/docker-compose.sh login
docker-build-base: ## build the docker base image
@bash .docker/.docker-scripts/docker-compose.sh build --variant base
docker-build-app: ## build the docker app image
@bash .docker/.docker-scripts/docker-compose.sh build --variant app
docker-config-base: ## show the docker base config
@bash .docker/.docker-scripts/docker-compose.sh config --variant base
docker-config-app: ## show the docker app config
@bash .docker/.docker-scripts/docker-compose.sh config --variant app
docker-push-base: ## push the docker base image
@bash .docker/.docker-scripts/docker-compose.sh push --variant base
docker-push-app: ## push the docker app image
@bash .docker/.docker-scripts/docker-compose.sh push --variant app
docker-run-base: ## run the docker base image
@bash .docker/.docker-scripts/docker-compose.sh run --variant base
docker-run-app: ## run the docker app image
@bash .docker/.docker-scripts/docker-compose.sh run --variant app
docker-up-app: ## launch the docker app image
@bash .docker/.docker-scripts/docker-compose.sh up --variant app
docker-up-app-detach: ## launch the docker app image in detached mode
@bash .docker/.docker-scripts/docker-compose.sh up --variant app --detach