Skip to content

Commit fcab372

Browse files
1 parent 8967a31 commit fcab372

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

eng/mgmt/automation/generate_data.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ def sdk_automation_cadl(config: dict) -> List[dict]:
4141

4242
sdk_folder = get_cadl_sdk_folder(os.path.join(cadl_dir, 'cadl-project.yaml'))
4343
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')
4546
else:
4647
sdk_folder_abspath = os.path.join(sdk_root, sdk_folder)
4748
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]:
5455
module = match.group(2)
5556

5657
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>')
5960
else:
6061
# cadl
6162
succeeded = False
6263
pwd = os.getcwd()
6364
os.chdir(cadl_dir)
6465
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
6570
subprocess.run('npm install', shell=True, check=True)
6671

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+
6777
# 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)
7182

7283
succeeded = True
7384
except subprocess.CalledProcessError:
@@ -111,12 +122,17 @@ def sdk_automation_cadl(config: dict) -> List[dict]:
111122

112123

113124
def get_cadl_sdk_folder(project_filename: str) -> Optional[str]:
114-
sdk_folder = None
125+
sdk_folder: Optional[str] = None
115126
if os.path.exists(project_filename):
116127
with open(project_filename, 'r', encoding='utf-8') as f_in:
117128
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))
120136
return sdk_folder
121137

122138

0 commit comments

Comments
 (0)