#!/bin/bash

# omarchy:summary=Show or switch the region this machine is set up for
# omarchy:args=[global|china]
# omarchy:examples=omarchy region | omarchy region china
# omarchy:requires-sudo=true

set -euo pipefail

region_file=/etc/omarchy/region

if (($# == 0)); then
  if [[ ! -e $region_file ]]; then
    echo "Global"
  elif [[ $(<"$region_file") == "china" ]]; then
    echo "China"
  else
    echo "Unknown region in $region_file: $(<"$region_file")" >&2
    exit 1
  fi
  exit 0
fi

if [[ $1 != "global" && $1 != "china" ]]; then
  echo "Usage: omarchy-region [global|china]" >&2
  exit 1
fi

pacman_files=(/etc/pacman.conf /etc/pacman.d/mirrorlist)
drop_cn_servers='/^Server = https:\/\/[a-z-]*\.omarchy\.cn\//d'

if [[ $1 == "china" ]]; then
  # Mirrors move last, so a failed setup leaves the machine wholly Global.
  omarchy-update-pacman -Syu --noconfirm
  sudo env OMARCHY_REGION=china OMARCHY_PATH="$OMARCHY_PATH" bash -e "$OMARCHY_PATH/install/config/region.sh"
  sudo sed -i -e "$drop_cn_servers" -f "$OMARCHY_PATH/default/region/china/pacman.sed" "${pacman_files[@]}"
  echo "Package mirrors -> .cn first, .org after"
  if [[ ! -f $HOME/.local/share/fcitx5/rime/rime_ice.schema.yaml ]]; then
    # A running fcitx5 only sees the new Rime addon after a restart.
    systemctl --user try-restart omarchy-fcitx5.service
    rime-ice-installer --yes
  fi
else
  sudo sed -i -e "$drop_cn_servers" "${pacman_files[@]}"
  echo "Package mirrors -> .org only"
  sudo env OMARCHY_REGION=global OMARCHY_PATH="$OMARCHY_PATH" bash -e "$OMARCHY_PATH/install/config/region.sh"
  omarchy-setup-claude-api --remove
fi

# The language and the developer mirrors reach only a new session, so offer one in the new language.
if [[ $1 == "china" ]]; then
  prompt="立即注销，切换到中文界面和国内镜像？" log_out="立即注销" later="稍后"
  reminder="区域已设为中国。重新登录后切换到中文界面和国内镜像。"
else
  prompt="Log out now to switch to English and the global mirrors?" log_out="Log out now" later="Later"
  reminder="Region set to Global. Log back in to switch to English and the global mirrors."
fi
if [[ -t 0 && -t 1 ]] && gum confirm --affirmative "$log_out" --negative "$later" "$prompt" 2>&1; then
  omarchy-system-logout
else
  echo "$reminder"
fi
