From 66b53ec3af0fc0732538a50b2cd3a31ce5ff1ee0 Mon Sep 17 00:00:00 2001 From: mag37 Date: Thu, 19 Jan 2023 12:09:29 +0100 Subject: [PATCH] added some more functionality Added help section. Added getops for options. Added -a for auto update Added -n for no updates. Added $1 use to filter what containers. --- dockcheck.sh | 60 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/dockcheck.sh b/dockcheck.sh index 069e738..d0a1772 100644 --- a/dockcheck.sh +++ b/dockcheck.sh @@ -1,5 +1,36 @@ #!/bin/bash +# Help Function: +Help() { + echo "Syntax: dockcheck.sh [OPTION] [part of name to filter]" + echo "Example: dockcheck.sh -a ng" + echo + echo "Options:" + echo "-h Print this Help." + echo "-a Automatic updates, without interaction." + echo "-n No updates, only checking availability." +} + +while getopts "anh" options; do + case "${options}" in + a) + UpdYes="yes" + ;; + n) + UpdYes="no" + ;; + h|*) # help or unknown option: + Help + exit 0;; + esac +done + +### Set $1 back to $1 (ignoring the places held by getops) +shift "$((OPTIND-1))" + +### Set $1 to a variable for later +SearchName="$1" + ### Check if required binary exists in PATH or directory: if [[ $(builtin type -P "regctl") ]]; then regbin="regctl" @@ -26,9 +57,8 @@ else fi fi - ### Check the image-hash of every running container VS the registry -for i in $(docker ps --format '{{.Names}}') +for i in $(docker ps --filter "name=$SearchName" --format '{{.Names}}') do printf ". " RepoUrl=$(docker inspect "$i" --format='{{.Config.Image}}') @@ -53,21 +83,23 @@ fi ### Optionally get updates if there's any if [ -n "$GotUpdates" ] ; then + if [ -z "$UpdYes" ] ; then printf "\n\033[36;1mDo you want to update? y/[n]\033[0m\n" read UpdYes - if [ "$UpdYes" != "${UpdYes#[Yy]}" ] ; then - for i in "${GotUpdates[@]}" - do - # Check what compose-type is installed: - if docker compose &> /dev/null ; then DockerBin="docker compose" ; else DockerBin="docker-compose" ; fi - ContPath=$(docker inspect "$i" --format '{{ index .Config.Labels "com.docker.compose.project.working_dir"}}') - $DockerBin -f "$ContPath/docker-compose.yml" pull - $DockerBin -f "$ContPath/docker-compose.yml" up -d - done - else - printf "\nNo updates installed, exiting.\n" + else + if [ "$UpdYes" != "${UpdYes#[Yy]}" ] ; then + for i in "${GotUpdates[@]}" + do + # Check what compose-type is installed: + if docker compose &> /dev/null ; then DockerBin="docker compose" ; else DockerBin="docker-compose" ; fi + ContPath=$(docker inspect "$i" --format '{{ index .Config.Labels "com.docker.compose.project.working_dir"}}') + $DockerBin -f "$ContPath/docker-compose.yml" pull + $DockerBin -f "$ContPath/docker-compose.yml" up -d + done + else + printf "\nNo updates installed, exiting.\n" + fi fi else printf "\nNo updates available, exiting.\n" fi -