From 3c518d5afc87c310164788dcab1a94c68125209d Mon Sep 17 00:00:00 2001 From: zhaohaichun Date: Fri, 15 Apr 2022 10:21:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84,?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8F=9C=E5=8D=95=E6=98=BE=E7=A4=BA=E9=80=9F?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Batch Checkout Branch}/index.sh | 0 .../Batch Clone Project}/config/projects.txt | 0 .../Batch Clone Project}/index.sh | 0 .../Batch Creating Branch}/index.sh | 0 .../config/retain-branches.txt | 0 .../Batch Delete Remote Branch}/index.sh | 0 .../Batch Push Repository}/index.sh | 0 .../awk/update_version.awk | 0 .../Batch Modify Maven Version}/index.sh | 0 index.sh | 13 ++++++++----- 10 files changed, 8 insertions(+), 5 deletions(-) rename component/{Git-Tools/Batch-Checkout-Branch => Git Tools/Batch Checkout Branch}/index.sh (100%) rename component/{Git-Tools/Batch-Clone-Project => Git Tools/Batch Clone Project}/config/projects.txt (100%) rename component/{Git-Tools/Batch-Clone-Project => Git Tools/Batch Clone Project}/index.sh (100%) rename component/{Git-Tools/Batch-Creating-Branch => Git Tools/Batch Creating Branch}/index.sh (100%) rename component/{Git-Tools/Batch-Delete-Remote-Branch => Git Tools/Batch Delete Remote Branch}/config/retain-branches.txt (100%) rename component/{Git-Tools/Batch-Delete-Remote-Branch => Git Tools/Batch Delete Remote Branch}/index.sh (100%) rename component/{Git-Tools/Batch-Push-Repository => Git Tools/Batch Push Repository}/index.sh (100%) rename component/{Project-Tools/Batch-Modify-Maven-Version => Project Tools/Batch Modify Maven Version}/awk/update_version.awk (100%) rename component/{Project-Tools/Batch-Modify-Maven-Version => Project Tools/Batch Modify Maven Version}/index.sh (100%) diff --git a/component/Git-Tools/Batch-Checkout-Branch/index.sh b/component/Git Tools/Batch Checkout Branch/index.sh similarity index 100% rename from component/Git-Tools/Batch-Checkout-Branch/index.sh rename to component/Git Tools/Batch Checkout Branch/index.sh diff --git a/component/Git-Tools/Batch-Clone-Project/config/projects.txt b/component/Git Tools/Batch Clone Project/config/projects.txt similarity index 100% rename from component/Git-Tools/Batch-Clone-Project/config/projects.txt rename to component/Git Tools/Batch Clone Project/config/projects.txt diff --git a/component/Git-Tools/Batch-Clone-Project/index.sh b/component/Git Tools/Batch Clone Project/index.sh similarity index 100% rename from component/Git-Tools/Batch-Clone-Project/index.sh rename to component/Git Tools/Batch Clone Project/index.sh diff --git a/component/Git-Tools/Batch-Creating-Branch/index.sh b/component/Git Tools/Batch Creating Branch/index.sh similarity index 100% rename from component/Git-Tools/Batch-Creating-Branch/index.sh rename to component/Git Tools/Batch Creating Branch/index.sh 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 similarity index 100% rename from component/Git-Tools/Batch-Delete-Remote-Branch/config/retain-branches.txt rename to component/Git Tools/Batch Delete Remote Branch/config/retain-branches.txt diff --git a/component/Git-Tools/Batch-Delete-Remote-Branch/index.sh b/component/Git Tools/Batch Delete Remote Branch/index.sh similarity index 100% rename from component/Git-Tools/Batch-Delete-Remote-Branch/index.sh rename to component/Git Tools/Batch Delete Remote Branch/index.sh diff --git a/component/Git-Tools/Batch-Push-Repository/index.sh b/component/Git Tools/Batch Push Repository/index.sh similarity index 100% rename from component/Git-Tools/Batch-Push-Repository/index.sh rename to component/Git Tools/Batch Push Repository/index.sh diff --git a/component/Project-Tools/Batch-Modify-Maven-Version/awk/update_version.awk b/component/Project Tools/Batch Modify Maven Version/awk/update_version.awk similarity index 100% rename from component/Project-Tools/Batch-Modify-Maven-Version/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 similarity index 100% rename from component/Project-Tools/Batch-Modify-Maven-Version/index.sh rename to component/Project Tools/Batch Modify Maven Version/index.sh diff --git a/index.sh b/index.sh index e70f24d..1b4fb33 100644 --- a/index.sh +++ b/index.sh @@ -18,11 +18,14 @@ while [ true ]; do echo -e "║ ║" INDEX=0 - for COMPONENT in `ls`; do - COMPONENTS[${INDEX}]=${COMPONENT} - printf "║\t%-50.42s║\n" "${INDEX}、${COMPONENT}" | sed 's/-/ /g' + OLD_IFS="$IFS" + IFS=$'\n' + COMPONENTS=(`ls`) + for COMPONENT in ${COMPONENTS[@]}; do + printf "║\t%-50.42s║\n" "${INDEX}、${COMPONENT}" INDEX=$[${INDEX} + 1] done + IFS=${OLD_IFS} echo -e "║ ║" @@ -56,13 +59,13 @@ while [ true ]; do if [[ ${CURRENT_DIR_LEVEL} -eq 1 ]]; then CURRENT_DIR_LEVEL=$[${CURRENT_DIR_LEVEL} + 1] - cd ${COMPONENTS[${OPERATOR}]} + cd "./${COMPONENTS[${OPERATOR}]}" clear continue fi if [[ ${CURRENT_DIR_LEVEL} -eq 2 ]]; then - cd ${COMPONENTS[${OPERATOR}]} + cd "./${COMPONENTS[${OPERATOR}]}" if [[ ! -e "./index.sh" ]]; then echo -e "\n不存在 index.sh 脚本,执行异常\e[0m" exit 1 -- Gitee From 744b89624cfafc7a3c8264b01369215350a5c8c1 Mon Sep 17 00:00:00 2001 From: zhaohaichun Date: Fri, 15 Apr 2022 10:50:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A1=A5=E5=85=85=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 +++-- ...00\345\217\221\350\247\204\350\214\203.md" | 133 ++++++++++++++++++ image/0010.png | Bin 0 -> 6648 bytes image/0011.png | Bin 0 -> 25117 bytes 4 files changed, 157 insertions(+), 9 deletions(-) create mode 100644 "document/\347\273\204\344\273\266\345\274\200\345\217\221\350\247\204\350\214\203.md" create mode 100644 image/0010.png create mode 100644 image/0011.png diff --git a/README.md b/README.md index f196e3a..ef5055a 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,18 @@ -## 介绍 -自动化项目管理工具:批量 clone 项目、创建新分支、切换分支、修改项目 pom.xml 版本、push 项目等工具 +# 介绍 +自动化项目管理工具,包括:批量 clone 项目、创建新分支、切换分支、修改项目 pom.xml 版本、push 项目等工具,可以根据需求执行按照《组件开发规范》自定义工具。 -## 软件架构 -使用 shell 脚本编写,支持自定义工具扩展 -## 使用说明 -### 一、目录升级 +# 软件架构 +使用 shell、awk 脚本编写 + + + +# 使用说明 + + + +## 一、目录升级 目录分为两级目录(最多有两级目录),如下所示: @@ -20,9 +26,11 @@ ![image](./image/0008.png) -### 二、具体功能 +## 二、具体功能 -#### 1、Git Tools + + +### 1、Git Tools 1. Batch Clone Project @@ -62,8 +70,10 @@ ![image](./image/0007.png) 按照现在项目的分支和 remote origin push 到仓库 + + -#### 2、Project Tools +### 2、Project Tools 1. Batch Modify Maven Version @@ -74,3 +84,8 @@ - 版本类型:这个是根据我们项目需要设置(若有需要可以调整为其他),就修改 pom.xml 中第一个和第二个 version 标签内容 - 待修改的版本:替换现在 version 中的内容 + + +# 自定义组件 + +详见 document 目录中《组件开发规范》 diff --git "a/document/\347\273\204\344\273\266\345\274\200\345\217\221\350\247\204\350\214\203.md" "b/document/\347\273\204\344\273\266\345\274\200\345\217\221\350\247\204\350\214\203.md" new file mode 100644 index 0000000..2bf7f9a --- /dev/null +++ "b/document/\347\273\204\344\273\266\345\274\200\345\217\221\350\247\204\350\214\203.md" @@ -0,0 +1,133 @@ +# 组件目录结构 + +component +​ |--- 组件一级菜单目录 +​ | |--- 组件目录 +​ | |--- 组件目录 +​ | +​ |--- 组件一级菜单目录 +​ |--- 组件目录 + + + +**组件一级菜单目录** + +对同类型的组件进行归类,该目录名称对应程序的一级菜单,如下: + +![image](../image/0010.png) + +![image](../image/0001.png) + + + +**组件目录** + +具体功能组件的目录,用于保存组件相关脚本和文件,如下: + +![image](../image/0011.png) + +![image](../image/0002.png) + + + +# 组件目录 + +组件目录 +​ |--- config(配置文件目录) +​ | |--- 配置文件 +​ | +​ |--- index.sh(组件入口脚本) + +> 注:组件目录中 `index.sh` 是必须存在的 + + + +# index.sh + +index.sh 基本模板如下: + +```bash +#!/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 "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + + +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` + +# 业务代码编写区域 + +cd ${SCRIPT_PATH} +echo -e "\n\n" +``` + + + +**1、注释** + +```bash +#========================================================================================= +# 作者:赵海春 +# 日期:2022.04.12 +# 作用:批量创建分支 +# 使用:在需要批量创建分支项目的脚本中通过以下步骤使用该脚本 +# 1、命令:. ./index.sh +# 2、配置环境变量:PROJECTS_TARGET_PATH +#========================================================================================= +``` + +用于标注脚本相关信息 + +**2、组件标识** + +```bash +echo -e "\e[34m" +echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" +echo -e "┃ 批量创建分支 ┃" +echo -e "┃ Batch Creating Branch ┃" +echo -e "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" +``` + +用于通过菜单进入具体组件,可以显示当前组件名称 + +**3、组件根目录变量** + +```bash +# 当前脚本所在目录路径 +SCRIPT_PATH=`pwd` +``` + +用于保存当前组件的根目录(即组件 index.sh 脚本所在目录) + +**4、退回到组件根目录** + +```bash +cd ${SCRIPT_PATH} +echo -e "\n\n" +``` + +业务代码中可能会进入到其他目录进行操作,组件 index.sh 执行完成,最终需要在组件跟目录中 + + + +# 全局环境变量 + +全局环境变量定义在软件根目录 index.sh 脚本中,现在可用的变量为: + +- ROOT_PATH:软件根目录 +- PROJECTS_TARGET_PATH:执行 clone 组件后,项目保存的目录 +- COMPONENT_PATH:组件一级菜单所在目录 + diff --git a/image/0010.png b/image/0010.png new file mode 100644 index 0000000000000000000000000000000000000000..5a1caa308bf90a4d83c2918a0da0c8dc789f79f8 GIT binary patch literal 6648 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 literal 0 HcmV?d00001 diff --git a/image/0011.png b/image/0011.png new file mode 100644 index 0000000000000000000000000000000000000000..edef1b662231fdd022a890c4ee1ecc82b4a96e4e GIT binary patch literal 25117 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