Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 0 additions & 127 deletions eng/automation/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import glob
import logging
import argparse
import shutil
from typing import List

pwd = os.getcwd()
Expand All @@ -33,7 +32,6 @@
update_spec,
generate_typespec_project,
is_mgmt_premium,
copy_folder_recursive_sync,
)

os.chdir(pwd)
Expand Down Expand Up @@ -337,9 +335,6 @@ def sdk_automation_typespec_project(tsp_project: str, config: dict) -> dict:
# compile
succeeded = compile_arm_package(sdk_root, module)
if succeeded:
if is_mgmt_premium(module):
move_premium_samples(sdk_root, service, module)
update_azure_resourcemanager_pom(sdk_root, module, current_version)
# For output breaking changes, useful in sdk validation pipeline
logging.info("[Changelog] Start breaking change detection for SDK automation.")
breaking, changelog, breaking_change_items = compare_with_maven_package(
Expand Down Expand Up @@ -427,122 +422,6 @@ def update_changelog_version(sdk_root: str, output_folder: str, current_version:
os.chdir(pwd)


def move_premium_samples(sdk_root: str, service: str, module: str):
package_path = "com/" + module.replace("-", "/")
source_sample_dir = os.path.join(
sdk_root, "sdk", service, module, "src", "samples", "java", package_path, "generated"
)
target_sample_dir = os.path.join(
sdk_root, "sdk", "resourcemanager", "azure-resourcemanager", "src", "samples", "java", package_path
)
logging.info(f"Moving samples from {source_sample_dir} to {target_sample_dir}.")
copy_folder_recursive_sync(source_sample_dir, target_sample_dir)
shutil.rmtree(source_sample_dir, ignore_errors=True)


def update_azure_resourcemanager_pom(sdk_root: str, module: str, current_version: str):
"""
Updates azure-resourcemanager pom for premium package split:
1. Add unreleased entry in eng/versioning/version_client.txt
2. Update dependency in azure-resourcemanager/pom.xml to use unreleased dependency
"""
# 1. Add unreleased entry to version_client.txt
version_file = os.path.join(sdk_root, "eng/versioning/version_client.txt")
group_id = "com.azure.resourcemanager"
project = "{0}:{1}".format(group_id, module)

# Check if unreleased entry already exists
unreleased_project = "unreleased_{0}".format(project)
unreleased_exists = False
with open(version_file, "r", encoding="utf-8") as fin:
content = fin.read()
if unreleased_project in content:
unreleased_exists = True
logging.info("[UNRELEASED][Skip] Unreleased entry already exists for %s", module)

if not unreleased_exists:
# Find the unreleased section and add the entry
with open(version_file, "r", encoding="utf-8") as fin:
lines = fin.read().splitlines()

# Find the unreleased section start
unreleased_section_start = -1
for i, line in enumerate(lines):
if "# Unreleased dependencies:" in line:
unreleased_section_start = i
break

if unreleased_section_start == -1:
logging.error("[UNRELEASED][Skip] Cannot find unreleased section in version_client.txt")
return

# Determine insertion point: append to the end of the unreleased section
# by locating the first blank line after the last 'unreleased_' entry.
last_unreleased_idx = -1
end_of_section_idx = -1
seen_unreleased = False
for i in range(unreleased_section_start + 1, len(lines)):
line = lines[i]
if line.startswith("unreleased_"):
seen_unreleased = True
last_unreleased_idx = i
continue
if seen_unreleased:
# First blank line after we started seeing unreleased entries marks end of section
if line.strip() == "":
end_of_section_idx = i # insert before this blank line
break
# Or a new header line also marks the end
if line.startswith("# "):
end_of_section_idx = i
break

if last_unreleased_idx != -1:
insert_index = end_of_section_idx if end_of_section_idx != -1 else last_unreleased_idx + 1
else:
# No existing unreleased entries, insert after header comments and optional blank line
insert_index = unreleased_section_start + 1
while insert_index < len(lines) and lines[insert_index].startswith("#"):
insert_index += 1
if insert_index < len(lines) and lines[insert_index].strip() == "":
insert_index += 1

# Insert the unreleased entry
unreleased_entry = "unreleased_{0};{1}".format(project, current_version)
lines.insert(insert_index, unreleased_entry)

with open(version_file, "w", encoding="utf-8") as fout:
fout.write("\n".join(lines))
fout.write("\n")

logging.info("[UNRELEASED][Success] Added unreleased entry: %s", unreleased_entry)

# 2. Update azure-resourcemanager pom.xml
pom_file = os.path.join(sdk_root, "sdk/resourcemanager/azure-resourcemanager/pom.xml")
if not os.path.exists(pom_file):
logging.error("[POM][Skip] Cannot find azure-resourcemanager pom.xml")
return

with open(pom_file, "r", encoding="utf-8") as fin:
pom_content = fin.read()

# Pattern to find the dependency and its version comment
dependency_pattern = r"(<groupId>{0}</groupId>\s*<artifactId>{1}</artifactId>\s*<version>)[^<]+(</version>\s*<!-- {{x-version-update;){2}(;dependency}} -->)".format(
re.escape(group_id), re.escape(module), re.escape(project)
)

# Replace current with unreleased dependency
replacement = r"\g<1>" + current_version + r"\g<2>unreleased_" + project + r"\g<3>"
updated_pom_content = re.sub(dependency_pattern, replacement, pom_content, flags=re.DOTALL)

if updated_pom_content != pom_content:
with open(pom_file, "w", encoding="utf-8") as fout:
fout.write(updated_pom_content)
logging.info("[POM][Success] Updated azure-resourcemanager pom.xml to use unreleased dependency of %s", module)
else:
logging.warning("[POM][Skip] Could not find dependency for %s in azure-resourcemanager pom.xml", module)


def main():
(parser, args) = parse_args()
args = vars(args)
Expand All @@ -553,7 +432,6 @@ def main():
base_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
sdk_root = os.path.abspath(os.path.join(base_dir, SDK_ROOT))
api_specs_file = os.path.join(base_dir, API_SPECS_FILE)
premium = False

if args.get("tsp_config"):
tsp_config = args["tsp_config"]
Expand All @@ -562,8 +440,6 @@ def main():
tsp_project=tsp_config, sdk_root=sdk_root, remove_before_regen=True, group_id=GROUP_ID, **args
)

premium = is_mgmt_premium(module)

stable_version, current_version = set_or_increase_version(sdk_root, GROUP_ID, module, **args)
args["version"] = current_version

Expand Down Expand Up @@ -612,9 +488,6 @@ def main():
if succeeded:
succeeded = compile_arm_package(sdk_root, module)
if succeeded:
if premium:
move_premium_samples(sdk_root, service, module)
update_azure_resourcemanager_pom(sdk_root, module, current_version)
latest_release_version = get_latest_release_version(stable_version, current_version)
compare_with_maven_package(sdk_root, GROUP_ID, service, latest_release_version, current_version, module)

Expand Down
Loading
Loading