1
1
#! /bin/bash
2
2
pwd
3
- set -ex
3
+ set -e
4
4
5
- npx openapi-typescript ./src/openapi/openapi.yaml -o ./src/auto-generated/api/models/schema.ts
6
- npx openapi-generator-cli generate -g asciidoc -i ./src/openapi/openapi.yaml -o ./src/auto-generated/docs/index.adoc
7
- npx yaml2json -f ./src/openapi/openapi.yaml
5
+ OPENAPI_SPEC_FILE=" ./src/openapi/openapi.yaml"
6
+ SCHEMA_FILE=" ./src/auto-generated/api/models/schema.ts"
7
+ DEFINITION_FILE=" ./src/auto-generated/api/definition.ts"
8
+ METADATA_FILE=" ./src/auto-generated/.METADATA.sha1"
8
9
9
- export FILE=./src/auto-generated/api/definition.ts
10
- echo ' // GENERATED FILE. DO NOT EDIT.' > ${FILE}
11
- echo ' const OPENAPI = `' >> ${FILE}
12
- cat ./src/openapi/openapi.json >> ${FILE}
13
- echo ' `' >> ${FILE}
14
- echo " export const openApiDocument = JSON.parse(OPENAPI);" >> ${FILE}
10
+ openapi_generate () {
11
+ npx openapi-typescript ${OPENAPI_SPEC_FILE} -o ${SCHEMA_FILE}
12
+ npx openapi-generator-cli generate -g asciidoc -i ./src/openapi/openapi.yaml -o ./src/auto-generated/docs/index.adoc
13
+ npx yaml2json -f ${OPENAPI_SPEC_FILE}
15
14
16
- rm ./src/openapi/openapi.json
17
- yarn openapi:prettier:fix
15
+ OPENAPI_SPEC_FILE_JSON=$( tr -d ' [:space:]' < " $( dirname $OPENAPI_SPEC_FILE ) " /openapi.json)
16
+ cat << EOF > ${DEFINITION_FILE}
17
+ /* eslint-disable */
18
+ /* prettier-ignore */
19
+ // GENERATED FILE DO NOT EDIT.
20
+ const OPENAPI = \` ${OPENAPI_SPEC_FILE_JSON} \` ;
21
+ export const openApiDocument = JSON.parse(OPENAPI);
22
+ EOF
23
+
24
+ rm ./src/openapi/openapi.json
25
+ yarn openapi:prettier:fix
26
+ NEW_SHA=$( openapi_checksum)
27
+ openapi_update ${NEW_SHA}
28
+ }
29
+
30
+ openapi_checksum (){
31
+ cat ${DEFINITION_FILE} ${SCHEMA_FILE} ${OPENAPI_SPEC_FILE} | sha1sum | awk ' {print $1}' | tr -d ' [:space:]'
32
+ }
33
+
34
+ openapi_update () {
35
+ echo " ${1} " > " ${METADATA_FILE} "
36
+ }
37
+
38
+ # Function to check if OpenAPI files are up-to-date
39
+ openapi_check () {
40
+
41
+ if [ ! -f " ${METADATA_FILE} " ]; then
42
+ echo " Error: Metadata file '${METADATA_FILE} ' not found. Run 'yarn openapi:generate' first."
43
+ exit 1
44
+ else
45
+ STORED_SHA1=$( cat " ${METADATA_FILE} " )
46
+ fi
47
+
48
+ # Generate new SHA-1 checksum
49
+ NEW_SHA1=$( openapi_checksum)
50
+
51
+ # Check if the stored and current SHA-1 checksums differ
52
+ if [ " ${STORED_SHA1} " != " ${NEW_SHA1} " ]; then
53
+ echo " Changes detected in auto-generated files or openapi.yaml. Please run 'yarn openapi:generate' to update."
54
+ exit 1
55
+ else
56
+ echo " No changes detected in auto-generated files or openapi.yaml. Auto-generated files are up to date."
57
+ fi
58
+ }
59
+
60
+ # Check the command passed as an argument
61
+ case " $1 " in
62
+ " generate" )
63
+ openapi_generate
64
+ ;;
65
+ " check" )
66
+ openapi_check
67
+ ;;
68
+ * )
69
+ echo " Error: Invalid command. Please use \" ${0} generate\" to generate OpenAPI files or \" ${0} check\" to verify their status."
70
+ exit 1
71
+ ;;
72
+ esac
0 commit comments