#!/bin/bash
set -eu

# 安装code-server包，也可以使用官方脚本 curl -fsSL https://code-server.dev/install.sh | sh
# 接入端根据echo输出来判断安装状态

arch() {
  uname_m=$(uname -m)
  case $uname_m in
    aarch64) echo arm64 ;;
    x86_64) echo amd64 ;;
    *) echo "$uname_m" ;;
  esac
}

os() {
  uname="$(uname)"
  case $uname in
    Linux) echo linux ;;
    Darwin) echo macos ;;
    FreeBSD) echo freebsd ;;
    *) echo "$uname" ;;
  esac
}

 init_environment_variables(){
  export ORCA_CODE_SERVER_PORT=$port
  export ORCA_CODE_SERVER_LANG=$lang
  export ORCA_CODE_SERVER_VERSION=4.89.1-1
  export ORCA_SUPERVISOR_CONF_VERSION=0.4
  export ORCA_CODE_SERVER_DIR=$HOME/.orca_term/code-server
  export ORCA_CODE_SERVER_RUN_DIR=$HOME/.orca_term/code-server-run
  export ORCA_BIND_ADDR=127.0.0.1:$ORCA_CODE_SERVER_PORT
  export ORCA_USER_DATA_PATH=$ORCA_CODE_SERVER_DIR/share
  export ORCA_CONFIG_PATH=$ORCA_CODE_SERVER_DIR/.config/config.yaml
  export ORCA_EXTENSION_PATH=$ORCA_CODE_SERVER_DIR/share/extensions
  PATH="$ORCA_CODE_SERVER_DIR/bin:$PATH"

  OS=${OS:-$(os)}
  ARCH=${ARCH:-$(arch)}
  ECHO_SPACER="  "

  # 注意： 这里是 资源桶（orcaterm-resource）的地址
  if [ "$run_env" = "tencent-cloud" ] 
  then
    COS_URL="https://orcaterm-resource-1258344699.cos-internal.accelerate.tencentcos.cn"
  elif [ "$run_env" = "no-region-cos" ]
  then
    COS_URL="https://orcaterm-resource-1258344699.cos.ap-shanghai.myqcloud.com"
  else
    COS_URL="https://cdn.orcaterm.tencent-cloud.com"
  fi
}


# 安装主程序包
 install_code_server(){
  echo '1. install code-server'
  mkdir -p $ORCA_CODE_SERVER_DIR/lib $ORCA_CODE_SERVER_DIR/bin $ORCA_CODE_SERVER_DIR/share/extensions $ORCA_CODE_SERVER_RUN_DIR

  if [ -d "$ORCA_CODE_SERVER_DIR/lib/code-server-$ORCA_CODE_SERVER_VERSION" ]; then
    echo "$ECHO_SPACER code-server-$ORCA_CODE_SERVER_VERSION-$ARCH installed"
  else
    echo "$ECHO_SPACER code-server-$ORCA_CODE_SERVER_VERSION-$ARCH installing"
    curl -fL --referer "https://orcaterm.cloud.tencent.com" $COS_URL/code-server/code-server-$ORCA_CODE_SERVER_VERSION-$OS-$ARCH.tar.gz \
          | tar -C $ORCA_CODE_SERVER_DIR/lib -xz
    mv $ORCA_CODE_SERVER_DIR/lib/code-server-$ORCA_CODE_SERVER_VERSION-$OS-$ARCH $ORCA_CODE_SERVER_DIR/lib/code-server-$ORCA_CODE_SERVER_VERSION
  fi
  ln -sf $ORCA_CODE_SERVER_DIR/lib/code-server-$ORCA_CODE_SERVER_VERSION/bin/code-server $ORCA_CODE_SERVER_DIR/bin/code-server
}

# 安装插件
 install_extensions(){
  echo '2. install extensions'
  if [ "$(ls $ORCA_CODE_SERVER_DIR/share/extensions)" ]
  then
  echo "$ECHO_SPACER extensions installed"
  else
  echo "$ECHO_SPACER extensions installing"
  curl  -fsSL --referer "https://orcaterm.cloud.tencent.com" $COS_URL/code-server/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal.tar.gz \
    | tar -C $ORCA_CODE_SERVER_DIR/share/extensions -xz
  fi
}

# 初始化用户设置，编辑器主题配置
 init_user_settings(){
  echo '3. init user-settings'

language_json=$ORCA_CODE_SERVER_DIR/share/languagepacks.json

if [ ! -e $language_json ]
then
cat <<EOF >  $ORCA_CODE_SERVER_DIR/share/languagepacks.json
{
  "zh-cn": {
    "hash": "7e362a7c22d4de1987d4809ea0dadc08",
    "extensions": [
      {
        "extensionIdentifier": {
          "id": "ms-ceintl.vscode-language-pack-zh-hans",
          "uuid": "e4ee7751-6514-4731-9cdb-7580ffa9e70b"
        },
        "version": "1.71.0"
      }
    ],
    "translations": {
      "vscode": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/main.i18n.json",
      "vscode.bat": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/bat.i18n.json",
      "vscode.clojure": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/clojure.i18n.json",
      "vscode.coffeescript": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/coffeescript.i18n.json",
      "vscode.configuration-editing": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/configuration-editing.i18n.json",
      "vscode.cpp": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/cpp.i18n.json",
      "vscode.csharp": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/csharp.i18n.json",
      "vscode.css-language-features": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/css-language-features.i18n.json",
      "vscode.css": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/css.i18n.json",
      "vscode.dart": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/dart.i18n.json",
      "vscode.debug-auto-launch": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/debug-auto-launch.i18n.json",
      "vscode.debug-server-ready": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/debug-server-ready.i18n.json",
      "vscode.diff": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/diff.i18n.json",
      "vscode.docker": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/docker.i18n.json",
      "vscode.emmet": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/emmet.i18n.json",
      "vscode.extension-editing": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/extension-editing.i18n.json",
      "vscode.fsharp": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/fsharp.i18n.json",
      "vscode.git-base": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/git-base.i18n.json",
      "vscode.git": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/git.i18n.json",
      "vscode.github-authentication": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/github-authentication.i18n.json",
      "vscode.github": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/github.i18n.json",
      "vscode.go": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/go.i18n.json",
      "vscode.groovy": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/groovy.i18n.json",
      "vscode.grunt": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/grunt.i18n.json",
      "vscode.gulp": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/gulp.i18n.json",
      "vscode.handlebars": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/handlebars.i18n.json",
      "vscode.hlsl": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/hlsl.i18n.json",
      "vscode.html-language-features": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/html-language-features.i18n.json",
      "vscode.html": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/html.i18n.json",
      "vscode.image-preview": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/image-preview.i18n.json",
      "vscode.ini": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/ini.i18n.json",
      "vscode.ipynb": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/ipynb.i18n.json",
      "vscode.jake": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/jake.i18n.json",
      "vscode.java": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/java.i18n.json",
      "vscode.javascript": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/javascript.i18n.json",
      "vscode.json-language-features": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/json-language-features.i18n.json",
      "vscode.json": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/json.i18n.json",
      "vscode.julia": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/julia.i18n.json",
      "vscode.latex": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/latex.i18n.json",
      "vscode.less": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/less.i18n.json",
      "vscode.log": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/log.i18n.json",
      "vscode.lua": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/lua.i18n.json",
      "vscode.make": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/make.i18n.json",
      "vscode.markdown-basics": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/markdown-basics.i18n.json",
      "vscode.markdown-language-features": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/markdown-language-features.i18n.json",
      "vscode.markdown-math": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/markdown-math.i18n.json",
      "vscode.merge-conflict": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/merge-conflict.i18n.json",
      "vscode.microsoft-authentication": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/microsoft-authentication.i18n.json",
      "vscode.ms-vscode.js-debug": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/ms-vscode.js-debug.i18n.json",
      "vscode.notebook-renderers": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/notebook-renderers.i18n.json",
      "vscode.npm": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/npm.i18n.json",
      "vscode.objective-c": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/objective-c.i18n.json",
      "vscode.perl": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/perl.i18n.json",
      "vscode.php-language-features": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/php-language-features.i18n.json",
      "vscode.php": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/php.i18n.json",
      "vscode.powershell": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/powershell.i18n.json",
      "vscode.pug": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/pug.i18n.json",
      "vscode.python": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/python.i18n.json",
      "vscode.r": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/r.i18n.json",
      "vscode.razor": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/razor.i18n.json",
      "vscode.references-view": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/references-view.i18n.json",
      "vscode.restructuredtext": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/restructuredtext.i18n.json",
      "vscode.ruby": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/ruby.i18n.json",
      "vscode.rust": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/rust.i18n.json",
      "vscode.scss": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/scss.i18n.json",
      "vscode.search-result": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/search-result.i18n.json",
      "vscode.shaderlab": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/shaderlab.i18n.json",
      "vscode.shellscript": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/shellscript.i18n.json",
      "vscode.simple-browser": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/simple-browser.i18n.json",
      "vscode.sql": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/sql.i18n.json",
      "vscode.swift": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/swift.i18n.json",
      "vscode.theme-abyss": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-abyss.i18n.json",
      "vscode.theme-defaults": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-defaults.i18n.json",
      "vscode.theme-kimbie-dark": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-kimbie-dark.i18n.json",
      "vscode.theme-monokai-dimmed": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-monokai-dimmed.i18n.json",
      "vscode.theme-monokai": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-monokai.i18n.json",
      "vscode.theme-quietlight": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-quietlight.i18n.json",
      "vscode.theme-red": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-red.i18n.json",
      "vscode.theme-seti": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-seti.i18n.json",
      "vscode.theme-solarized-dark": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-solarized-dark.i18n.json",
      "vscode.theme-solarized-light": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-solarized-light.i18n.json",
      "vscode.theme-tomorrow-night-blue": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/theme-tomorrow-night-blue.i18n.json",
      "vscode.typescript-basics": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/typescript-basics.i18n.json",
      "vscode.typescript-language-features": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/typescript-language-features.i18n.json",
      "vscode.vb": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/vb.i18n.json",
      "vscode.xml": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/xml.i18n.json",
      "vscode.yaml": "$ORCA_CODE_SERVER_DIR/share/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.71.0-universal/translations/extensions/yaml.i18n.json"
    },
    "label": "中文(简体)"
  }
}

EOF
else
  echo "$ECHO_SPACER user-language initialized"
fi

settings_json=$ORCA_CODE_SERVER_DIR/share/User/settings.json
if [ ! -e $settings_json ]
then
 mkdir -p $ORCA_CODE_SERVER_DIR/share/User/

cat << EOF > $ORCA_CODE_SERVER_DIR/share/User/argv.json
{"locale": "$ORCA_CODE_SERVER_LANG"}
EOF

if [ "$theme" = "light" ]
 then
    curl  -sS --referer "https://orcaterm.cloud.tencent.com" $COS_URL/code-server/default-settings-light.json >  $ORCA_CODE_SERVER_DIR/share/User/settings.json
 else
    curl  -sS --referer "https://orcaterm.cloud.tencent.com" $COS_URL/code-server/default-settings.json >  $ORCA_CODE_SERVER_DIR/share/User/settings.json
 fi
else
 echo "$ECHO_SPACER user-settings initialized"
fi
}

# supervisor配置以最新版为准
 init_supervisor_settings(){
  echo '4. install supervisor'
  if [ -d "$ORCA_CODE_SERVER_RUN_DIR/supervisord-conf-$ORCA_SUPERVISOR_CONF_VERSION" ]; then
    echo "$ECHO_SPACER supervisor installed"
  else
    echo "$ECHO_SPACER supervisor-$ARCH installing"
    curl  -fsSL --referer "https://orcaterm.cloud.tencent.com" $COS_URL/code-server/supervisord-conf-$ORCA_SUPERVISOR_CONF_VERSION-$ARCH.tar.gz \
       | tar -C $ORCA_CODE_SERVER_RUN_DIR -xz
    mv $ORCA_CODE_SERVER_RUN_DIR/supervisord-conf-$ORCA_SUPERVISOR_CONF_VERSION-$ARCH $ORCA_CODE_SERVER_RUN_DIR/supervisord-conf-$ORCA_SUPERVISOR_CONF_VERSION
  fi
  ln -sf $ORCA_CODE_SERVER_RUN_DIR/supervisord-conf-$ORCA_SUPERVISOR_CONF_VERSION $ORCA_CODE_SERVER_RUN_DIR/supervisord-conf
}

delete_file(){
  if [ -n "$1" ]; then
      rm -r $1
    fi
}

delete_old_installers(){
    delete_file "$(find $ORCA_CODE_SERVER_DIR/lib/* -maxdepth 0 -type d -name 'code-server-*' | grep -v $ORCA_CODE_SERVER_DIR/lib/code-server-$ORCA_CODE_SERVER_VERSION)"
    delete_file "$(find $ORCA_CODE_SERVER_RUN_DIR/* -maxdepth 0 -type d -name 'supervisord-conf-*' | grep -v $ORCA_CODE_SERVER_RUN_DIR/supervisord-conf-$ORCA_SUPERVISOR_CONF_VERSION)"
}

if [ "$1" = "-v" ]; then
    echo "1.4"
    exit 0
fi

theme=$1
port=$2
lang=$3
run_env=$4
init_environment_variables
install_code_server
install_extensions
init_user_settings
init_supervisor_settings
delete_old_installers


