5
5
from jinja2 import Environment , FileSystemLoader
6
6
from subprocess import check_call
7
7
import time
8
- from typing import Any , Dict
8
+ from typing import Any
9
+ import json
9
10
10
11
_LOGGER = logging .getLogger (__name__ )
11
12
12
13
_TEMPLATE = Path (__file__ ).resolve ().parent / "template"
13
14
_TEMPLATE_TESTS = Path (__file__ ).resolve ().parent / "template_tests"
14
15
_TEMPLATE_SAMPLES = Path (__file__ ).resolve ().parent / "template_samples"
15
16
_TEMPLATE_CI = Path (__file__ ).resolve ().parent / "template_ci"
17
+ _CONFIG_FILE = Path (__file__ ).resolve () / "../../../swagger_to_sdk_config_dpg.json"
16
18
17
19
18
20
def check_parameters (
@@ -39,7 +41,7 @@ def generate_ci(template_path: Path, folder_path: Path, package_name: str) -> No
39
41
with open (ci , "r" ) as file_in :
40
42
content = file_in .readlines ()
41
43
for line in content :
42
- if f'{ package_name } \n ' in line :
44
+ if f'{ package_name } ' in line :
43
45
return
44
46
content .append (f' - name: { package_name } \n ' )
45
47
content .append (f' safeName: { package_name .replace ("-" , "" )} \n ' )
@@ -75,6 +77,13 @@ def generate_swagger_readme(work_path: str, env: Environment, **kwargs: Any) ->
75
77
return swagger_readme
76
78
77
79
80
+ def get_autorest_version () -> str :
81
+ with open (_CONFIG_FILE , 'r' ) as file_in :
82
+ config = json .load (file_in )
83
+ autorest_use = " " .join (["--use=" + item for item in config ["meta" ]["autorest_options" ]["use" ]])
84
+ return "--version={} {}" .format (config ["meta" ]["autorest_options" ]["version" ], autorest_use )
85
+
86
+
78
87
def build_package (** kwargs ) -> None :
79
88
# prepare template render parameters
80
89
output_folder = kwargs .get ("output_folder" )
@@ -93,17 +102,17 @@ def build_package(**kwargs) -> None:
93
102
_LOGGER .info ("Build start: %s" , package_name )
94
103
check_parameters (output_folder )
95
104
96
- #generate ci
105
+ # generate ci
97
106
generate_ci (_TEMPLATE_CI , Path (output_folder ).parent , package_name )
98
107
99
108
# generate swagger readme
100
109
env = Environment (loader = FileSystemLoader (_TEMPLATE ), keep_trailing_newline = True )
101
110
swagger_readme = generate_swagger_readme (output_folder , env , ** kwargs )
102
111
103
112
# generate code with autorest and swagger readme
104
- _LOGGER . info ( "generate SDK code with autorest" )
105
- check_call ( f'autorest --version=3.8.1 --use=@autorest/[email protected] --use=@ autorest/[email protected] '
106
- f' { swagger_readme } ' , shell = True )
113
+ autorest_cmd = f'autorest { swagger_readme } { get_autorest_version () } '
114
+ _LOGGER . info ( f"generate SDK code with autorest: { autorest_cmd } " )
115
+ check_call ( autorest_cmd , shell = True )
107
116
108
117
# generate necessary file(setup.py, CHANGELOG.md, etc)
109
118
work_path = Path (output_folder )
0 commit comments