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.