@@ -5,63 +5,77 @@ param (
55 [string ]$BuildID ,
66 [Parameter (mandatory = $false )]
77 [string ]$PackageNames = " " ,
8- [Parameter (mandatory = $true )]
8+ [Parameter (mandatory = $false )]
99 [string ]$ServiceDirectory ,
1010 [Parameter (mandatory = $false )]
1111 [string ]$TagSeparator = " _" ,
1212 [Parameter (mandatory = $false )]
13- [string ] $ArtifactsJson = " "
13+ [object []] $Artifacts = @ ()
1414)
1515
1616. (Join-Path $PSScriptRoot common.ps1)
1717
18+ # Ensure Artifacts is always an array
19+ $Artifacts = @ ($Artifacts )
20+
1821Write-Host " PackageNames: $PackageNames "
1922Write-Host " ServiceDirectory: $ServiceDirectory "
2023Write-Host " BuildID: $BuildID "
21- Write-Host " ArtifactsJson: $ArtifactsJson "
22-
23- $packageNamesArray = @ ()
24- $artifacts = $null
25-
26- # If ArtifactsJson is provided, extract package names from it
27- if (! [String ]::IsNullOrWhiteSpace($ArtifactsJson )) {
28- Write-Host " Using ArtifactsJson to determine package names"
29- try {
30- $artifacts = $ArtifactsJson | ConvertFrom-Json
31- $packageNamesArray = $artifacts | ForEach-Object { $_.name }
32- Write-Host " Extracted package names from ArtifactsJson: $ ( $packageNamesArray -join ' , ' ) "
33- }
34- catch {
35- LogError " Failed to parse ArtifactsJson: $ ( $_.Exception.Message ) "
36- exit 1
37- }
38- }
39- elseif (! [String ]::IsNullOrWhiteSpace($PackageNames )) {
40- $packageNamesArray = $PackageNames.Split (' ,' )
41- }
42- else {
43- LogError " Either PackageNames or ArtifactsJson must be provided."
44- exit 1
45- }
24+ Write-Host " Artifacts count: $ ( $Artifacts.Count ) "
4625
47- if ($artifacts ) {
48- # When using ArtifactsJson , process each artifact with its name and groupId (if applicable)
26+ if ($Artifacts -and $Artifacts .Count -gt 0 ) {
27+ # When using Artifacts , process each artifact with its name and groupId (if applicable)
4928 try {
50- foreach ($artifact in $artifacts ) {
29+ foreach ($artifact in $Artifacts ) {
30+ # Validate required properties
31+ if (-not (Get-Member - InputObject $artifact - Name ' name' - MemberType Properties)) {
32+ LogError " Artifact is missing required 'name' property."
33+ exit 1
34+ }
35+
5136 $packageName = $artifact.name
37+ if ([String ]::IsNullOrWhiteSpace($packageName )) {
38+ LogError " Artifact 'name' property is null or empty."
39+ exit 1
40+ }
41+
42+ # Check for ServiceDirectory property
43+ $artifactServiceDirectory = $ServiceDirectory
44+ if (Get-Member - InputObject $artifact - Name ' ServiceDirectory' - MemberType Properties) {
45+ if (! [String ]::IsNullOrWhiteSpace($artifact.ServiceDirectory )) {
46+ $artifactServiceDirectory = $artifact.ServiceDirectory
47+ }
48+ }
49+
50+ # Validate ServiceDirectory is available
51+ if ([String ]::IsNullOrWhiteSpace($artifactServiceDirectory )) {
52+ LogError " ServiceDirectory is required but not provided for artifact '$packageName '. Provide it via script parameter or artifact property."
53+ exit 1
54+ }
55+
5256 $newVersion = [AzureEngSemanticVersion ]::new(" 1.0.0" )
5357 $prefix = " $packageName$TagSeparator "
5458
5559 if ($Language -eq " java" ) {
60+ # Check for groupId property
61+ if (-not (Get-Member - InputObject $artifact - Name ' groupId' - MemberType Properties)) {
62+ LogError " Artifact '$packageName ' is missing required 'groupId' property for Java language."
63+ exit 1
64+ }
65+
5666 $groupId = $artifact.groupId
57- Write-Host " Processing $packageName with groupId $groupId "
5867 if ([String ]::IsNullOrWhiteSpace($groupId )) {
5968 LogError " GroupId is missing for package $packageName ."
6069 exit 1
6170 }
71+
72+ Write-Host " Processing $packageName with groupId $groupId "
6273 # Use groupId+artifactName format for tag prefix (e.g., "com.azure.v2+azure-sdk-template_")
6374 $prefix = " $groupId +$packageName$TagSeparator "
6475 }
76+ else {
77+ Write-Host " Processing $packageName "
78+ }
6579
6680 Write-Host " Get Latest Tag : git tag -l $prefix *"
6781 $latestTags = git tag - l " $prefix *"
@@ -87,21 +101,23 @@ if ($artifacts) {
87101 if ($Language -ne " java" ) {
88102 SetPackageVersion - PackageName $packageName `
89103 - Version $newVersion.ToString () `
90- - ServiceDirectory $ServiceDirectory
104+ - ServiceDirectory $artifactServiceDirectory
91105 } else {
92106 SetPackageVersion - PackageName $packageName `
93107 - Version $newVersion.ToString () `
94- - ServiceDirectory $ServiceDirectory `
108+ - ServiceDirectory $artifactServiceDirectory `
95109 - GroupId $groupId
96110 }
97111 }
98112 }
99113 catch {
100- LogError " Failed to process ArtifactsJson: $ArtifactsJson , exception: $ ( $_.Exception.Message ) "
114+ LogError " Failed to process Artifacts: exception: $ ( $_.Exception.Message ) "
101115 exit 1
102116 }
103- } else {
117+ } elseif ( ! [ String ]::IsNullOrWhiteSpace( $PackageNames )) {
104118 # Fallback to original logic when using PackageNames string
119+ $packageNamesArray = @ ()
120+ $packageNamesArray = $PackageNames.Split (' ,' )
105121 foreach ($packageName in $packageNamesArray ) {
106122 Write-Host " Processing $packageName "
107123 $newVersion = [AzureEngSemanticVersion ]::new(" 1.0.0" )
@@ -131,4 +147,7 @@ if ($artifacts) {
131147 - Version $newVersion.ToString () `
132148 - ServiceDirectory $ServiceDirectory
133149 }
150+ } else {
151+ LogError " Either PackageNames or Artifacts must be provided."
152+ exit 1
134153}
0 commit comments