diff --git a/scripts/rcstack/rcstack b/scripts/rcstack/rcstack index a4bd5c4..6118ee9 100755 --- a/scripts/rcstack/rcstack +++ b/scripts/rcstack/rcstack @@ -1076,7 +1076,7 @@ rcstack_cli_docker_upgrade_usage() { fi printf "%s\n" "Usage:" - printf " rcstack cli docker-upgrade\n" + printf " rcstack cli docker-upgrade [OPTIONS]\n" printf " rcstack cli docker-upgrade --help | -h\n" echo @@ -1084,6 +1084,12 @@ rcstack_cli_docker_upgrade_usage() { if [[ -n $long_usage ]]; then printf "%s\n" "Options:" + # :command.usage_flags + # :flag.usage + printf " %s\n" "--compose" + printf " run an upgrade of docker compose to latest version\n" + echo + # :command.usage_fixed_flags printf " %s\n" "--help, -h" printf " Show this help\n" @@ -2386,6 +2392,23 @@ slugify() { echo "$slug" } +check_os() { + echo `uname -s` +} + +check_macos_memory() { + echo $(($(memory_pressure | head -n 1 | awk '{ print $4 }') / 1024 / 1024 / 1024)) +} + +check_linux_memory() { + mem=`free -m --si | awk ' /Mem:/ {print $2}'` + if [ "$mem" -ge 990 -a "$mem" -lt 1000 ]; then + echo 1 + else + echo `free -g --si | awk ' /Mem:/ {print $2} '` + fi +} + # src/lib/validate_stack_exists.sh validate_stack_exists() { @@ -3766,13 +3789,34 @@ rcstack_cli_docker_upgrade_command() { # src/cli_docker_upgrade_command.sh DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} DOCKER_CLI_PLUGINS=$DOCKER_CONFIG/cli-plugins + upgrade_compose=${args[--compose]} - if [[ -f "$DOCKER_CLI_PLUGINS/docker-compose" ]]; then - echo "found docker-compose at $DOCKER_CLI_PLUGINS, removing it now..." - rm -rf "$DOCKER_CLI_PLUGINS/docker-compose" - fi + curl -fsSL https://get.docker.com -o install-docker.sh + # sh install-docker.sh --version 23.0 + sh install-docker.sh + rm -rf install-docker.sh - curl https://get.docker.com/ | sh + if [[ $upgrade_compose ]]; then + + os_type=$(check_os) + if [ "$os_type" != "Linux" ]; then + echo "$(red compose upgrade is only available for Linux architecture, got \"$os_type\" instead)" + exit + fi + + # just ensure we have this dir + mkdir -p "$DOCKER_CLI_PLUGINS" + + if [[ -f "$DOCKER_CLI_PLUGINS/docker-compose" ]]; then + echo "found docker-compose at $DOCKER_CLI_PLUGINS, removing it now..." + rm -rf "$DOCKER_CLI_PLUGINS/docker-compose" + fi + + NEW_COMPOSE_VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d') + echo "new compose version $NEW_COMPOSE_VERSION to be installed in $DOCKER_CLI_PLUGINS" + curl -fsSL https://github.com/docker/compose/releases/download/$NEW_COMPOSE_VERSION/docker-compose-linux-x86_64 -o $DOCKER_CLI_PLUGINS/docker-compose + chmod +x $DOCKER_CLI_PLUGINS/docker-compose + fi } @@ -6307,6 +6351,13 @@ rcstack_cli_docker_upgrade_parse_requirements() { while [[ $# -gt 0 ]]; do key="$1" case "$key" in + # :flag.case + --compose) + + # :flag.case_no_arg + args['--compose']=1 + shift + ;; -?*) printf "invalid option: %s\n" "$key" >&2