gen-project.sh 2.39 KB
Newer Older
kzkzzzz's avatar
kzkzzzz committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#!/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
kzkzzzz's avatar
kzkzzzz committed
51 52 53 54 55
  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/*
kzkzzzz's avatar
kzkzzzz committed
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

  # 替换文件内容, 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