|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -e |
| 4 | +SPEC_DIR=$(mktemp -d) |
| 5 | +echo " ---> source folder: $SPEC_DIR" |
| 6 | +DST_DIR=$(mktemp -d) |
| 7 | +echo " ---> generate folder: $DST_DIR" |
| 8 | +# see if we have a replace directive |
| 9 | +CN_VERSION=$(go mod edit -json | jq -c -r '.Replace | .[] | select(.Old.Path | contains("github.com/haproxytech/client-native/v2")) | .New.Version' 2>/dev/null | awk -F"-" '{print $NF}') || "" |
| 10 | +# if hash is to short take all of it (example v1.0.0-dev1) |
| 11 | +[ "${#CN_VERSION}" -gt 0 ] && [ "${#CN_VERSION}" -lt 4 ] && CN_VERSION=$(go mod edit -json | jq -c -r '.Replace | .[] | select(.Old.Path | contains("github.com/haproxytech/client-native/v2")) | .New.Version') |
| 12 | +# check if version is ther, if not, use one from require |
| 13 | +[ -z "$CN_VERSION" ] && CN_VERSION=$(go mod edit -json | jq -c -r '.Require | .[] | select(.Path | contains("github.com/haproxytech/client-native/v2")) | .Version' 2>/dev/null | awk -F"-" '{print $NF}') |
| 14 | +echo " ---> version of client native used: $CN_VERSION" |
| 15 | + |
| 16 | +# extract repository |
| 17 | +REPO_PATH=$(go mod edit -json | jq -r '.Replace | .[] | select(.Old.Path | contains("github.com/haproxytech/client-native/v2")) | .New.Path' 2>/dev/null | awk -F"/" '{print $2 "/" $3}') || "" |
| 18 | +[ -z "$REPO_PATH" ] && REPO_PATH=haproxytech/client-native |
| 19 | + |
| 20 | +# extract url, gitlab and github have different urls to raw content |
| 21 | +URL_PATH=$(go mod edit -json | jq -r '.Replace | .[] | select(.Old.Path | contains("github.com/haproxytech/client-native/v2")) | .New.Path' 2>/dev/null | awk -F"/" '{print $1}') || "" |
| 22 | +EXTRA_PATH="" |
| 23 | +if [[ $URL_PATH =~ "gitlab" ]]; then |
| 24 | + EXTRA_PATH="-/raw/" |
| 25 | +else |
| 26 | + URL_PATH=raw.githubusercontent.com |
| 27 | +fi |
| 28 | + |
| 29 | +echo " ---> URL path: $URL_PATH" |
| 30 | +echo " ---> repository path: $REPO_PATH" |
| 31 | +SPEC_URL=https://$URL_PATH/$REPO_PATH/$EXTRA_PATH$CN_VERSION/specification |
| 32 | +echo " ---> fetching specification: $SPEC_URL/build/haproxy_spec.yaml" |
| 33 | +wget -q -O $SPEC_DIR/haproxy_spec.yaml $SPEC_URL/build/haproxy_spec.yaml |
| 34 | +echo " ---> fetching copyright: $SPEC_URL/copyright.txt" |
| 35 | +wget -q -O $SPEC_DIR/copyright.txt $SPEC_URL/copyright.txt |
| 36 | + |
| 37 | +echo "module github.com/haproxytech" > $DST_DIR/go.mod |
| 38 | +mkdir -p $DST_DIR/dataplaneapi/operations |
| 39 | +cp configure_data_plane.go $DST_DIR/dataplaneapi/configure_data_plane.go |
| 40 | + |
| 41 | +swagger generate server -f $SPEC_DIR/haproxy_spec.yaml \ |
| 42 | + -A "Data Plane" \ |
| 43 | + -t $DST_DIR \ |
| 44 | + --existing-models github.com/haproxytech/client-native/v2/models \ |
| 45 | + --exclude-main \ |
| 46 | + --skip-models \ |
| 47 | + -s dataplaneapi \ |
| 48 | + --tags=Discovery \ |
| 49 | + --tags=ServiceDiscovery \ |
| 50 | + --tags=Information \ |
| 51 | + --tags=Specification \ |
| 52 | + --tags=SpecificationOpenapiv3 \ |
| 53 | + --tags=Transactions \ |
| 54 | + --tags=Sites \ |
| 55 | + --tags=Stats \ |
| 56 | + --tags=Global \ |
| 57 | + --tags=Frontend \ |
| 58 | + --tags=Backend \ |
| 59 | + --tags=Bind \ |
| 60 | + --tags=Server \ |
| 61 | + --tags=Configuration \ |
| 62 | + --tags=HTTPRequestRule \ |
| 63 | + --tags=HTTPResponseRule \ |
| 64 | + --tags=BackendSwitchingRule \ |
| 65 | + --tags=ServerSwitchingRule \ |
| 66 | + --tags=TCPResponseRule \ |
| 67 | + --tags=TCPRequestRule \ |
| 68 | + --tags=Filter \ |
| 69 | + --tags=StickRule \ |
| 70 | + --tags=LogTarget \ |
| 71 | + --tags=Reloads \ |
| 72 | + --tags=ACL \ |
| 73 | + --tags=Defaults \ |
| 74 | + --tags=StickTable \ |
| 75 | + --tags=Maps \ |
| 76 | + --tags=Nameserver \ |
| 77 | + --tags=Cluster \ |
| 78 | + --tags=Peer \ |
| 79 | + --tags=PeerEntry \ |
| 80 | + --tags=Resolver \ |
| 81 | + --tags=Spoe \ |
| 82 | + --tags=SpoeTransactions \ |
| 83 | + --tags=Storage \ |
| 84 | + --tags="ACL Runtime" \ |
| 85 | + --tags=ServerTemplate \ |
| 86 | + -r $SPEC_DIR/copyright.txt |
| 87 | + |
| 88 | +echo " ---> removing doc.go" |
| 89 | +rm doc.go |
| 90 | +echo " ---> removing embedded_spec.go" |
| 91 | +rm embedded_spec.go |
| 92 | +echo " ---> removing server.go" |
| 93 | +rm server.go |
| 94 | +echo " ---> removing operations/*" |
| 95 | +rm -rf operations/* |
| 96 | + |
| 97 | +echo " ---> copy generated files to destination" |
| 98 | +cp -a $DST_DIR/dataplaneapi/. . |
0 commit comments