-
-
Notifications
You must be signed in to change notification settings - Fork 188
/
run
executable file
·125 lines (98 loc) · 2.61 KB
/
run
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
#!/usr/bin/env bash
set -o errexit
set -o pipefail
DC="${DC:-exec}"
# If we're running in CI we need to disable TTY allocation for docker compose
# commands that enable it by default, such as exec and run.
TTY=""
if [[ ! -t 1 ]]; then
TTY="-T"
fi
# -----------------------------------------------------------------------------
# Helper functions start with _ and aren't listed in this script's help menu.
# -----------------------------------------------------------------------------
function _dc {
docker compose "${DC}" ${TTY} "${@}"
}
function _build_run_down {
docker compose build
docker compose run ${TTY} "${@}"
docker compose down
}
# -----------------------------------------------------------------------------
function cmd {
# Run any command you want in the web container
_dc web "${@}"
}
function flask {
# Run any Flask commands
cmd flask "${@}"
}
function lint:dockerfile {
# Lint Dockerfile
docker container run --rm -i \
hadolint/hadolint hadolint --ignore DL3008 -t style "${@}" - < Dockerfile
}
function lint {
# Lint Python code
cmd flake8 "${@}"
}
function format:imports {
# Sort Python imports
cmd isort . "${@}"
}
function format {
# Format Python code
cmd black . "${@}"
}
function quality {
# Perform all code quality commands together
format:imports "${@}"
format "${@}"
lint "${@}"
}
function test {
# Run test suite
cmd pytest test/ "${@}"
}
function test:coverage {
# Get test coverage
cmd pytest --cov snakeeyes/ --cov lib/ --cov-report term-missing "${@}"
}
function shell {
# Start a Shell session in the web container
cmd bash "${@}"
}
function redis-cli {
# Connect to Redis with redis-cli
_dc redis redis-cli "${@}"
}
function pip3:install {
# Install pip3 dependencies and write lock file
_build_run_down web bin/pip3-install
}
function pip3:outdated {
# List any installed packages that are outdated
cmd pip3 list --outdated
}
function yarn:install {
# Install yarn dependencies and write lock file
_build_run_down webpack yarn install
}
function yarn:outdated {
# List any installed packages that are outdated
_dc webpack yarn outdated
}
function clean {
# Remove cache and other machine generates files
rm -rf .pytest_cache/ .webpack_cache/ public/* .coverage celerybeat-schedule
touch public/.keep
}
function help {
printf "%s <task> [args]\n\nTasks:\n" "${0}"
compgen -A function | grep -v "^_" | cat -n
printf "\nExtended help:\n Each task has comments for general usage\n"
}
# This idea is heavily inspired by: https://github.com/adriancooney/Taskfile
TIMEFORMAT=$'\nTask completed in %3lR'
time "${@:-help}"