@@ -41,7 +41,8 @@ def sdk_automation_cadl(config: dict) -> List[dict]:
41
41
42
42
sdk_folder = get_cadl_sdk_folder (os .path .join (cadl_dir , 'cadl-project.yaml' ))
43
43
if not sdk_folder :
44
- logging .warning ('[Skip] "sdk-folder" option not found in cadl-project.yaml' )
44
+ logging .warning ('[Skip] "options.@azure-tools/cadl-java.emitter-output-dir" '
45
+ 'or "parameters.service-directory-name.default" not found in cadl-project.yaml' )
45
46
else :
46
47
sdk_folder_abspath = os .path .join (sdk_root , sdk_folder )
47
48
require_sdk_integration = not os .path .exists (os .path .join (sdk_folder_abspath , 'src' ))
@@ -54,20 +55,30 @@ def sdk_automation_cadl(config: dict) -> List[dict]:
54
55
module = match .group (2 )
55
56
56
57
if not module :
57
- logging .warning ('[Skip] sdk-folder option {} not match format sdk/<service>/<module> '
58
- . format ( sdk_folder ) )
58
+ logging .warning ('[Skip] "emitter-output-dir" not match format '
59
+ '{java-sdk-folder}/sdk/{service-directory-name}/<module>' )
59
60
else :
60
61
# cadl
61
62
succeeded = False
62
63
pwd = os .getcwd ()
63
64
os .chdir (cadl_dir )
64
65
try :
66
+ # install latest @azure-tools/cadl-java
67
+ subprocess .run ('npm install @azure-tools/cadl-java' , shell = True , check = True )
68
+
69
+ # install dependencies
65
70
subprocess .run ('npm install' , shell = True , check = True )
66
71
72
+ # check client.cadl
73
+ cadl_source = '.'
74
+ if os .path .exists (os .path .join (cadl_dir , 'client.cadl' )):
75
+ cadl_source = 'client.cadl'
76
+
67
77
# generate Java project
68
- subprocess .run ('npx cadl compile . --emit @azure-tools/cadl-java --output-path={}'
69
- .format (sdk_folder_abspath ),
70
- shell = True , check = True )
78
+ command = 'npx cadl compile {0} --emit=@azure-tools/cadl-java --arg="java-sdk-folder={1}"' \
79
+ .format (cadl_source , sdk_root )
80
+ logging .info (command )
81
+ subprocess .run (command , shell = True , check = True )
71
82
72
83
succeeded = True
73
84
except subprocess .CalledProcessError :
@@ -111,12 +122,17 @@ def sdk_automation_cadl(config: dict) -> List[dict]:
111
122
112
123
113
124
def get_cadl_sdk_folder (project_filename : str ) -> Optional [str ]:
114
- sdk_folder = None
125
+ sdk_folder : Optional [ str ] = None
115
126
if os .path .exists (project_filename ):
116
127
with open (project_filename , 'r' , encoding = 'utf-8' ) as f_in :
117
128
project_yaml = yaml .safe_load (f_in )
118
- sdk_folder = project_yaml ['emitters' ]['@azure-tools/cadl-java' ]['sdk-folder' ]
119
-
129
+ if 'parameters' in project_yaml and 'service-directory-name' in project_yaml ['parameters' ] \
130
+ and 'options' in project_yaml and '@azure-tools/cadl-java' in project_yaml ['options' ]:
131
+ service : str = project_yaml ['parameters' ]['service-directory-name' ]['default' ]
132
+ sdk_folder = project_yaml ['options' ]['@azure-tools/cadl-java' ]['emitter-output-dir' ]
133
+ sdk_folder = sdk_folder .replace (
134
+ r'{java-sdk-folder}/sdk/{service-directory-name}/' ,
135
+ 'sdk/{0}/' .format (service ))
120
136
return sdk_folder
121
137
122
138
0 commit comments