NONRTRIC-998: Servicemanager - Add API Docs
[nonrtric/plt/sme.git] / invoker / generate.sh
1 # -
2 #   ========================LICENSE_START=================================
3 #   O-RAN-SC
4 #   %%
5 #   Copyright (C) 2023: Nordix Foundation
6 #   %%
7 #   Licensed under the Apache License, Version 2.0 (the "License");
8 #   you may not use this file except in compliance with the License.
9 #   You may obtain a copy of the License at
10 #
11 #        http://www.apache.org/licenses/LICENSE-2.0
12 #
13 #   Unless required by applicable law or agreed to in writing, software
14 #   distributed under the License is distributed on an "AS IS" BASIS,
15 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 #   See the License for the specific language governing permissions and
17 #   limitations under the License.
18 #   ========================LICENSE_END===================================
19 #
20
21 cwd=$(pwd)
22
23 mkdir -p specs
24
25 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/29222-h60.zip -o specs/apidef.zip
26 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-h70.zip -o specs/common29122apidef.zip
27 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.508/29508-h80.zip -o specs/common29508apidef.zip
28 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.510/29510-h70.zip -o specs/common29510apidef.zip
29 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.512/29512-h80.zip -o specs/common29512apidef.zip
30 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.514/29514-h60.zip -o specs/common29514apidef.zip
31 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.517/29517-h70.zip -o specs/common29517apidef.zip
32 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/29518-h70.zip -o specs/common29518apidef.zip
33 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/29522-h70.zip -o specs/common29522apidef.zip
34 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.523/29523-h80.zip -o specs/common29523apidef.zip
35 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.554/29554-h40.zip -o specs/common29554apidef.zip
36 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.571/29571-h70.zip -o specs/common29571apidef.zip
37 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.572/29572-h60.zip -o specs/common29572apidef.zip
38
39 cd specs/
40
41 jar xvf apidef.zip
42 jar xvf common29122apidef.zip
43 jar xvf common29508apidef.zip
44 jar xvf common29510apidef.zip
45 jar xvf common29512apidef.zip
46 jar xvf common29514apidef.zip
47 jar xvf common29517apidef.zip
48 jar xvf common29518apidef.zip
49 jar xvf common29522apidef.zip
50 jar xvf common29523apidef.zip
51 jar xvf common29554apidef.zip
52 jar xvf common29571apidef.zip
53 jar xvf common29572apidef.zip
54
55 # Remove types that are not used by CAPIF that have dependencies to other specifications.
56 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\CivicAddress/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
57 mv temp.yaml TS29571_CommonData.yaml
58 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\ExternalMbsServiceArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
59 mv temp.yaml TS29571_CommonData.yaml
60 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeographicArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
61 mv temp.yaml TS29571_CommonData.yaml
62 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeoServiceArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
63 mv temp.yaml TS29571_CommonData.yaml
64 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaComp/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
65 mv temp.yaml TS29571_CommonData.yaml
66 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaCompRm/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
67 mv temp.yaml TS29571_CommonData.yaml
68 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaInfo/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
69 mv temp.yaml TS29571_CommonData.yaml
70 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsServiceInfo/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
71 mv temp.yaml TS29571_CommonData.yaml
72 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsSession/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
73 mv temp.yaml TS29571_CommonData.yaml
74 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\SpatialValidityCond/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
75 mv temp.yaml TS29571_CommonData.yaml
76
77 # Remove attributes that can not be generated easily.
78 sed '/accessTokenError.*/,+3d' TS29571_CommonData.yaml >temp.yaml
79 mv temp.yaml TS29571_CommonData.yaml
80 sed '/accessTokenRequest.*/,+3d' TS29571_CommonData.yaml >temp.yaml
81 mv temp.yaml TS29571_CommonData.yaml
82
83
84 sed '/oneOf.*/,+2d' TS29222_CAPIF_Publish_Service_API.yaml >temp.yaml
85 mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
86
87 # Replace references to external specs that are collected to the common spec by the commoncollector
88 # <replacements_start>
89 cat TS29122_CommonData.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
90 mv temp.yaml TS29122_CommonData.yaml
91 cat TS29122_CommonData.yaml | sed 's/TS29554_Npcf_BDTPolicyControl/CommonData/g' > temp.yaml
92 mv temp.yaml TS29122_CommonData.yaml
93 cat TS29122_CommonData.yaml | sed 's/TS29514_Npcf_PolicyAuthorization/CommonData/g' > temp.yaml
94 mv temp.yaml TS29122_CommonData.yaml
95 cat TS29571_CommonData.yaml | sed 's/TS29514_Npcf_PolicyAuthorization/CommonData/g' > temp.yaml
96 mv temp.yaml TS29571_CommonData.yaml
97 cat TS29571_CommonData.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
98 mv temp.yaml TS29571_CommonData.yaml
99 cat TS29222_CAPIF_Publish_Service_API.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
100 mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
101 # <new_replacement>
102
103 # This spec has references to itself that need to be removed
104 cat TS29571_CommonData.yaml | sed 's/TS29571_CommonData.yaml//g' > temp.yaml
105 mv temp.yaml TS29571_CommonData.yaml
106
107 cd $cwd
108
109 echo "Fixing enums"
110 cd internal/gentools/enumfixer
111 go build .
112 ./enumfixer -apidir=../../../specs
113
114 cd $cwd
115 echo "Gathering common references"
116 cd internal/gentools/commoncollector
117 go build .
118 ./commoncollector -apidir=../../../specs
119
120 cd $cwd
121 echo "Fixing misc in specifications"
122 cd internal/gentools/specificationfixer
123 go build .
124 ./specificationfixer -apidir=../../../specs
125
126 cd $cwd
127
128 go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.10.1
129 PATH=$PATH:~/go/bin
130
131 echo "Generating TS29122_CommonData"
132 mkdir -p internal/common29122
133 oapi-codegen --config gogeneratorspecs/common29122/generator_settings.yaml specs/TS29122_CommonData.yaml
134
135 echo "Generating aggregated CommonData"
136 mkdir -p internal/common
137 oapi-codegen --config gogeneratorspecs/common/generator_settings.yaml specs/CommonData.yaml
138
139 echo "Generating TS29571_CommonData"
140 mkdir -p internal/common29571
141 oapi-codegen --config gogeneratorspecs/common29571/generator_settings.yaml specs/TS29571_CommonData.yaml
142
143
144 echo "Generating TS29222_CAPIF_API_Provider_Management_API"
145 mkdir -p internal/providermanagementapi
146 oapi-codegen --config gogeneratorspecs/providermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Provider_Management_API.yaml
147
148 echo "Generating TS29222_CAPIF_Publish_Service_API"
149 mkdir -p internal/publishserviceapi
150 oapi-codegen --config gogeneratorspecs/publishserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Publish_Service_API.yaml
151
152 echo "Generating TS29222_CAPIF_API_Invoker_Management_API"
153 mkdir -p internal/invokermanagementapi
154 oapi-codegen --config gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
155
156 echo "Generating TS29222_CAPIF_Discover_Service_API"
157 mkdir -p internal/discoverserviceapi
158 oapi-codegen --config gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Discover_Service_API.yaml
159
160 echo "Generating TS29222_CAPIF_Security_API"
161 mkdir -p internal/securityapi
162 oapi-codegen --config gogeneratorspecs/securityapi/generator_settings_types.yaml specs/TS29222_CAPIF_Security_API.yaml
163
164 echo "Cleanup"
165 rm -rf specs
166
167 echo "Generating mocks."
168 go generate ./...