2018-06-01 02:08:01 +02:00
|
|
|
#!/bin/ash
|
2018-06-03 00:21:57 +02:00
|
|
|
set -euxo pipefail
|
|
|
|
## This docker-entrypoint will take a copy of the configuration and install any
|
2018-06-01 02:15:49 +02:00
|
|
|
## envvars and then copy any required files into the /app/ directory next to any
|
|
|
|
## custom files added by the user.
|
2018-06-01 19:41:26 +02:00
|
|
|
|
|
|
|
# default to run whatever the user wanted like "/bin/ash"
|
|
|
|
## If user runs no need to run any more of the entrypoint script.
|
|
|
|
if [[ -z "$@" ]]; then
|
2018-06-01 22:23:27 +02:00
|
|
|
echof info "User did not attempt input. Now executing docker-entrypoint."
|
2018-06-01 19:41:26 +02:00
|
|
|
else
|
|
|
|
exec "$@"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2018-06-03 00:46:51 +02:00
|
|
|
function configure_speech() {
|
|
|
|
# install configuration changes here.
|
|
|
|
echof info "At some point there will be code here."
|
|
|
|
}
|
2018-06-01 22:20:50 +02:00
|
|
|
|
2018-06-03 00:46:51 +02:00
|
|
|
function final_permset() {
|
|
|
|
## Finally reassert permissions in case there is user added drift.
|
|
|
|
rddo /app "test_for_dir" '775 "speech:speech"'
|
|
|
|
rfdo /app "test_for_file" '665 "speech:speech"'
|
2018-06-01 22:22:13 +02:00
|
|
|
## Define any permission exceptions here.
|
2018-06-01 22:20:50 +02:00
|
|
|
# test_for_dir /app/config 775 "speech:speech"
|
|
|
|
# test_for_file /app/config/siteConfig.json 665 "speech:speech"
|
2018-06-01 22:15:33 +02:00
|
|
|
echof info "Copied Spee.ch and set permissions"
|
2018-06-03 00:46:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# if Spee.ch is not yet installed, copy it into web root.
|
|
|
|
# This could be updated to be part of an upgrade mechanism.
|
|
|
|
if [ "$(ls -A /app)" ]; then
|
|
|
|
echof warn "/app is not Empty. It contains:" 1>&2
|
|
|
|
ls -A 1>&2
|
2018-06-03 00:51:43 +02:00
|
|
|
## If siteConfig.json isn't installed add it and configure or ignore and proceed.
|
2018-06-03 00:46:51 +02:00
|
|
|
if [ ! -e '/app/config/siteConfig.json' ]; then
|
|
|
|
echof warn "Spee.ch doesn't appear to have a configuration."
|
|
|
|
echof blank "Don't worry we can install it for you."
|
|
|
|
configure_speech
|
|
|
|
else
|
2018-06-03 00:51:43 +02:00
|
|
|
## If the file exists skip configuration and proceed.
|
2018-06-03 00:46:51 +02:00
|
|
|
echof info "Spee.ch config already installed skipping configuration step."
|
|
|
|
final_permset
|
|
|
|
fi
|
2018-06-03 00:51:43 +02:00
|
|
|
## Install all other files after installing siteConfig.json
|
2018-06-03 00:46:51 +02:00
|
|
|
echof info "Making an attempt to nicely merge files using:"
|
|
|
|
echof run "mv -fnu /usr/local/src/www.spee.ch/* /app/"
|
|
|
|
mv -fnu /usr/local/src/www.spee.ch/* /app/
|
2018-06-03 00:51:43 +02:00
|
|
|
final_permset
|
2018-06-03 00:46:51 +02:00
|
|
|
else
|
|
|
|
echof info "Speech wasn't installed, installing fresh copy now."
|
|
|
|
configure_speech
|
|
|
|
echof run "mv /usr/local/src/www.spee.ch/* /app/"
|
|
|
|
mv /usr/local/src/www.spee.ch/* /app/
|
|
|
|
final_permset
|
2018-06-01 19:41:26 +02:00
|
|
|
fi
|
|
|
|
|
2018-06-03 00:53:00 +02:00
|
|
|
## Superfluous permissions assertion maybe axe this later.
|
2018-06-01 19:41:26 +02:00
|
|
|
echof run 'test_for_dir /app/config/siteConfig.json 775 "speech:speech"'
|
|
|
|
test_for_file /app/config/siteConfig.json 775 "speech:speech"
|