#!/bin/sh

# $Id: memo_docker,v 1.20 2024/08/06 19:42:38 gilles Exp gilles $

echo imapsync_docker_timestamp_dockerfile
imapsync_docker_timestamp_dockerfile()
{
	DATE_CURRENT=`date +%Y_%m_%d_%H_%M_%S`
	echo $DATE_CURRENT
	sed -i -e "/just_a_comment_to_force_update/s/comment_to_force_update.*/comment_to_force_update $DATE_CURRENT/" Dockerfile
	ci -l -f -m"Changing timestamp to $DATE_CURRENT with imapsync_docker_timestamp_dockerfile" Dockerfile
}

echo imapsync_docker_copy_certificate
imapsync_docker_copy_certificate()
{
    cp /etc/letsencrypt/live/docker.lamiral.info/privkey.pem   .
    cp /etc/letsencrypt/live/docker.lamiral.info/fullchain.pem .
}

echo imapsync_docker_build
imapsync_docker_build()
{
        imapsync_docker_copy_certificate
        docker build --tag gilleslamiral/imapsync . \
                && imapsync_docker_add_tag_version && echo Build SUCCEEDED || echo Build FAILED
}

echo imapsync_docker_build_local
imapsync_docker_build_local()
{
    docker build --file Dockerfile.local --tag gilleslamiral/imapsync . \
        && imapsync_docker_add_tag_version && echo Build SUCCEEDED || echo Build FAILED
}


echo imapsync_docker_version
imapsync_docker_version()
{
        docker run gilleslamiral/imapsync imapsync --version
}

echo imapsync_local_docker_version
imapsync_local_docker_version()
{
        docker run gilleslamiral/imapsync /imapsync --version
}

echo imapsync_local_docker
imapsync_local_docker()
{
        docker run gilleslamiral/imapsync /imapsync  "$@"
}

echo imapsync_local_docker_tests
imapsync_local_docker_tests()
{
        docker run gilleslamiral/imapsync /imapsync --tests "$@"
}

echo imapsync_local_docker_testslive
imapsync_local_docker_testslive()
{
        docker run gilleslamiral/imapsync /imapsync --testslive "$@"
}

echo imapsync_local_docker_testslive6
imapsync_local_docker_testslive6()
{
        docker run gilleslamiral/imapsync /imapsync --testslive6 "$@"
}

echo imapsync_docker_add_tag_version
imapsync_docker_add_tag_version()
{
    docker images gilleslamiral/imapsync
    echo 
    version=`imapsync_docker_version`
    echo $version
    docker tag gilleslamiral/imapsync:latest gilleslamiral/imapsync:$version
    docker images gilleslamiral/imapsync
}



echo imapsync_docker_testslive
imapsync_docker_testslive()
{
    echo docker run gilleslamiral/imapsync imapsync --testslive "$@"
    docker run gilleslamiral/imapsync imapsync --testslive "$@"
}

echo imapsync_docker_testslive6
imapsync_docker_testslive6()
{
    echo docker run gilleslamiral/imapsync imapsync --testslive6 "$@"
    docker run gilleslamiral/imapsync imapsync --testslive6 "$@"
}

echo imapsync_docker_tests
imapsync_docker_tests()
{
    echo docker run gilleslamiral/imapsync imapsync --tests
    docker run gilleslamiral/imapsync imapsync --tests
}

echo imapsync_docker_envfile
imapsync_docker_envfile()
{
        docker run --env-file ./secret.txt gilleslamiral/imapsync imapsync \
        --host1 test1.lamiral.info --user1 test1 \
        --host2 test2.lamiral.info --user2 test2  --justlogin
}

echo docker_delete_all_images
docker_delete_all_images()
{
    docker rm `docker ps -a -q`
    docker rmi `docker images -q`
}

echo docker_system_prune
docker_system_prune()
{
        docker system prune
}

echo docker_delete_dandling_images
docker_delete_dandling_images()
{
	docker images
	dandling_images=`docker images -f dangling=true -q`
	exited_containers=`docker ps -a -f status=exited -q`
	test -n "$exited_containers" && docker rm $exited_containers
	test -n "$dandling_images"   && docker rmi $dandling_images
	docker images
}


echo imapsync_docker_rebuild_from_scratch
imapsync_docker_rebuild_from_scratch()
{
    delete_all_images
    docker images
    imapsync_docker_build
}


echo is_release_number
is_release_number()
{
        echo "$1" | perl -pe 'm/^\d\.\d+$/ || exit 1' 
}

echo imapsync_docker_upload
imapsync_docker_upload()
{
        version=`imapsync_docker_version`
        version_local=`imapsync_local_docker_version`
        
        # upload only after successful tests
        set -x \
        && is_release_number "$version" \
        && is_release_number "$version_local" \
        && test "$version" = "$version_local" \
        && rcsdiff imapsync Dockerfile memo_docker \
        && imapsync_docker_testslive \
        && imapsync_docker_tests \
        && docker run gilleslamiral/imapsync true \
        && docker run gilleslamiral/imapsync diff /imapsync /usr/bin/imapsync \
        && docker login --username=gilleslamiral --password=`cat $HOME/var/pass/secret.docker` \
        && docker push gilleslamiral/imapsync:latest \
        && docker push gilleslamiral/imapsync:$version \
        && set +x && echo imapsync push SUCCEEDED || echo imapsync push FAILED
        set +x
}


echo imapsync_docker_servimapsync
imapsync_docker_servimapsync()
{
cat <<'EOF'
docker run -p 8080:8080 -p8443:8443 \
        -v `pwd`/privkey.pem:/var/tmp/privkey.pem \
        -v `pwd`/fullchain.pem:/var/tmp/fullchain.pem \
        --hostname ks5_docker \
        gilleslamiral/imapsync /servimapsync

docker run -p 8080:8080 -p8443:8443 \
        --hostname ks5_docker \
        gilleslamiral/imapsync /servimapsync
EOF
}