From 837f9d473ef4622ad82845ef40363b4fc0877261 Mon Sep 17 00:00:00 2001 From: Tejas Mehta Date: Sun, 29 Oct 2023 12:04:49 -0400 Subject: [PATCH] Auto generate protos on start/build of each microservice --- gen_protos.sh | 32 ++++++++++++++++-------------- package.json | 2 +- packages/api-gateway/package.json | 11 +++++----- packages/auth-service/package.json | 11 +++++----- packages/db-service/package.json | 11 +++++----- 5 files changed, 36 insertions(+), 31 deletions(-) diff --git a/gen_protos.sh b/gen_protos.sh index 57e4698..77dfda2 100755 --- a/gen_protos.sh +++ b/gen_protos.sh @@ -1,5 +1,7 @@ #!/bin/bash +EXEC_PATH=${EXEC_PATH-.} + # Add the names of any services that have proto definitions to auto-genetate # # NOTE: The proto project's subdirectory MUST match the directory name of the @@ -8,15 +10,15 @@ PROTO_SERVICE_NAMES=("auth-service" "db-service") for service in ${PROTO_SERVICE_NAMES[@]}; do - mkdir -p ./packages/${service}/src/gen + mkdir -p ${EXEC_PATH}/packages/${service}/src/gen protoc \ - --plugin=./node_modules/.bin/protoc-gen-ts_proto \ - --ts_proto_out=./packages/${service}/src/gen \ + --plugin=${EXEC_PATH}/node_modules/.bin/protoc-gen-ts_proto \ + --ts_proto_out=${EXEC_PATH}/packages/${service}/src/gen \ --ts_proto_opt=nestJs=true \ --ts_proto_opt=returnObservable=false \ - -I ./packages/proto/${service}/ \ - ./packages/proto/${service}/*.proto + -I ${EXEC_PATH}/packages/proto/${service}/ \ + ${EXEC_PATH}/packages/proto/${service}/*.proto done # Add the names of any services that have proto definitions to auto-genetate that @@ -27,15 +29,15 @@ PROTO_GW_SERVICES=("auth-service" "db-service") for service in ${PROTO_GW_SERVICES[@]}; do - mkdir -p ./packages/api-gateway/src/${service}/gen + mkdir -p ${EXEC_PATH}/packages/api-gateway/src/${service}/gen protoc \ - --plugin=./node_modules/.bin/protoc-gen-ts_proto \ - --ts_proto_out=./packages/api-gateway/src/${service}/gen \ + --plugin=${EXEC_PATH}/node_modules/.bin/protoc-gen-ts_proto \ + --ts_proto_out=${EXEC_PATH}/packages/api-gateway/src/${service}/gen \ --ts_proto_opt=nestJs=true \ --ts_proto_opt=returnObservable=false \ - -I ./packages/proto/${service}/ \ - ./packages/proto/${service}/*.proto + -I ${EXEC_PATH}/packages/proto/${service}/ \ + ${EXEC_PATH}/packages/proto/${service}/*.proto done # Add the names of any services that have proto definitions to auto-genetate that @@ -46,14 +48,14 @@ PROTO_AUTH_USED_SERVICES=() for service in ${PROTO_AUTH_USED_SERVICES[@]}; do - mkdir -p ./packages/auth-service/src/${service}/gen + mkdir -p ${EXEC_PATH}/packages/auth-service/src/${service}/gen protoc \ - --plugin=./node_modules/.bin/protoc-gen-ts_proto \ - --ts_proto_out=./packages/auth-service/src/${service}/gen \ + --plugin=${EXEC_PATH}/node_modules/.bin/protoc-gen-ts_proto \ + --ts_proto_out=${EXEC_PATH}/packages/auth-service/src/${service}/gen \ --ts_proto_opt=nestJs=true \ --ts_proto_opt=returnObservable=false \ - -I ./packages/proto/${service}/ \ - ./packages/proto/${service}/*.proto + -I ${EXEC_PATH}/packages/proto/${service}/ \ + ${EXEC_PATH}/packages/proto/${service}/*.proto done diff --git a/package.json b/package.json index 084ed0c..f2fb687 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "format:write": "yarn prettier --write .", "tsc": "nx run-many --target=tsc", "lint": "nx run-many --target=lint", - "gen-proto": "./gen_protos.sh" + "gen-proto": "./gen_protos.sh && yarn format:write" }, "devDependencies": { "nx": "17.0.0", diff --git a/packages/api-gateway/package.json b/packages/api-gateway/package.json index 1dce342..a53fe96 100644 --- a/packages/api-gateway/package.json +++ b/packages/api-gateway/package.json @@ -6,12 +6,13 @@ "private": true, "license": "UNLICENSED", "scripts": { - "build": "nest build", + "build": "yarn gen-proto && nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", + "gen-proto": "EXEC_PATH=../.. ../../gen_protos.sh && prettier --write ../", + "start": "yarn gen-proto && nest start", + "start:dev": "yarn start --watch", + "start:debug": "yarn start --debug --watch", + "start:prod": "yarn gen-proto && node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", diff --git a/packages/auth-service/package.json b/packages/auth-service/package.json index d079301..baa2ded 100644 --- a/packages/auth-service/package.json +++ b/packages/auth-service/package.json @@ -6,12 +6,13 @@ "private": true, "license": "UNLICENSED", "scripts": { - "build": "nest build", + "build": "yarn gen-proto && nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", + "gen-proto": "EXEC_PATH=../.. ../../gen_protos.sh && prettier --write ../", + "start": "yarn gen-proto && nest start", + "start:dev": "yarn start --watch", + "start:debug": "yarn start --debug --watch", + "start:prod": "yarn gen-proto && node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", diff --git a/packages/db-service/package.json b/packages/db-service/package.json index a69cb4e..0a9f415 100644 --- a/packages/db-service/package.json +++ b/packages/db-service/package.json @@ -6,12 +6,13 @@ "private": true, "license": "UNLICENSED", "scripts": { - "build": "nest build", + "build": "yarn gen-proto && nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", + "gen-proto": "EXEC_PATH=../.. ../../gen_protos.sh && prettier --write ../", + "start": "yarn gen-proto && nest start", + "start:dev": "yarn start --watch", + "start:debug": "yarn start --debug --watch", + "start:prod": "yarn gen-proto && node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch",