Skip to content

Instantly share code, notes, and snippets.

@kou1okada
Last active February 20, 2023 16:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kou1okada/0510b1fe74286468330c6f63df5eb21c to your computer and use it in GitHub Desktop.
Save kou1okada/0510b1fe74286468330c6f63df5eb21c to your computer and use it in GitHub Desktop.
docker-lstags.sh - list tags for docker image

docker-lstags.sh - list tags for docker image

Usage

Usage: docker-lstags.sh [<namespace>/]<repository>

Requires

The MIT license.

References

#!/usr/bin/env bash
#
# docker-lstags.sh - List tags for docker image
# Copyright (c) 2023 Koichi OKADA. All rights reserved.
# This script is distributed under the MIT license.
#
source hhs.bash 0.2.0
function format ()
{
case "$OPT_FORMAT" in
raw) cat ;;
json) jq '.' ;;
name) jq -r '.results[].name' ;;
digest) jq -r '.results[]|[.digest,.name]|@tsv' ;;
*) error "unsupported format: $OPT_FORMAT" ;;
esac
}
function optparse_docker_lstags ()
{
case "$1" in
-f|--format) # {raw|json|name|digest}
# output format (default: name)
nparams 1
optset FORMAT "$2"
[[ "$2" =~ ^(raw|json|name|digest)$ ]] || { error "unknown format: $2"; exit 1; }
;;
-r|--reload) #
# force reload
nparams 0
optset RELOAD "-f"
;;
*)
return 1
;;
esac
}
function init_docker_lstags ()
{
OPT_FORMAT=name
}
function docker_lstags () # [<namespace>/]<repository>
# List tags for <namespace>/<repository>.
{
local lines
local namespace="${1%/*}"; [[ ! "$1" =~ / ]] && namespace="library"
local repository="${1#*/}"
local next="https://hub.docker.com/v2/namespaces/$namespace/repositories/$repository/tags"
while [ -n "$next" ]; do
fetch.sh -q "${OPT_RELOAD[@]}" "$next"
read next < <(fetch.sh -q "${OPT_RELOAD[@]}" "$next" | jq -r '.next'); [ "$next" = "null" ] && next=""
done | format
}
invoke_command "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment