github.com/Tyktechnologies/tyk@v2.9.5+incompatible/bin/ci-swagger.sh (about) 1 #!/bin/bash 2 3 swagger2fileName="swagger2.yaml" 4 tempOpenAPIFileName="temp-swagger.yml" 5 tempUpdatedOpenAPIFileName="temp-swagger2.yml" 6 openAPIspecfileName="swagger.yml" 7 8 fatal() { 9 echo "$@" >&2 10 exit 1 11 } 12 13 swagger generate spec -o "$swagger2fileName" 14 15 if [ $? -ne 0 ]; then 16 fatal "could not generate swagger2.0 spec to the specified path, $swagger2fileName" 17 fi 18 19 swagger validate "$swagger2fileName" 20 21 if [ $? -ne 0 ]; then 22 fatal "swagger spec is invalid... swagger spec is located at $swagger2fileName" 23 fi 24 25 api-spec-converter --from=swagger_2 --to=openapi_3 --syntax=yaml "$swagger2fileName" > "$tempOpenAPIFileName" 26 27 if [ $? -ne 0 ]; then 28 fatal "could not convert swagger2.0 spec to opeenapi 3.0" 29 fi 30 31 ## clean up 32 rm "$swagger2fileName" 33 34 ## If running this on macOS, you might need to change sed to gsed 35 36 sed -n '1,/components:/p' $openAPIspecfileName > $tempUpdatedOpenAPIFileName 37 38 if [ $? -ne 0 ]; then 39 fatal "replace operation failed step 1" 40 fi 41 42 lineToStartReplaceFrom=$(grep -n "responses:" swagger.yml | tail -1 | awk '{split($0,a,":"); print a[1]}') 43 44 sed -n "$lineToStartReplaceFrom,/components:/p" $openAPIspecfileName >> $tempUpdatedOpenAPIFileName 45 if [ $? -ne 0 ]; then 46 fatal "replace operation failed" 47 fi 48 49 mv $tempUpdatedOpenAPIFileName $openAPIspecfileName 50 51 ## Ideally, CI should push $openAPIspecfileName to GitHub 52 ## but for now, it can be committed by users and pushed alonside their changes.