@@ -19,103 +19,28 @@ data:
19
19
exit 0
20
20
fi
21
21
modDir=/factorio/mods
22
- MOD_BASE_URL="https://mods.factorio.com"
23
- declare -a officialMods
24
- officialMods=(
25
- {{- range .Values.mods.portal }}
26
- {{ . }}
27
- {{- end }}
28
- )
29
- declare -A unofficialMods
30
- {{- range .Values.mods.unofficial }}
31
- unofficialMods[{{ .name | quote}}]={{ .url | quote}}
32
- {{- end }}
33
- function print_step()
34
- {
35
- echo "$1"
36
- }
37
- function print_success()
38
- {
39
- echo "$1"
40
- }
41
- function print_failure()
42
- {
43
- echo "$1"
44
- }
45
- function downloadUnofficial() {
46
- cd $modDir;curl -L -o $2 $1
47
- }
48
- function downloadofficial() {
49
- MOD_NAME="$1"
50
- MOD_NAME_ENCODED="${1// /%20}"
51
- if [[ -z ${USERNAME:-} ]]; then
52
- USERNAME="$(cat /account/username)"
53
- fi
54
-
55
- if [[ -z ${TOKEN:-} ]]; then
56
- TOKEN="$(cat /account/token)"
57
- fi
58
-
59
- if [[ -z ${USERNAME:-} ]]; then
60
- echo "You need to provide your Factorio username to update mods."
61
- fi
62
-
63
- if [[ -z ${TOKEN:-} ]]; then
64
- echo "You need to provide your Factorio token to update mods."
65
- fi
66
- MOD_INFO_URL="$MOD_BASE_URL/api/mods/$MOD_NAME_ENCODED"
67
- MOD_INFO_JSON=$(curl --silent "$MOD_INFO_URL")
68
- # echo "$MOD_INFO_URL $MOD_INFO_JSON"
69
- if ! echo "$MOD_INFO_JSON" | jq -e .name >/dev/null; then
70
- print_success " Custom mod not on $MOD_BASE_URL, skipped."
71
- return 0
72
- fi
73
- MOD_INFO=$(echo "$MOD_INFO_JSON" | jq -j --arg version "$VERSION" ".releases|reverse|map(select(.info_json.factorio_version as \$mod_version | \$version | startswith(\$mod_version)))[0]|.file_name, \";\", .download_url, \";\", .sha1")
74
- echo $MOD_INFO
75
- MOD_FILENAME=$(echo "$MOD_INFO" | cut -f1 -d";")
76
- MOD_URL=$(echo "$MOD_INFO" | cut -f2 -d";")
77
- MOD_SHA1=$(echo "$MOD_INFO" | cut -f3 -d";")
78
- if [[ $MOD_FILENAME == null ]]; then
79
- print_failure " Not compatible with version"
80
- return 0
81
- fi
82
- print_step "Downloading..."
83
- FULL_URL="$MOD_BASE_URL$MOD_URL?username=$USERNAME&token=$TOKEN"
84
- echo $FULL_URL
85
- HTTP_STATUS=$(curl --silent -L -w "%{http_code}" -o "$modDir/$MOD_FILENAME" "$FULL_URL")
86
-
87
- if [[ $HTTP_STATUS != 200 ]]; then
88
- print_failure " Download failed: Code $HTTP_STATUS."
89
- rm -f "$modDir/$MOD_FILENAME"
90
- return 1
91
- fi
92
-
93
- if [[ ! -f $modDir/$MOD_FILENAME ]]; then
94
- print_failure " Downloaded file missing!"
95
- return 1
96
- fi
22
+ FACTORIOVERSION="$(cat /factorio/mods/factorioVersion)"
23
+ USERNAME="$(cat /account/username)"
24
+ TOKEN="$(cat /account/token)"
25
+ if [[ -z ${USERNAME:-} ]]; then
26
+ echo "You need to provide your Factorio username to update mods."
27
+ fi
97
28
98
- if ! [[ $(sha1sum "$modDir/$MOD_FILENAME") =~ $MOD_SHA1 ]]; then
99
- print_failure " SHA1 mismatch!"
100
- rm -f "$modDir/$MOD_FILENAME"
101
- return 1
29
+ if [[ -z ${TOKEN:-} ]]; then
30
+ echo "You need to provide your Factorio token to update mods."
31
+ fi
32
+ {{- range .Values.mods.portal }}
33
+ if [ -z {{ .version | quote }} ]; then
34
+ /usr/local/bin/factorio-mod-downloader download official --name {{ .name | quote}} --destination $modDir --factorioVersion $FACTORIOVERSION --user $USERNAME --token $TOKEN
35
+ else
36
+ /usr/local/bin/factorio-mod-downloader download official --name {{ .name | quote}} --destination $modDir --factorioVersion $FACTORIOVERSION --user $USERNAME --token $TOKEN --version {{ .version | quote}}
102
37
fi
38
+ {{- end }}
39
+
40
+ {{- range .Values.mods.unofficial }}
41
+ /usr/local/bin/factorio-mod-downloader download unofficial --url {{ .url | quote}} --name {{ .name | quote}} --destination $modDir
42
+ {{- end }}
103
43
104
- print_success " Download complete."
105
- }
106
- mkdir -p $modDir
107
- for key in "${!unofficialMods[@]}"; do
108
- downloadUnofficial "${unofficialMods[$key]}" $key
109
- done
110
-
111
- if [ -f "/account/username" ]; then
112
- if [ -f "/account/token" ]; then
113
- echo "server is running version $VERSION"
114
- for officialMod in ${officialMods[*]}; do
115
- downloadofficial $officialMod $USERNAME $TOKEN
116
- done
117
- fi
118
- fi
119
44
# Mark the update as complete by creating the flag file
120
45
touch "$FLAG_FILE"
121
46
echo "Mod update completed."
0 commit comments