-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjustfile
123 lines (106 loc) · 2.87 KB
/
justfile
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
##################################################
# Variables
#
PROJECT_DIR := justfile_directory()
PROJECT_NAME := file_stem(justfile_directory())
VENV_NAME := ".venv"
ENV_TOOL := "conda"
ENV_NAME := "mkdocs"
ENV_FILE := "condaenv.yml"
SOURCE_DIR := "docs"
OUTPUT_DIR := "site"
GIT-TAG := `git describe --tags --always`
YEAR := `date +%Y`
DATE := `date +%Y-%m-%d`
BUILDER := "mkdocs"
BUILDER_VERSION := BUILDER + " -V"
python := if os() == "windows" {
"python"
} else {
"python3"
}
pip := if os() == "windows" {
"pip"
} else {
"pip3"
}
sourceVenv := if os() == "windows" {
PROJECT_DIR + "\\" + VENV_NAME + "\\Scripts\\activate.bat"
} else{
"source " + PROJECT_DIR + "/" + VENV_NAME + "/bin/activate"
}
##################################################
# COMMANDS
#
# List all commands
_default:
just --list
# For windows shell to be supported (suppose code is multi-platforms ready)
#set shell := ["bash", "-uc"]
#set windows-shell := ["cmd.exe", "/c"]
# Information about the environment
@info:
echo "Environment Informations"
echo "========================"
echo " OS : {{os()}}({{arch()}})"
echo " Projectdir : {{PROJECT_DIR}}"
echo " ----------------------------"
echo " ENV Tool : {{ENV_TOOL}}"
echo " ENV name : {{ENV_NAME}}"
echo " ----------------------------"
echo " Python cmd : {{python}}"
echo " Pip cmd : {{pip}}"
echo " ----------------------------"
echo " Source dir : {{SOURCE_DIR}}"
echo " Output dir : {{OUTPUT_DIR}}"
echo " ----------------------------"
echo " Builder : `{{BUILDER_VERSION}}`"
# Create and source the python environment
@venv-create:
#!/usr/bin/env bash
set -euo pipefail
# create venv and upgrade pip
echo "Checking venv" && \
test -d {{VENV_NAME}} || { {{python}} -m venv {{VENV_NAME}} &&
{{sourceVenv}} &&
{{pip}} install --upgrade pip &&
{{pip}} install -r requirements.txt; }
# Create the build environment
@conda-create:
{{ENV_TOOL}} env create -f {{ENV_FILE}}
# Export the build environment
@env-export:
#!/usr/bin/env bash
{{sourceVenv}} && \
{{ENV_TOOL}} env export > {{ENV_FILE}}
pip freeze > requirements.txt
# create a release version of the project
changelog-release version=GIT-TAG:
git cliff --tag {{version}}
git tag -a {{version}} -m "Release {{version}}"$
# create the changelog of the project
changelog:
git cliff
# Build HTML static site
@build: venv-create
#!/usr/bin/env bash
{{sourceVenv}} && \
{{BUILDER}} build
# Build HTML static site and serve it locally
@serve: venv-create
#!/usr/bin/env bash
{{sourceVenv}} && \
{{BUILDER}} serve
# Deploy on gh-pages
@deploy: venv-create
#!/usr/bin/env bash
{{sourceVenv}} && \
{{BUILDER}} gh-deploy
# Delete build folder(s)
[linux]
[macos]
@clean:
rm -rf {{OUTPUT_DIR}}
[windows]
@clean:
del {{OUTPUT_DIR}}