in eng/sdk/sync_sdk.py [0:0]
def update_sdks():
failed_modules = []
for tsp_location_file in glob.glob(os.path.join(sdk_root, "sdk/*/*/tsp-location.yaml")):
module_path = os.path.dirname(tsp_location_file)
artifact = os.path.basename(module_path)
arm_module = "-resourcemanager-" in artifact
if artifact in skip_artifacts:
continue
generated_samples_path = os.path.join(
module_path, get_generated_folder_from_artifact(module_path, artifact, "samples")
)
generated_test_path = os.path.join(
module_path, get_generated_folder_from_artifact(module_path, artifact, "test")
)
generated_samples_exists = os.path.isdir(generated_samples_path)
generated_test_exists = os.path.isdir(generated_test_path)
if arm_module:
logging.info("Delete source code of resourcemanager module %s", artifact)
shutil.rmtree(os.path.join(module_path, "src", "main"))
logging.info(f"Generate for module {artifact}")
try:
subprocess.check_call(["tsp-client", "update"], cwd=module_path)
except subprocess.CalledProcessError:
# one retry
# sometimes customization have intermittent failure
logging.warning(f"Retry generate for module {artifact}")
try:
subprocess.check_call(["tsp-client", "update", "--debug"], cwd=module_path)
except subprocess.CalledProcessError:
logging.error(f"Failed to generate for module {artifact}")
failed_modules.append(artifact)
if not arm_module:
# run mvn package, as this is what's done in "TypeSpec-Compare-CurrentToCodegeneration.ps1" script
subprocess.check_call(["mvn", "--no-transfer-progress", "codesnippet:update-codesnippet"], cwd=module_path)
if arm_module:
# revert mock test code
cmd = ["git", "checkout", "src/test"]
subprocess.check_call(cmd, cwd=module_path)
if not generated_samples_exists:
shutil.rmtree(generated_samples_path, ignore_errors=True)
if not generated_test_exists:
shutil.rmtree(generated_test_path, ignore_errors=True)
# revert change on pom.xml, readme.md, changelog.md, etc.
cmd = ["git", "checkout", "**/pom.xml"]
subprocess.check_call(cmd, cwd=sdk_root)
cmd = ["git", "checkout", "**/*.md"]
subprocess.check_call(cmd, cwd=sdk_root)
cmd = ["git", "add", "."]
subprocess.check_call(cmd, cwd=sdk_root)
if failed_modules:
logging.error(f"Failed modules {failed_modules}")