#!/bin/bash
list="longhorn-images.txt"
CONTAINER_CLI=${CONTAINER_CLI:-docker}

POSITIONAL=()
while [[ $# -gt 0 ]]; do
    key="$1"
    case $key in
        -r|--registry)
        reg="$2"
        shift # past argument
        shift # past value
        ;;
        -l|--image-list)
        list="$2"
        shift # past argument
        shift # past value
        ;;
        -i|--images)
        images="$2"
        shift # past argument
        shift # past value
        ;;
        -h|--help)
        help="true"
        shift
        ;;
        *)
        echo "Error! invalid flag: ${key}"
        help="true"
        break
        ;;
    esac
done

usage () {
    echo "USAGE: $0 [--image-list longhorn-images.txt] [--images longhorn-images.tar.gz] --registry my.registry.com:5000"
    echo "  [-l|--images-list path] text file with list of images. 1 per line."
    echo "  [-i|--images path] tar.gz generated by docker/podman save. If empty, the script will try to find images in local images"
    echo "  [-r|--registry registry:port] target private registry:port. By default, registry is Docker Hub"
    echo "  [-h|--help] Usage message"
 	echo ""
	echo "To use podman instead of docker set the environment variable CONTAINER_CLI=podman"
}

if [[ $help ]]; then
    usage
    exit 0
fi

if [[ -n $reg ]]; then
    reg+="/"
fi

set -e -x

if [[ $images ]]; then
    $CONTAINER_CLI load --input ${images}
fi

for i in $(cat ${list}); do
    case $i in
    */*/*)
        $CONTAINER_CLI tag ${i} ${reg}longhornio/${i#*/*/}
        $CONTAINER_CLI push ${reg}longhornio/${i#*/*/}
        ;;
    */*)
        $CONTAINER_CLI tag ${i} ${reg}longhornio/${i#*/}
        $CONTAINER_CLI push ${reg}longhornio/${i#*/}
        ;;
    *)
        $CONTAINER_CLI tag ${i} ${reg}longhornio/${i}
        $CONTAINER_CLI push ${reg}longhornio/${i}
        ;;
    esac
done
