63 lines
1.9 KiB
Bash
63 lines
1.9 KiB
Bash
# get ports from nginx proxy
|
|
function _ports(){
|
|
grep -E "set .port|server_name" /app/nginxproxy/data/nginx/proxy_host/*.conf \
|
|
| sed 's/^[ \t]*//; s/.*conf://' \
|
|
| paste - - \
|
|
| sed 's/set \$port //; s/server_name //; s/;//g' \
|
|
| awk '{$1=$1; print}' \
|
|
| sort -n \
|
|
| column -t -N "PORT,TARGET,OTHER_TARGET" -W "OTHER_TARGET" -s ' ' -o ' | ';
|
|
}
|
|
alias ports='_ports'
|
|
|
|
# tmp rebuild for hugo development
|
|
alias hugo-rebuild='rm -rf public/ && hugo server --appendPort=false --baseURL="/" --ignoreCache'
|
|
|
|
# helpers for quickly editing aliases
|
|
alias src='source ~/.bash_aliases'
|
|
alias edit='vim /srv/configs/.bash_aliases'
|
|
|
|
# Docker Image Version Tag checker
|
|
function _tagger() {
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: tag <image>:<tag>"
|
|
return 1
|
|
fi
|
|
|
|
# Split image and tag safely
|
|
local INPUT="$1"
|
|
local REPO="${INPUT%%:*}"
|
|
local TAG="${INPUT##*:}"
|
|
|
|
# If no tag provided, default to latest
|
|
[ "$REPO" = "$TAG" ] && TAG="latest"
|
|
|
|
# Handle official library images
|
|
local API_REPO="$REPO"
|
|
[[ "$REPO" != *"/"* ]] && API_REPO="library/$REPO"
|
|
|
|
# 1. Grab the exact unique digest for the target tag
|
|
local DIGEST
|
|
DIGEST=$(curl -s "https://hub.docker.com/v2/repositories/${API_REPO}/tags/${TAG}" | jq -r '.digest // empty')
|
|
|
|
if [ -z "$DIGEST" ] || [ "$DIGEST" = "null" ]; then
|
|
echo "Error: Image or tag not found on Docker Hub."
|
|
return 1
|
|
fi
|
|
|
|
# 2. Get the sibling tag sharing the same digest, skipping text labels
|
|
local VERSION
|
|
VERSION=$(curl -s "https://hub.docker.com/v2/repositories/${API_REPO}/tags/?page_size=100" \
|
|
| jq -r --arg dig "$DIGEST" \
|
|
'.results[] | select(.digest == $dig) | .name' \
|
|
| grep -E -v 'latest|alpine|slim|debian|bullseye|bookworm|ubuntu|test|rc|nightly' \
|
|
| head -n 1)
|
|
|
|
# 3. Output results
|
|
if [ -n "$VERSION" ]; then
|
|
echo "${REPO}:${VERSION}"
|
|
else
|
|
echo "${REPO}:${TAG}"
|
|
fi
|
|
}
|
|
alias tag='_tagger' |