diff --git a/dokku-update b/dokku-update index 79df473..59af77b 100755 --- a/dokku-update +++ b/dokku-update @@ -56,35 +56,57 @@ dokku-update-plugin() { fi } -main() { +run-update() { + declare PROGRAM_NAME="$(basename "$0")" declare COMMAND="$1" - local DOKKU_DISTRO PLUGIN_NAME VERSION + declare PARAMETER="$2" + local DOKKU_DISTRO PLUGIN_NAME VERSION SYSTEM_UPDATES if [[ -f "/etc/os-release" ]]; then # shellcheck disable=SC1091 DOKKU_DISTRO=$(. /etc/os-release && echo "$ID") fi - if [[ "$COMMAND" == "version" ]] || [[ "$COMMAND" == "-v" ]]; then - VERSION=UNRELEASED - if [[ -f "/var/lib/dokku-update/VERSION" ]]; then - VERSION="$(cat /var/lib/dokku-update/VERSION)" - fi - echo "dokku-update ${VERSION}" - exit 0 + if [[ "$PARAMETER" == "-s" ]]; then + dokku-log-info "Running system updates" + SYSTEM_UPDATES=true + else + dokku-log-info "Updating Dokku" + SYSTEM_UPDATES=false fi - dokku-log-info "Running system updates" case "$DOKKU_DISTRO" in arch) - yay -Syyua + if [ "$SYSTEM_UPDATES" == true ]; then + yay -Syyua + else + yay -Syu docker-image-labeler dokku nginx plugn sshcommand + fi ;; debian | ubuntu) apt-get update -qq >/dev/null - apt-get -qq -y dist-upgrade + + if [ "$SYSTEM_UPDATES" == true ]; then + apt-get -qq -y dist-upgrade + else + apt-get -qq -y install --only-upgrade docker-image-labeler dokku dokku-event-listener dokku-update gliderlabs-sigil herokuish netrc nginx plugn procfile-util sshcommand + fi ;; - centos | opensuse | rhel) - dokku-log-warn "Updating this operating system is not supported" + centos | rhel) + if [ "$SYSTEM_UPDATES" == true ]; then + yum -y update + else + yum -y update bind-utils cpio curl dos2unix docker-image-labeler git gliderlabs-sigil jq man-db nc netrc nginx plugn procfile-util sshcommand sudo unzip + fi + ;; + opensuse) + zypper refresh + + if [ "$SYSTEM_UPDATES" == true ]; then + zypper -n update + else + zypper -n update bind-utils cpio curl dos2unix docker-image-labeler git gliderlabs-sigil jq man-db nc netrc nginx plugn procfile-util sshcommand sudo unzip + fi ;; *) dokku-log-warn "Updating this operating system is not supported" @@ -109,4 +131,39 @@ main() { dokku cleanup --global } -main "$@" \ No newline at end of file +print-help() { + echo "Updates Dokku & its dependencies, all enabled plugins and rebuilds all Dokku apps. Optionally installs all other system updates." + echo + echo "Usage: $PROGRAM_NAME [run|version]" + echo " Options:" + echo " version Prints version of $PROGRAM_NAME" + echo " run Triggers the update process; when invoked with optional -s argument, all system updates will be installed" +} + +print-version() { + local VERSION + + VERSION=UNRELEASED + if [[ -f "/var/lib/dokku-update/VERSION" ]]; then + VERSION="$(cat /var/lib/dokku-update/VERSION)" + fi + echo "dokku-update ${VERSION}" +} + +main() { + declare COMMAND="$1" + + case "${COMMAND}" in + run) + run-update "$@" + ;; + --version | version | -v) + print-version + ;; + *) + print-help + ;; + esac +} + +main "$@"