#! /bin/sh

user_dir=/data/takin-frontend
admin_dir=/data/takin-admin-frontend
userback_dir=/data/takin-backend
adminback_dir=/data/takin-admin-backend
ctrl_dir=/data/takin-controller
docs_dir=/data/takin-docs
api_dir=/data/api-service
pkg_dir=/data/zeronewspkg
website_dir=/data/takin-website
traffic_dir=/data/zeronews-traffic
agent_dir=/data//data/zeronews-agent

tag="main.v2"

user_docker="zeronews/takin-frontend:$tag"
userback_docker="zeronews/takin-platform-backend:$tag"
admin_docker="zeronews/takin-admin-frontend:$tag"
adminback_docker="zeronews/takin-admin-backend:$tag"
ctrl_docker="zeronews/takin-controller:$tag"
docs_docker="zeronews/takin-docs:$tag"
api_docker="zeronews/api-service:$tag"
pkg_docker=" zeronews/zeronewspkg:$tag"
website_docker="zeronews/takin-website-frontend"
traffic_docker="zeronews/zeronews-traffic-metrices:$tag"
agent_docker="zeronews/zeronews-agent:$tag"

zeronews_upgrade_up() {
    if [ -d $1 ]; then
      echo "cd $1"
      cd $1

      echo "docker tag $2 $2-$(date '+%Y-%m-%d')"
      docker tag $2 $2-$(date '+%Y-%m-%d')

      echo "docker pull $2"
      docker pull $2

      echo "docker compose down"
      docker compose down

      echo "docker compose up -d"
      docker compose up -d

      echo "docker system prune -f"
      docker system prune -f
    else
      echo "Dir $1 not found"
    fi

}

zeronews_down() {
    if [ -d $1 ]; then
      cd $1
      docker compose down
    else
      echo "Dir $1 not found"
    fi
}

case $1 in
    "user")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $user_dir $user_docker
    elif [ $2 = "down" ]; then
      zeronews_down $user_dir
    fi
    ;;

    "admin")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $admin_dir $admin_docker
    elif [ $2 = "down" ]; then
      zeronews_down $admin_dir
      fi
    ;;
    "userback")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $userback_dir $userback_docker
    elif [ $2 = "down" ]; then
      zeronews_down $userback_dir
      fi
    ;;

    "adminback")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $adminback_dir $adminback_docker
    elif [ $2 = "down" ]; then
      zeronews_down $adminback_dir
      fi
    ;;
    "controller")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $ctrl_dir $ctrl_docker
    elif [ $2 = "down" ]; then
      zeronews_down $ctrl_dir
      fi
    ;;

    "apiservice")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $api_dir $api_docker
    elif [ $2 = "down" ]; then
      zeronews_down $api_dir
      fi
    ;;
    "docs")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $docs_dir $docs_docker
    elif [ $2 = "down" ]; then
      zeronews_down $docs_dir
      fi
    ;;

    "pkg")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $pkg_dir $pkg_docker
    elif [ $2 = "down" ]; then
      zeronews_down $pkg_dir
      fi
    ;;
    "website")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $website_dir $website_docker
    elif [ $2 = "down" ]; then
      zeronews_down $website_dir
      fi
    ;;
    "traffic")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $traffic_dir $traffic_docker
    elif [ $2 = "down" ]; then
      zeronews_down $traffic_dir
      fi
    ;;
    "agent")
    if [ $2 = "up" ];then
      zeronews_upgrade_up $agent_dir $agent_docker
    elif [ $2 = "down" ]; then
      zeronews_down $agent_dir
      fi
    ;;
    "help")
      echo "Apply zeronews module upgrade or down"
      echo "  Command module_name up/down"
      echo "  ZeroNews Module name definition:"
      echo "     user:    takin-frontend module"
      echo "     userback:    takin-platform-backend module"
      echo "     admin:    akin-admin-frontend module"
      echo "     adminback:    takin-admin-backend module"
      echo "     website:    takin-website-frontend module"
      echo "     controller:    takin-controller module"
      echo "     docs:    takin-docs module"
      echo "     apiservice:    api-service module"
      echo "     pkg:    zeronewspkg module"
      echo "     agent:    ts agent plugin module"
      echo "     traffic:    zeronews-traffic module"
      echo "  Example:  up user up"

    ;;
    *)
      echo "输入异常，请重新输入"
    ;;

esac
