Skip to content

Commit 42e8761

Browse files
authored
Merge pull request #294 from linuxserver/refactor-init
feat: refactor init and replace sed with jq
2 parents 8d55ed3 + 4ca6808 commit 42e8761

File tree

1 file changed

+19
-23
lines changed
  • root/etc/s6-overlay/s6-rc.d/init-transmission-config

1 file changed

+19
-23
lines changed

root/etc/s6-overlay/s6-rc.d/init-transmission-config/run

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,51 @@
11
#!/usr/bin/with-contenv bash
22
# shellcheck shell=bash
33

4-
# make folders
4+
# make folders
55
mkdir -p \
66
/downloads/{complete,incomplete} /watch
77

8-
# copy config
8+
# copy config
99
if [[ ! -f /config/settings.json ]]; then
1010
cp /defaults/settings.json /config/settings.json
1111
fi
1212

13-
if [[ -n "$USER" ]] && [[ -n "$PASS" ]]; then
14-
sed -i '/rpc-authentication-required/c\ "rpc-authentication-required": true,' /config/settings.json
15-
sed -i "/rpc-username/c\ \"rpc-username\": \"$USER\"," /config/settings.json
16-
sed -i "/rpc-password/c\ \"rpc-password\": \"$PASS\"," /config/settings.json
13+
if [[ -n "${USER}" ]] && [[ -n "${PASS}" ]]; then
14+
echo -E "$(jq -r '.["rpc-authentication-required"] = true' /config/settings.json)" >/config/settings.json
1715
else
18-
sed -i '/rpc-authentication-required/c\ "rpc-authentication-required": false,' /config/settings.json
19-
sed -i "/rpc-username/c\ \"rpc-username\": \"$USER\"," /config/settings.json
20-
sed -i "/rpc-password/c\ \"rpc-password\": \"$PASS\"," /config/settings.json
16+
echo -E "$(jq -r '.["rpc-authentication-required"] = false' /config/settings.json)" >/config/settings.json
2117
fi
18+
echo -E "$(jq -r --arg user "${USER}" '.["rpc-username"] = $user' /config/settings.json)" >/config/settings.json
19+
echo -E "$(jq -r --arg pass "${PASS}" '.["rpc-password"] = $pass' /config/settings.json)" >/config/settings.json
2220

23-
if [[ -n "$WHITELIST" ]]; then
24-
sed -i '/rpc-whitelist-enabled/c\ "rpc-whitelist-enabled": true,' /config/settings.json
25-
sed -i "/\"rpc-whitelist\"/c\ \"rpc-whitelist\": \"$WHITELIST\"," /config/settings.json
21+
if [[ -n "${WHITELIST}" ]]; then
22+
echo -E "$(jq -r '.["rpc-whitelist-enabled"] = true' /config/settings.json)" >/config/settings.json
2623
else
27-
sed -i '/rpc-whitelist-enabled/c\ "rpc-whitelist-enabled": false,' /config/settings.json
28-
sed -i "/\"rpc-whitelist\"/c\ \"rpc-whitelist\": \"$WHITELIST\"," /config/settings.json
24+
echo -E "$(jq -r '.["rpc-whitelist-enabled"] = false' /config/settings.json)" >/config/settings.json
2925
fi
26+
echo -E "$(jq -r --arg whitelist "${WHITELIST}" '.["rpc-whitelist"] = $whitelist' /config/settings.json)" >/config/settings.json
3027

31-
if [[ -n "$HOST_WHITELIST" ]]; then
32-
sed -i '/rpc-host-whitelist-enabled/c\ "rpc-host-whitelist-enabled": true,' /config/settings.json
33-
sed -i "/\"rpc-host-whitelist\"/c\ \"rpc-host-whitelist\": \"$HOST_WHITELIST\"," /config/settings.json
28+
if [[ -n "${HOST_WHITELIST}" ]]; then
29+
echo -E "$(jq -r '.["rpc-host-whitelist-enabled"] = true' /config/settings.json)" >/config/settings.json
3430
else
35-
sed -i '/rpc-host-whitelist-enabled/c\ "rpc-host-whitelist-enabled": false,' /config/settings.json
36-
sed -i "/\"rpc-host-whitelist\"/c\ \"rpc-host-whitelist\": \"$HOST_WHITELIST\"," /config/settings.json
31+
echo -E "$(jq -r '.["rpc-host-whitelist-enabled"] = false' /config/settings.json)" >/config/settings.json
3732
fi
33+
echo -E "$(jq -r --arg host_whitelist "${HOST_WHITELIST}" '.["rpc-host-whitelist"] = $host_whitelist' /config/settings.json)" >/config/settings.json
3834

3935
if [[ -n "${PEERPORT}" ]]; then
40-
sed -i "/\"peer-port\"/c\ \"peer-port\": ${PEERPORT}," /config/settings.json
41-
sed -i '/peer-port-random-on-start/c\ "peer-port-random-on-start": false,' /config/settings.json
36+
echo -E "$(jq -r --arg peerport "${PEERPORT}" '.["peer-port"] = $peerport' /config/settings.json)" >/config/settings.json
37+
echo -E "$(jq -r '.["peer-port-random-on-start"] = false' /config/settings.json)" >/config/settings.json
4238
fi
4339

4440
if [[ -n "${UMASK}" ]]; then
45-
sed -i "/\"umask\"/c\ \"umask\": \"${UMASK}\"," /config/settings.json
41+
echo -E "$(jq -r --arg umask "${UMASK}" '.["umask"] = $umask' /config/settings.json)" >/config/settings.json
4642
fi
4743

4844
# Handle old theme locations
4945
mkdir -p {/transmissionic,/combustion-release,/flood-for-transmission,/kettu,/transmission-web-control}
5046
echo /transmissionic /combustion-release /flood-for-transmission /kettu /transmission-web-control | xargs -n1 ln -s /defaults/index.html
5147

52-
# permissions
48+
# permissions
5349
lsiown abc:abc \
5450
/config/settings.json
5551

0 commit comments

Comments
 (0)