From da8bfaa0086f059844e456bbaf1a31daf1d990f3 Mon Sep 17 00:00:00 2001 From: HawkinC Macbook Date: Wed, 21 May 2025 13:24:44 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20feat:=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=85=8D=E7=BD=AE=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E5=92=8C=E5=B8=AE=E5=8A=A9=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=85=8B=E9=9A=86=E5=A4=B1=E8=B4=A5=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E9=80=BB=E8=BE=91=EF=BC=8C=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=B8=8D=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config-os-and-apps.sh | 41 ++++++++++++++++++++++++++++++----------- readme.md | 10 +++++++++- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/config-os-and-apps.sh b/config-os-and-apps.sh index 2c9275b..32ab0d5 100644 --- a/config-os-and-apps.sh +++ b/config-os-and-apps.sh @@ -5,19 +5,30 @@ # 默认分支 BRANCH="dev" +# 是否直接初始化配置仓库 +# INIT="" + +# 检查是否安装git +command -v git >/dev/null 2>&1 || { + echo "git命令未找到,请安装git" + exit 1 +} # 使用getopts处理参数 -while getopts ":hb:" opt; do +while getopts ":hib:" opt; do case $opt in b) BRANCH="$OPTARG" ;; + i) INIT="enable" ;; h) - echo "使用方法: $0 [-d] [-h]" - echo " -d 开发模式" - echo " -h 显示帮助" + echo "使用方法: $0 [-b ] [-ih]" + # echo " -d 开发模式" + echo " -i 初始化配置仓库" + echo " -b 指定分支,默认分支为 dev" + echo " -h 显示帮助, 并退出. 建议放最后一个参数." exit 0 ;; \?) - echo "无效选项: -$OPTARG" >&2 + echo "无效选项: -$opt $OPTARG" >&2 exit 1 ;; esac @@ -29,17 +40,23 @@ test -f "$HOME"/.config/.bin/.Runtime/SELF_MARK_AS_INSTALLED_FROM_SCRIPT && { echo "local.env.ini already exists, end the install. please remove it first if need re-install." exit 1 } -# == 移走原有配置目录 +# == 移走原有配置目录~/.config到/tmp/.config [ -d "/tmp/.config" ] && rm -rf /tmp/.config # 如果存在, 删除 /tmp/.config [ -d "$HOME/.config" ] && mv "$HOME/.config" /tmp/.config # 移动原有 $HOME/.config 配置到 /tmp/.config -# 克隆,如果失败则退出 +# 克隆,如果失败则退出并恢复原有配置 git clone --depth 1 --branch "$BRANCH" --single-branch https://gitea.yever.top/Hawkin/.config.git "$HOME"/.config test $? -ne 0 && { echo "git clone failed, please check your network." - # 恢复原有配置 + # 删除克隆的目录 + echo "delete the unfinished clone dir: $HOME/.config" [ -d "$HOME/.config" ] && rm -rf "$HOME/.config" - mv /tmp/.config "$HOME/.config" - echo "restored the old config to $HOME/.config" + # 恢复原有配置 + if test -d /tmp/.config; then + echo "restoring the old config to $HOME/.config" + mv /tmp/.config "$HOME/.config" + else + echo "no old config found, skip restore config dir." + fi exit 1 } @@ -53,4 +70,6 @@ EOF echo "git clone success, init project by script itself..." # = 通过目标仓库的初始化脚本进行初始化 -bash "$HOME"/.config/.bin/bin/Init.sh +if test "$INIT" = "enable"; then + bash "$HOME"/.config/.bin/bin/Init.sh +fi diff --git a/readme.md b/readme.md index 85775ec..0255ec6 100644 --- a/readme.md +++ b/readme.md @@ -6,8 +6,16 @@ > 静默但输出错误信息,并跟随重定向 +克隆 dev 分支(`-b`,默认)并进行初始化(`-i`): + ```bash -curl -sSL https://gitea.yever.top/Hawkin/setup-kit/raw/main/config-os-and-apps.sh | bash +curl -sSL https://gitea.yever.top/Hawkin/setup-kit/raw/main/config-os-and-apps.sh | bash -- -ib dev +``` + +指定分支(`-b`)但不进行初始化: + +```bash +curl -sSL https://gitea.yever.top/Hawkin/setup-kit/raw/main/config-os-and-apps.sh | bash -- -b dev ``` 或