This repository was archived by the owner on Feb 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
executable file
·106 lines (92 loc) · 1.82 KB
/
build.sh
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
#!/bin/bash
function build_args() {
local tag
IFS=" "
for tag in $1; do
echo -n "--build-arg LINTERS_${tag}=true "
if [[ " ${PYTHON[*]} " =~ " ${tag} " ]]; then
echo -n "--build-arg PYTHON=true "
fi
if [[ " ${NODEJS[*]} " =~ " ${tag} " ]]; then
echo -n "--build-arg NODEJS=true "
fi
if [[ " ${CURL[*]} " =~ " ${tag} " ]]; then
echo -n "--build-arg CURL=true "
fi
done
}
PYTHON=(
"YAML"
"PYTHON"
"HTML"
"GENERIC"
"DOTENV"
"GIT"
)
NODEJS=(
"CSS"
"JAVASCRIPT"
"FILES"
"JSON"
"MARKDOWN"
"NPM"
"GIT"
"DOCKER"
"HTML"
)
CURL=(
"DOCKER"
"TERRAFORM"
)
TAGS=(
"DOCKER"
"TERRAFORM"
"SHELL"
"YAML"
"PYTHON"
"HTML"
"GENERIC"
"DOTENV"
"GIT"
"ANSIBLE"
"CSS"
"JAVASCRIPT"
"FILES"
"JSON"
"MARKDOWN"
)
function build() {
local tags
tags=$(IFS="|"
for TAG in ${1}; do
echo "${TAG}"
done | sort | tr "\n" " "
)
tags=${tags:0:((${#tags} - 1))}
local version
version=${2:-$(echo "${tags}" | tr "[:upper:]" "[:lower:]" | tr " " "-")}
local build_args
build_args=$(build_args "${tags}")
bash -c "docker build ${build_args} -t danielruthardt/linters:${version} ."
docker push "danielruthardt/linters:${version}"
}
ALL_COMBINATIONS=$(./combinations.py ${#TAGS[@]} ; ./combinations.py 1 ; ./combinations.py 2;)
IFS="
"
for COMBINATIONS in $ALL_COMBINATIONS; do
IFS=","
for COMBINATION in $COMBINATIONS; do
COMBINATION=$(echo "${COMBINATION}" | grep -oE "[A-Z|]+")
if [ "$(echo "${COMBINATION}" | awk -F"|" '{print NF}')" -eq "${#TAGS[@]}" ]; then
build "${COMBINATION}" "all"
else
build "${COMBINATION}"
fi
done
done
build "HTML|CSS"
build "HTML|CSS|JAVASCRIPT|JSON"
build "NPM|JAVASCRIPT|JSON"
build "GIT|FILES|GENERIC"
build "PHYTON|YAML|JSON"
build "TERRAFORM|ANSIBLE"