-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate-old.sh
133 lines (118 loc) · 3.55 KB
/
update-old.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
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
#!/usr/bin/env bash
set -Eeuo pipefail
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
versions=( "$@" )
if [ ${#versions[@]} -eq 0 ]; then
versions=( */ )
fi
versions=( "${versions[@]%/}" )
# https://www.drupal.org/docs/8/system-requirements/php-requirements#php_required
defaultPhpVersion='8.1'
declare -A phpVersions=(
# https://www.drupal.org/docs/7/system-requirements/php-requirements#php_required
#[7]='7.4'
#[6]='5.6'
[6]='7.4'
[7]='8.0'
[9.4]='8.1'
[9.5]='8.1'
)
defaultDrushVersion='10.3.6'
declare -A drushVersions=(
[6]='7.4.0'
[7]='8.3.2'
[9.4]='10.3.6'
[9.5]='10.3.6'
)
defaultComposerVersion='1.10'
declare -A composerVersions=(
[6]='1.10' # old drupal 6 needs no composer
[7]='1.10' #
[9.4]='2.5'
[9.5]='2.5'
)
for version in "${versions[@]}"; do
rcGrepV='-v'
rcVersion="${version%-rc}"
if [ "$rcVersion" != "$version" ]; then
rcGrepV=
fi
oldVersion=""
if [ "6" == "$version" ]; then
fullVersion="6.38"
md5="2ece34c3bb74e8bff5708593fa83eaac"
oldVersion="6"
fi
case "$rcVersion" in
7|9.*)
continue;
;;
6|7|8.*)
# e.g. 7.x or 8.x
drupalRelease="${rcVersion%%.*}.x"
;;
9.*)
# there is no https://updates.drupal.org/release-history/drupal/9.x (or 9.0.x)
# (07/2020) current could also be used for 8.7, 8.8, 8.9, 9.0, 9.1
drupalRelease='current'
;;
esac
fullVersion="$(
wget -qO- "https://updates.drupal.org/release-history/drupal/$drupalRelease" \
| awk -v RS='[<>]' '
$1 == "release" { release = 1; version = ""; mdhash = ""; tag = ""; next }
release && $1 ~ /^version|mdhash$/ { tag = $1; next }
release && tag == "version" { version = $1 }
release && tag == "mdhash" { mdhash = $1 }
release { tag = "" }
release && $1 == "/release" { release = 0; print version, mdhash }
' \
| grep -E "^${rcVersion}[. -]" \
| grep $rcGrepV -E -- '-rc|-beta|-alpha|-dev' \
| head -1
)"
if [ "6" == "$version" ]; then
fullVersion="6.60 from-git-php74-ready"
fi
if [ -z "$fullVersion" ]; then
#echo >&2 "error: cannot find release for $version"
#exit 1
echo "error: cannot find release for $version"
continue
fi
md5="${fullVersion##* }"
fullVersion="${fullVersion% $md5}"
echo "$version: $fullVersion ($md5)"
for variant in {apache,fpm}-buster fpm-alpine3.12 apache; do
phpVersion="${phpVersions[$version]:-$defaultPhpVersion}"
[ -e "$version/php$phpVersion/$variant" ] || continue
dist='debian'
if [[ "$variant" = *alpine* ]]; then
dist='alpine'
fi
composerVersion="${composerVersions[$version]:-$defaultComposerVersion}"
phpImage="${phpVersions[$version]:-$defaultPhpVersion}-$variant"
sedArgs=(
-e 's/%%PHP_VERSION%%/'"${phpImage}"'/'
-e 's/%%VERSION%%/'"$fullVersion"'/'
-e 's/%%MD5%%/'"$md5"'/'
-e 's/%%DRUSH_VERSION%%/'"${drushVersions[$version]:-$defaultDrushVersion}"'/'
-e 's/%%COMPOSER_VERSION%%/'"$composerVersion"'/'
)
template="Dockerfile-$dist.template"
case "$version" in
# 6|7|<=8.7 has no release in drupal/recommended-project
# so its Dockerfile is based on the old template
6|7 )
template="Dockerfile-${version}-$dist.template"
;;
"8.6" | "8.7" )
template="Dockerfile-8-$dist.template"
;;
* )
;;
esac
sed -r "${sedArgs[@]}" "$template" > "$version/php$phpVersion/$variant/Dockerfile"
done
done
( grep -v "ENV DRUPAL_VERSION" README.md > README.md.tmp; grep -R -h "ENV DRUPAL_VERSION" */php*/apache*/* |sort|uniq >> README.md.tmp; mv -f README.md.tmp README.md );