#!/bin/bash # 有命令错误直接退出脚本 set -e # 项目类型 project_type=$1 # 项目名 project=$2 if [[ -z $project_type || -z $project ]]; then echo '项目类型和项目名不能为空' exit 1 fi # 项目名首字母大写 up_case_project="$(tr '[:lower:]' '[:upper:]' <<<${project:0:1})${project:1}" # 获取系统类型 os=$(uname -s) # 获取项目根目录 root=$(dirname $(cd $(dirname $0) && pwd)) cd $root # 调试 #rm -rf api/$project_type/$project app/$project_type/$project copy() { if [[ -d "api/$project_type/$project" || -d "app/$project_type/$project" ]]; then echo "${project_type}/${project}项目已存在" exit 1 fi mkdir -p api/$project_type/$project app/$project_type/$project cp -r api/service/demo/*.proto api/$project_type/$project/ cp -r app/service/demo/ app/$project_type/$project/ replace # 生成proto文件 make api project=$project } replace() { # 重命名目录和文件 mv api/$project_type/$project/demo.proto api/$project_type/$project/$project.proto mv app/$project_type/$project/cmd/demo app/$project_type/$project/cmd/$project mv app/$project_type/$project/internal/service/demo.go app/$project_type/$project/internal/service/$project.go mv app/$project_type/$project/internal/dao/demo.go app/$project_type/$project/internal/dao/$project.go mv app/$project_type/$project/internal/handler/demo.go app/$project_type/$project/internal/handler/$project.go # 排除搜索bin二进制目录 rm -rf app/$project_type/$project/bin/* # 替换文件内容, linux和mac的sed命令有点区别 if [[ $os = "Darwin" ]]; then # mac grep -rl "demo" api/$project_type/$project app/$project_type/$project | xargs -I {} sed -i "" "s#service/demo#$project_type/$project#g" {} grep -rl "demo" api/$project_type/$project app/$project_type/$project | xargs -I {} sed -i "" "s#demo#$project#g" {} grep -rl "Demo" api/$project_type/$project app/$project_type/$project | xargs -I {} sed -i "" "s#Demo#$up_case_project#g" {} else # linux grep -rl "demo" api/$project_type/$project app/$project_type/$project | xargs -I {} sed "s#service/demo#$project_type/$project#g" {} grep -rl "demo" api/$project_type/$project app/$project_type/$project | xargs -I {} sed -i "s#demo#$project#g" {} grep -rl "Demo" api/$project_type/$project app/$project_type/$project | xargs -I {} sed -i "s#Demo#$up_case_project#g" {} fi } copy