diff --git a/AutoProject.sh b/AutoProject.sh deleted file mode 100644 index cf45f9a87c48fa6997dd552ce856d42cad872539..0000000000000000000000000000000000000000 --- a/AutoProject.sh +++ /dev/null @@ -1,179 +0,0 @@ -#!/bin/bash - -PROJECT_DIR="./project" -PROJECT_LIST_CONFIG="./config/projects.txt" - -while [ true ]; do - echo -e "\n\e[92m================================================" - echo -e "= 自动化 Git 工具 =" - echo -e "= -------------------------------------------- =" - echo -e "= 1、clone 项目 =" - echo -e "= 2、创建新的分支 =" - echo -e "= 3、切换分支 =" - echo -e "= 4、修改项目版本 =" - echo -e "= 5、push 到仓库 =" - echo -e "= E、退出 =" - echo -e "================================================" - echo -e "\e[0m" - echo -e "\e[92m请选择操作(输入对应的数字):\e[0m" - read OPERATOR - - # clone 项目 - if [[ ${OPERATOR} = 1 ]]; then - echo -e "\n\e[93m------------------------------------------------" - echo -e "- 1、clone 项目 -" - echo -e "------------------------------------------------\e[0m" - - if [[ ! -e ${PROJECT_LIST_CONFIG} ]]; then - echo -e "\e[93m未配置 ${PROJECT_LIST_CONFIG} 文件, 该文件用于添加待 clone 的\n项目列表, 例如: \n/mps/scf-mps-account\n/biz/scf-biz-credit\e[0m\e[0m" - continue - fi - - if [[ -e ${PROJECT_DIR} ]]; then - echo -e "\e[93m用于 clone 项目目录 ${PROJECT_DIR} 已经存在,是否删除(y/n): \e[0m" - read IS_DELETE - if [[ ${IS_DELETE} != "y" ]]; then - echo -e "\e[93m目录 ${PROJECT_DIR} 已经存在,无法 clone!\e[0m" - continue - fi - rm -rf ${PROJECT_DIR} - fi - - echo -e "\e[93m请输入 Git 组 URL: \e[0m" - read GIT_GROUP_URL - - PROJECTS=`cat ${PROJECT_LIST_CONFIG}` - mkdir ${PROJECT_DIR} - cd ${PROJECT_DIR} - for PROJECT in ${PROJECTS[@]}; do - echo -e "\n\e[33;7m克隆项目: ${PROJECT}\e[0m" - CLONE_URL="${GIT_GROUP_URL}${PROJECT}.git" - git clone ${CLONE_URL} - done - cd .. - continue - fi - - # 创建新分支 - if [[ ${OPERATOR} = 2 ]]; then - echo -e "\n\e[34m------------------------------------------------" - echo -e "- 2、创建新的分支 -" - echo -e "------------------------------------------------\e[0m" - - if [[ ! -e ${PROJECT_DIR} ]]; then - echo -e "\e[34m用于 clone 项目目录 ${PROJECT_DIR} 不存在, 请先 clone 项目!\e[0m" - continue - fi - - echo -e "\e[34m请输入创建的分支:\e[0m" - read BRANCH - echo -e "\e[34m请输入参照的分支:\e[0m" - read SOURCE_BRANCH - cd ${PROJECT_DIR} - PROJECTS=`ls` - for PROJECT in ${PROJECTS[@]}; do - cd ${PROJECT} - echo -e "\n\e[34;7m创建分支[${BRANCH}]: ${PROJECT}\e[0m" - git checkout -b ${BRANCH} origin/${SOURCE_BRANCH} - git branch -vv - cd .. - done - cd .. - continue - fi - - # 切换分支 - if [[ ${OPERATOR} = 3 ]]; then - echo -e "\n\e[95m------------------------------------------------" - echo -e "- 3、切换分支 -" - echo -e "------------------------------------------------\e[0m" - - if [[ ! -e ${PROJECT_DIR} ]]; then - echo -e "\e[95m用于 clone 项目目录 ${PROJECT_DIR} 不存在, 请先 clone 项目!\e[0m" - continue - fi - - echo -e "\e[95m请输入切换的分支:\e[0m" - read BRANCH - cd ${PROJECT_DIR} - PROJECTS=`ls` - for PROJECT in ${PROJECTS[@]}; do - cd ${PROJECT} - echo -e "\n\e[95;7m切换分支[${BRANCH}]: ${PROJECT}\e[0m" - git checkout ${BRANCH} - git branch -vv - cd .. - done - cd .. - continue - fi - - # 修改项目版本 - if [[ ${OPERATOR} = 4 ]]; then - echo -e "\n\e[96m------------------------------------------------" - echo -e "- 4、修改项目版本 -" - echo -e "------------------------------------------------\e[0m" - - if [[ ! -e ${PROJECT_DIR} ]]; then - echo -e "\e[96m用于 clone 项目目录 ${PROJECT_DIR} 不存在, 请先 clone 项目!\e[0m" - continue - fi - - echo -e "\e[96m请选择版本类型(1-空壳项目 2-标品项目):\e[0m" - read UPGRADE_CODE - if [[ ${UPGRADE_CODE} = 1 ]]; then - UPGRADE_TYPE="空壳项目" - elif [[ ${UPGRADE_CODE} = 2 ]]; then - UPGRADE_TYPE="标品项目" - else - echo -e "\n\e[91;1;4m请输入 1 或 2!\e[0m" - continue - fi - - echo -e "\e[96m请输入修改版本:\e[0m" - read UPGRADE_VERSION - - cd ${PROJECT_DIR} - PROJECTS=`ls` - for PROJECT in ${PROJECTS[@]}; do - cd ${PROJECT} - echo -e "\n\e[96;7m修改版本[${UPGRADE_TYPE} - ${UPGRADE_VERSION}]: ${PROJECT}\e[0m" - ../../awk/update_version.awk -v matchedNum=${UPGRADE_CODE} -v version=${UPGRADE_VERSION} ./pom.xml - git commit -am "修改${UPGRADE_TYPE}版本为: ${UPGRADE_VERSION}" - cd .. - done - cd .. - continue - fi - - # 推送变更到远程仓库 - if [[ ${OPERATOR} = 5 ]]; then - echo -e "\n\e[94m------------------------------------------------" - echo -e "- 5、push 到仓库 -" - echo -e "------------------------------------------------\e[0m" - - if [[ ! -e ${PROJECT_DIR} ]]; then - echo -e "\e[94m用于 clone 项目目录 ${PROJECT_DIR} 不存在, 请先 clone 项目!\e[0m" - continue - fi - - cd ${PROJECT_DIR} - PROJECTS=`ls` - for PROJECT in ${PROJECTS[@]}; do - cd ${PROJECT} - CURRENT_BRANCH=`git rev-parse --abbrev-ref HEAD` - echo -e "\n\e[94;7m推送项目[${CURRENT_BRANCH}]: ${PROJECT}\e[0m" - git push origin ${CURRENT_BRANCH} - cd .. - done - cd .. - continue - fi - - if [[ ${OPERATOR} = "e" || ${OPERATOR} = "E" ]]; then - echo -e "\n\e[32m退出工具成功!\e[0m" - exit 0 - fi - - echo -e "\n\e[91;4m请输入工具列表中对应功能的数字!\e[0m" -done \ No newline at end of file diff --git a/README.md b/README.md index afea3776acf0ed26895d2d3dc05ccb8809b5d35e..f196e3a7911f7b47233e8831b047e655db6a9562 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,76 @@ -# auto-project +## 介绍 +自动化项目管理工具:批量 clone 项目、创建新分支、切换分支、修改项目 pom.xml 版本、push 项目等工具 -#### 介绍 -自动化项目管理工具:批量 clone 项目、创建新分支、切换分支、升级项目 pom.xml 版本、push 项目等工具 +## 软件架构 +使用 shell 脚本编写,支持自定义工具扩展 -#### 软件架构 -使用 shell 脚本编写 +## 使用说明 -#### 使用说明 +### 一、目录升级 -1. 通过 Git bash 执行 AutoProject.sh 脚本,会出现以下内容: +目录分为两级目录(最多有两级目录),如下所示: - ![image](./image/001.png) +- 一级目录:是对同类型功能的汇总目录 -2. 根据菜单选择对应的工具,若要使用 2-5 需要先执行 1 将待操作的项目 clone 到本地。 +![image](./image/0001.png) -3. 功能说明: +- 二级目录:具体功能目录 - 1. clone 项目:需要配置脚本目录下 config/projects.txt 文件,将待 clone 的项目名称添加到该文件中,若 git 仓库有子组,需要按照下面格式添加:`/子组名称/项目名称`,选择该功能需要根据提示添加一个参数: +![image](./image/0002.png) - - Git 基础 URL:`URL + /子组名称/项目名称 + .git` 组成 clone 项目的 HTTP URL - - ![image](./image/002.png) - - 1. 创建新的分支:可以批量将 clone 到本地的所有项目创建相同的分支,需要根据提示填写两个参数 - - - 新分支名称 - - 参照分支名称 +![image](./image/0008.png) - ![image](./image/003.png) +### 二、具体功能 - 2. 切换分支:可以批量将 clone 到本地的所有项目的分支切换成指定分支,需要根据提示填写一个参数 - - - 待切换的分支名称 - - ![image](./image/004.png) - - 4. 修改项目版本:可以修改当前项目 maven 版本和第二个 version 的版本,或其他任意位置的版本(需要适当调整 AutoProject.sh 脚本),使用该功能需要根据提示填写两个参数: - - - 版本类型:这个是根据我们项目需要设置(若有需要可以调整为其他),就修改 pom.xml 中第一个和第二个 version 标签内容 - - 待修改的版本:替换现在 version 中的内容 - - ![image](./image/005.png) - - 5. push 到仓库:按照现在项目的分支和 remote origin push 到仓库 +#### 1、Git Tools + +1. Batch Clone Project + + ![image](./image/0003.png) + + 需要配置脚本目录下 `config/projects.txt` 文件,将待 clone 的项目名称添加到该文件中,若 git 仓库有子组,需要按照下面格式添加:`/子组名称/项目名称`,选择该功能需要根据提示添加一个参数: + + - Git 基础 URL:`URL + /子组名称/项目名称 + .git` 组成 clone 项目的 HTTP URL + + >注意:projects.txt 需要设置为 Unix(LF) 格式 + +1. Batch Checkout Branch + + ![image](./image/0004.png) + + 可以批量将 clone 到本地的所有项目的分支切换成指定分支,需要根据提示填写一个参数 + + - 待切换的分支名称 + +2. Batch Creating Branch + + ![image](./image/0005.png) + + 创建新的分支:可以批量将 clone 到本地的所有项目创建相同的分支,需要根据提示填写两个参数 + + - 新分支名称 + - 参照分支名称 + +3. Batch Delect Remote Branch + + ![image](./image/0006.png) + + 需要配置脚本目录下 `config/retain-branches.txt` 文件,该文件用于配置需要保留的分支,文件中配置的分支和 master 分支将保留,其余分支会自动删除。 + +4. Batch Push Repository + + ![image](./image/0007.png) + + 按照现在项目的分支和 remote origin push 到仓库 + +#### 2、Project Tools + +1. Batch Modify Maven Version + + ![image](./image/0009.png) + + 可以修改当前项目 maven 版本和第二个 version 的版本,或其他任意位置的版本(需要适当调整 AutoProject.sh 脚本),使用该功能需要根据提示填写两个参数: + + - 版本类型:这个是根据我们项目需要设置(若有需要可以调整为其他),就修改 pom.xml 中第一个和第二个 version 标签内容 + - 待修改的版本:替换现在 version 中的内容 diff --git a/component/Git-Tools/Batch-Checkout-Branch/index.sh b/component/Git-Tools/Batch-Checkout-Branch/index.sh new file mode 100644 index 0000000000000000000000000000000000000000..4b6c5e1ab2e87a1cd7ab2de1bbb00735364e3cc7 --- /dev/null +++ b/component/Git-Tools/Batch-Checkout-Branch/index.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +#========================================================================================= +# 作者:赵海春 +# 日期:2022.04.12 +# 作用:批量切换项目分支 +# 使用:在需要批量切换项目分支的脚本中通过以下步骤使用该脚本 +# 1、命令:. ./index.sh +# 2、配置环境变量:PROJECTS_TARGET_PATH +#========================================================================================= + +echo -e "\e[95m" +echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" +echo -e "┃ 批量切换分支 ┃" +echo -e "┃ Batch Checkout Branch ┃" +echo -e "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + +# 以下变量读取的环境变量 +# PROJECTS_TARGET_PATH:克隆项目的目标路径 + +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` + + +if [[ ! -e ${PROJECTS_TARGET_PATH} ]]; then + echo -e "\n项目目录 [${PROJECTS_TARGET_PATH}] 不\n存在, 请先克隆项目!\e[0m" + exit 1 +fi + +echo -e "\n请输入切换的分支:" +read BRANCH +cd ${PROJECTS_TARGET_PATH} +PROJECTS=`ls` +for PROJECT in ${PROJECTS[@]}; do + cd ${PROJECT} + echo -e "\n\e[95;7m切换分支: ${PROJECT} [${BRANCH}]\e[0m" + git checkout ${BRANCH} + git branch -vv + cd .. +done + +cd ${SCRIPT_PATH} +echo -e "\n\n" \ No newline at end of file diff --git a/component/Git-Tools/Batch-Clone-Project/config/projects.txt b/component/Git-Tools/Batch-Clone-Project/config/projects.txt new file mode 100644 index 0000000000000000000000000000000000000000..b69037a6f1a6111039552a6db9210a7048748f5d --- /dev/null +++ b/component/Git-Tools/Batch-Clone-Project/config/projects.txt @@ -0,0 +1,2 @@ +/mps/scf-mps-starter-price +/mps/scf-mps-starter-bill \ No newline at end of file diff --git a/component/Git-Tools/Batch-Clone-Project/index.sh b/component/Git-Tools/Batch-Clone-Project/index.sh new file mode 100644 index 0000000000000000000000000000000000000000..5b03b05678e77f5561d8617cb5660c8d5c5e0067 --- /dev/null +++ b/component/Git-Tools/Batch-Clone-Project/index.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +#========================================================================================= +# 作者:赵海春 +# 日期:2022.04.12 +# 作用:批量 clone 配置的项目 +# 使用:在需要批量 clone 项目的脚本中通过以下步骤使用该脚本 +# 1、命令:. ./index.sh +# 2、配置环境变量:PROJECTS_TARGET_PATH +#========================================================================================= + +echo -e "\e[93m" +echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" +echo -e "┃ 批量克隆项目 ┃" +echo -e "┃ Batch Clone Project ┃" +echo -e "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + +# 以下变量读取的环境变量 +# PROJECTS_TARGET_PATH:克隆项目的目标路径 + +# 保存配置待克隆项目的列表文件路径 +PROJECTS_CONFIG_PATH="./config/projects.txt" +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` + +# 判断是否配置了待克隆文件及项目列表 +if [[ ! -e ${PROJECTS_CONFIG_PATH} ]]; then + echo -e "\n未创建 [${PROJECTS_CONFIG_PATH}] 文件, \n克隆失败!\e[0m" + exit 1 +else + if [[ -z `cat ${PROJECTS_CONFIG_PATH}` ]]; then + echo -e "\n未配置 [${PROJECTS_CONFIG_PATH}] 文件, \n文件用于配置待克隆的项目列表, 例如: \n/mps/scf-mps-account\n/biz/scf-biz-credit\e[0m" + exit 1 + fi +fi + +# 判断是否已经存在克隆项目的目标目录 +if [[ -e ${PROJECTS_TARGET_PATH} ]]; then + echo -e "\n项目目录 [${PROJECTS_TARGET_PATH}] 已\n经存在,是否删除(y/n): " + read IS_DELETE + if [[ ${IS_DELETE} != "y" ]]; then + echo -e "\n其他操作基于旧项目进行!\e[0m" + exit 1 + fi + rm -rf ${PROJECTS_TARGET_PATH} +fi + +if [[ ! -e ${PROJECTS_TARGET_PATH} ]]; then + echo -e "\n创建目录:${PROJECTS_TARGET_PATH}" + mkdir -p ${PROJECTS_TARGET_PATH} +fi + +# 克隆项目 +echo -e "\n请输入 Git 组 URL:" +read GIT_GROUP_URL + +PROJECTS=`cat ${PROJECTS_CONFIG_PATH}` +cd ${PROJECTS_TARGET_PATH} +for PROJECT in ${PROJECTS[@]}; do + echo -e "\n\e[93;7m克隆项目: ${PROJECT}\e[0m" + CLONE_URL="${GIT_GROUP_URL}${PROJECT}.git" + git clone ${CLONE_URL} +done + +cd ${SCRIPT_PATH} +echo -e "\n\n" \ No newline at end of file diff --git a/component/Git-Tools/Batch-Creating-Branch/index.sh b/component/Git-Tools/Batch-Creating-Branch/index.sh new file mode 100644 index 0000000000000000000000000000000000000000..1efb71653ac4afc1df47ba65ef9de87f0962c2d2 --- /dev/null +++ b/component/Git-Tools/Batch-Creating-Branch/index.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +#========================================================================================= +# 作者:赵海春 +# 日期:2022.04.12 +# 作用:批量创建分支 +# 使用:在需要批量创建分支项目的脚本中通过以下步骤使用该脚本 +# 1、命令:. ./index.sh +# 2、配置环境变量:PROJECTS_TARGET_PATH +#========================================================================================= + +echo -e "\e[34m" +echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" +echo -e "┃ 批量创建分支 ┃" +echo -e "┃ Batch Creating Branch ┃" +echo -e "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + +# 以下变量读取的环境变量 +# PROJECTS_TARGET_PATH:克隆项目的目标路径 + +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` + + +if [[ ! -e ${PROJECTS_TARGET_PATH} ]]; then + echo -e "\n项目目录 [${PROJECTS_TARGET_PATH}] 不\n存在, 请先克隆项目!\e[0m" + exit 1 +fi + +echo -e "\n请输入创建的分支:" +read BRANCH +echo -e "\n请输入参照的分支:" +read SOURCE_BRANCH +cd ${PROJECTS_TARGET_PATH} +PROJECTS=`ls` +for PROJECT in ${PROJECTS[@]}; do + cd ${PROJECT} + echo -e "\n\e[34;7m创建分支: ${PROJECT} [${BRANCH}]\e[0m" + git checkout -b ${BRANCH} origin/${SOURCE_BRANCH} + git branch -vv + cd .. +done + +cd ${SCRIPT_PATH} +echo -e "\n\n" \ No newline at end of file diff --git a/component/Git-Tools/Batch-Delete-Remote-Branch/config/retain-branches.txt b/component/Git-Tools/Batch-Delete-Remote-Branch/config/retain-branches.txt new file mode 100644 index 0000000000000000000000000000000000000000..e26c57207ae625177e1675e31285c9bf1426aa93 --- /dev/null +++ b/component/Git-Tools/Batch-Delete-Remote-Branch/config/retain-branches.txt @@ -0,0 +1,3 @@ +feature-1.4.0 +feature-2.0.1 +test2 \ No newline at end of file diff --git a/component/Git-Tools/Batch-Delete-Remote-Branch/index.sh b/component/Git-Tools/Batch-Delete-Remote-Branch/index.sh new file mode 100644 index 0000000000000000000000000000000000000000..89a0c55cfee497a2565f172194e679ec8c187e41 --- /dev/null +++ b/component/Git-Tools/Batch-Delete-Remote-Branch/index.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +#========================================================================================= +# 作者:赵海春 +# 日期:2022.04.12 +# 作用:批量删除远程分支 +# 使用:在需要批量删除远程分支项目的脚本中通过以下步骤使用该脚本 +# 1、命令:. ./index.sh +# 2、配置环境变量:PROJECTS_TARGET_PATH +#========================================================================================= + +echo -e "\e[95m" +echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" +echo -e "┃ 批量删除远程分支 ┃" +echo -e "┃ Batch Delete Remote Branch ┃" +echo -e "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + +# 以下变量读取的环境变量 +# PROJECTS_TARGET_PATH:克隆项目的目标路径 + +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` +# 配置需要保留的分支列表 +RETAIN_BRANCH_LIST_CONFIG="./config/retain-branches.txt" + + +if [[ ! -e ${PROJECTS_TARGET_PATH} ]]; then + echo -e "\n项目目录 [${PROJECTS_TARGET_PATH}] 不\n存在, 请先克隆项目!\e[0m" + exit 1 +fi + +# 判断是否配置了需要保留的分支列表 +if [[ ! -e ${RETAIN_BRANCH_LIST_CONFIG} ]]; then + echo -e "\n未创建 [${RETAIN_BRANCH_LIST_CONFIG}] \n文件, 无法删除分支!\e[0m" + exit 1 +else + if [[ -z `cat ${RETAIN_BRANCH_LIST_CONFIG}` ]]; then + echo -e "\n未配置需要保留的分支, 否只保留 master \n分支(y/n):" + read IS_ONLY_MASTER + if [[ ${IS_DELETE} != "y" ]]; then + exit 1 + fi + fi +fi + +echo -e "\n是否批量删除远程分支(y/n):" +read IS_DELETE +if [[ ${IS_DELETE} != "y" ]]; then + echo -e "\n退出批量删除远程分支!\e[0m" + exit 1 +fi + +RETAIN_BRANCHES=`cat ${RETAIN_BRANCH_LIST_CONFIG}` +cd ${PROJECTS_TARGET_PATH} +for PROJECT in `ls`; do + cd ${PROJECT} + echo "" + git checkout master + + REMOTE_BRANCHES=`git branch -rl "origin/*" | sed 's/origin\///g'` + for REMOTE_BRANCH in ${REMOTE_BRANCHES[@]}; do + if [[ ${REMOTE_BRANCH} == "HEAD" || ${REMOTE_BRANCH} == "->" || ${REMOTE_BRANCH} == "master" ]]; then + continue + fi + + IS_REMOVE=1 + for RETAIN_BRANCH in ${RETAIN_BRANCHES[@]}; do + if [[ ${REMOTE_BRANCH} == ${RETAIN_BRANCH} ]]; then + IS_REMOVE=0 + break + fi + done + + if [[ ${IS_REMOVE} == 1 ]]; then + echo -e "\n\e[95;7m删除分支: ${PROJECT} [${REMOTE_BRANCH}]\e[0m" + git push -d origin ${REMOTE_BRANCH} + fi + done + + echo -e "\n\e[7m最新远程分支列表: ${PROJECT}\e[0m" + git branch -r + + cd .. +done + +cd ${SCRIPT_PATH} +echo -e "\n\n" \ No newline at end of file diff --git a/component/Git-Tools/Batch-Push-Repository/index.sh b/component/Git-Tools/Batch-Push-Repository/index.sh new file mode 100644 index 0000000000000000000000000000000000000000..96533e39da8ffb23e8d05c6b61c2b4045cd16f8a --- /dev/null +++ b/component/Git-Tools/Batch-Push-Repository/index.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +#========================================================================================= +# 作者:赵海春 +# 日期:2022.04.12 +# 作用:批量 push 到远程仓库 +# 使用:在需要批量 push 到远程仓库项目的脚本中通过以下步骤使用该脚本 +# 1、命令:. ./index.sh +# 2、配置环境变量:PROJECTS_TARGET_PATH +#========================================================================================= + + +echo -e "\e[94m" +echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" +echo -e "┃ 批量推送到仓库 ┃" +echo -e "┃ Batch Push Repository ┃" +echo -e "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + +# 以下变量读取的环境变量 +# PROJECTS_TARGET_PATH:克隆项目的目标路径 + +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` + + +if [[ ! -e ${PROJECTS_TARGET_PATH} ]]; then + echo -e "\n项目目录 [${PROJECTS_TARGET_PATH}] 不\n存在, 请先克隆项目!\e[0m" + exit 1 +fi + +echo -e "\n是否批量推送到仓库(y/n):" +read IS_DELETE +if [[ ${IS_DELETE} != "y" ]]; then + echo -e "\n退出批量推送到仓库!\e[0m" + exit 1 +fi + +cd ${PROJECTS_TARGET_PATH} +for PROJECT in `ls`; do + cd ${PROJECT} + CURRENT_BRANCH=`git rev-parse --abbrev-ref HEAD` + echo -e "\n\e[94;7m推送项目: ${PROJECT} [${CURRENT_BRANCH}]\e[0m" + git push origin ${CURRENT_BRANCH} + cd .. +done + +cd ${SCRIPT_PATH} +echo -e "\n\n" \ No newline at end of file diff --git a/awk/update_version.awk b/component/Project-Tools/Batch-Modify-Maven-Version/awk/update_version.awk similarity index 100% rename from awk/update_version.awk rename to component/Project-Tools/Batch-Modify-Maven-Version/awk/update_version.awk diff --git a/component/Project-Tools/Batch-Modify-Maven-Version/index.sh b/component/Project-Tools/Batch-Modify-Maven-Version/index.sh new file mode 100644 index 0000000000000000000000000000000000000000..340583ead581ba5a286aabae68e7f9dfc7581afe --- /dev/null +++ b/component/Project-Tools/Batch-Modify-Maven-Version/index.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +#========================================================================================= +# 作者:赵海春 +# 日期:2022.04.12 +# 作用:批量修改 mavne 项目版本,或修改 parent 版本 +# 使用:在需要批量修改 maven 版本项目的脚本中通过以下步骤使用该脚本 +# 1、命令:. ./index.sh +# 2、配置环境变量:PROJECTS_TARGET_PATH +#========================================================================================= + +echo -e "\e[96m" +echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" +echo -e "┃ 批量修改Maven版本 ┃" +echo -e "┃ Batch Modify Maven Version ┃" +echo -e "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + +# 以下变量读取的环境变量 +# PROJECTS_TARGET_PATH:克隆项目的目标路径 + +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` + + +if [[ ! -e ${PROJECTS_TARGET_PATH} ]]; then + echo -e "\n项目目录 [${PROJECTS_TARGET_PATH}] 不\n存在, 请先克隆项目!\e[0m" + exit 1 +fi + +echo -e "\n请选择版本类型(1-空壳版本 2-标品版本):" +read VERSION_TYPE_CODE +if [[ ${VERSION_TYPE_CODE} = 1 ]]; then + VERSION_TYPE="空壳版本" +elif [[ ${VERSION_TYPE_CODE} = 2 ]]; then + VERSION_TYPE="标品版本" +else + echo -e "\n请输入 1 或 2!\e[0m" + exit 1 +fi + +echo -e "\n请输入版本号:" +read VERSION_VALUE +cd ${PROJECTS_TARGET_PATH} +for PROJECT in `ls`; do + cd ${PROJECT} + echo -e "\n\e[96;7m修改版本: ${PROJECT} [${VERSION_TYPE} - ${VERSION_VALUE}]\e[0m" + ${SCRIPT_PATH}/awk/update_version.awk -v matchedNum=${VERSION_TYPE_CODE} -v version=${VERSION_VALUE} ./pom.xml + git commit -am "修改${VERSION_TYPE}为: ${VERSION_VALUE}" + cd .. +done + +cd ${SCRIPT_PATH} +echo -e "\n\n" \ No newline at end of file diff --git a/config/projects.txt b/config/projects.txt deleted file mode 100644 index 96fb0adf9013e2408d7d9cb5e74b0ed410d5ad6f..0000000000000000000000000000000000000000 --- a/config/projects.txt +++ /dev/null @@ -1 +0,0 @@ -/auto-project \ No newline at end of file diff --git a/image/0001.png b/image/0001.png new file mode 100644 index 0000000000000000000000000000000000000000..0473207539f7c065c7e9e532510a6c324c9da24a Binary files /dev/null and b/image/0001.png differ diff --git a/image/0002.png b/image/0002.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5c578518529a3bfd56176b5ed99a07cf696947 Binary files /dev/null and b/image/0002.png differ diff --git a/image/0003.png b/image/0003.png new file mode 100644 index 0000000000000000000000000000000000000000..7b11f2663ac9b47c6fd56f192270a1b00634427a Binary files /dev/null and b/image/0003.png differ diff --git a/image/0004.png b/image/0004.png new file mode 100644 index 0000000000000000000000000000000000000000..5804fc835120dd9cdb9cc3083d94230e3fd537b8 Binary files /dev/null and b/image/0004.png differ diff --git a/image/0005.png b/image/0005.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd6021ec36f50a24e97f40a5960e788aaeca3cf Binary files /dev/null and b/image/0005.png differ diff --git a/image/0006.png b/image/0006.png new file mode 100644 index 0000000000000000000000000000000000000000..22126b370039f4c558e179861d72368e4e33f11d Binary files /dev/null and b/image/0006.png differ diff --git a/image/0007.png b/image/0007.png new file mode 100644 index 0000000000000000000000000000000000000000..ac344ed08216fb263a7d9692ce73bb2e12d1b364 Binary files /dev/null and b/image/0007.png differ diff --git a/image/0008.png b/image/0008.png new file mode 100644 index 0000000000000000000000000000000000000000..214939cb02643bbc62879923ea778da2886b1f55 Binary files /dev/null and b/image/0008.png differ diff --git a/image/0009.png b/image/0009.png new file mode 100644 index 0000000000000000000000000000000000000000..270a43c655c7f87a9059b2c159cc2af772847048 Binary files /dev/null and b/image/0009.png differ diff --git a/image/001.png b/image/001.png deleted file mode 100644 index 8a80e238d4a5f4b4b899848bb0d724f32fd8db05..0000000000000000000000000000000000000000 Binary files a/image/001.png and /dev/null differ diff --git a/image/002.png b/image/002.png deleted file mode 100644 index 725c7480ee689f11ee7688324d1cfcd9d937bf95..0000000000000000000000000000000000000000 Binary files a/image/002.png and /dev/null differ diff --git a/image/003.png b/image/003.png deleted file mode 100644 index 2588a7f40a841134f134f4ef4a3078261acbbce3..0000000000000000000000000000000000000000 Binary files a/image/003.png and /dev/null differ diff --git a/image/004.png b/image/004.png deleted file mode 100644 index e530f46d4953f03df31afa248b19feb8849e8c61..0000000000000000000000000000000000000000 Binary files a/image/004.png and /dev/null differ diff --git a/image/005.png b/image/005.png deleted file mode 100644 index 31c02f2e7605193a61563bea3b40eb111f3f6987..0000000000000000000000000000000000000000 Binary files a/image/005.png and /dev/null differ diff --git a/index.sh b/index.sh new file mode 100644 index 0000000000000000000000000000000000000000..e70f24def0ff1a343e5d1109ae7c0429843f4371 --- /dev/null +++ b/index.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +# 全局环境变量 +ROOT_PATH=`pwd` +PROJECTS_TARGET_PATH="${ROOT_PATH}/project" +COMPONENT_PATH="${ROOT_PATH}/component" + + +CURRENT_DIR_LEVEL=1 + +clear +cd ${COMPONENT_PATH} +while [ true ]; do + echo -e "\e[92m" + echo -e "╔════════════════════════════════════════════════════════╗" + echo -e "║ 自动化工具 V2.0.0 ║" + echo -e "╟────────────────────────────────────────────────────────╢" + echo -e "║ ║" + + INDEX=0 + for COMPONENT in `ls`; do + COMPONENTS[${INDEX}]=${COMPONENT} + printf "║\t%-50.42s║\n" "${INDEX}、${COMPONENT}" | sed 's/-/ /g' + INDEX=$[${INDEX} + 1] + done + + echo -e "║ ║" + + if [[ ${CURRENT_DIR_LEVEL} -eq 2 ]]; then + printf "║\t%-50.42s║\n" "R、Returns Upper Directory" + fi + + printf "║\t%-50.42s║\n" "E、Exit" + + echo -e "║ ║" + echo -e "╚═════════════════════════════════════ Author:赵海春 ════╝" + echo -e "\n请选择操作(输入菜单编号):" + read OPERATOR + + if [[ ${OPERATOR} == 'e' || ${OPERATOR} == 'E' ]]; then + echo -e "\n退出系统成功!\e[0m" + exit + fi + + if [[ ${CURRENT_DIR_LEVEL} -eq 2 && (${OPERATOR} == 'r' || ${OPERATOR} == 'R') ]]; then + CURRENT_DIR_LEVEL=$[${CURRENT_DIR_LEVEL} - 1] + cd ${COMPONENT_PATH} + clear + continue + fi + + if [[ ${OPERATOR} -lt 0 || ${OPERATOR} -ge ${#COMPONENTS[@]} ]]; then + echo -e "\n只能输入 [0, ${#COMPONENTS[@]}) 范围内的值!\e[0m" + continue + fi + + if [[ ${CURRENT_DIR_LEVEL} -eq 1 ]]; then + CURRENT_DIR_LEVEL=$[${CURRENT_DIR_LEVEL} + 1] + cd ${COMPONENTS[${OPERATOR}]} + clear + continue + fi + + if [[ ${CURRENT_DIR_LEVEL} -eq 2 ]]; then + cd ${COMPONENTS[${OPERATOR}]} + if [[ ! -e "./index.sh" ]]; then + echo -e "\n不存在 index.sh 脚本,执行异常\e[0m" + exit 1 + fi + + clear + . ./index.sh + cd .. + continue + fi +done