Skip to content

Commit bcb396b

Browse files
authored
automation support data plan (Azure#23879)
* tmp update * tmp update * tmp update * tmp update * update func * update func define * update func * update path * update referenced by comments * update referenced by comments * update referenced by comments * update referenced by comments * remove file * remove data plane logic filter * rename moduleRelativePath, relativePath all to packageModuleRelativePath
1 parent 8c76043 commit bcb396b

File tree

7 files changed

+34
-39
lines changed

7 files changed

+34
-39
lines changed

eng/tools/generator/cmd/v2/automation/automationCmd.go

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,6 @@ func (ctx *automationContext) generate(input *pipeline.GenerateInput) (*pipeline
108108
// typespec
109109
// Generated by tsp only when tspconfig.yaml exists and has typespec-go option
110110
for _, tspProjectFolder := range input.RelatedTypeSpecProjectFolder {
111-
if !strings.Contains(tspProjectFolder, ".Management") {
112-
log.Printf("Skip processing: %s, as it is not a management plane project", tspProjectFolder)
113-
continue
114-
}
115-
116111
tspconfigPath := filepath.Join(input.SpecFolder, tspProjectFolder, "tspconfig.yaml")
117112
tsc, err := typespec.ParseTypeSpecConfig(tspconfigPath)
118113
if err != nil {
@@ -136,14 +131,14 @@ func (ctx *automationContext) generate(input *pipeline.GenerateInput) (*pipeline
136131
errorBuilder.add(err)
137132
continue
138133
}
139-
134+
packageModuleRelativePath := tsc.GetPackageModuleRelativePath()
140135
namespaceResult, err := generateCtx.GenerateForTypeSpec(&common.GenerateParam{
141136
RPName: module[0],
142137
NamespaceName: module[1],
143138
SkipGenerateExample: true,
144139
GoVersion: ctx.goVersion,
145140
TspClientOptions: []string{"--debug"},
146-
})
141+
}, packageModuleRelativePath)
147142
if err != nil {
148143
errorBuilder.add(err)
149144
continue
@@ -152,25 +147,25 @@ func (ctx *automationContext) generate(input *pipeline.GenerateInput) (*pipeline
152147
breaking := namespaceResult.Changelog.HasBreakingChanges()
153148
breakingChangeItems := namespaceResult.Changelog.GetBreakingChangeItems()
154149

155-
srcFolder := filepath.Join(sdkRepo.Root(), "sdk", "resourcemanager", namespaceResult.RPName, namespaceResult.PackageName)
156-
apiViewArtifact := filepath.Join(sdkRepo.Root(), "sdk", "resourcemanager", namespaceResult.RPName, namespaceResult.PackageName+".gosource")
150+
srcFolder := filepath.Join(sdkRepo.Root(), packageModuleRelativePath)
151+
apiViewArtifact := filepath.Join(sdkRepo.Root(), packageModuleRelativePath+".gosource")
157152
err := zipDirectory(srcFolder, apiViewArtifact)
158153
if err != nil {
159154
fmt.Println(err)
160155
}
161156

162157
results = append(results, pipeline.PackageResult{
163158
Version: namespaceResult.Version,
164-
PackageName: fmt.Sprintf("sdk/resourcemanager/%s/%s", namespaceResult.RPName, namespaceResult.PackageName),
165-
Path: []string{fmt.Sprintf("sdk/resourcemanager/%s/%s", namespaceResult.RPName, namespaceResult.PackageName)},
166-
PackageFolder: fmt.Sprintf("sdk/resourcemanager/%s/%s", namespaceResult.RPName, namespaceResult.PackageName),
159+
PackageName: packageModuleRelativePath,
160+
Path: []string{packageModuleRelativePath},
161+
PackageFolder: packageModuleRelativePath,
167162
TypespecProject: []string{tspProjectFolder},
168163
Changelog: &pipeline.Changelog{
169164
Content: &content,
170165
HasBreakingChange: &breaking,
171166
BreakingChangeItems: &breakingChangeItems,
172167
},
173-
APIViewArtifact: fmt.Sprintf("sdk/resourcemanager/%s/%s", namespaceResult.RPName, namespaceResult.PackageName+".gosource"),
168+
APIViewArtifact: packageModuleRelativePath + ".gosource",
174169
Language: "Go",
175170
})
176171

@@ -187,10 +182,6 @@ func (ctx *automationContext) generate(input *pipeline.GenerateInput) (*pipeline
187182
}
188183

189184
for _, readme := range input.RelatedReadmeMdFiles {
190-
if !strings.Contains(readme, "resource-manager") {
191-
log.Printf("Skip processing: %s, as it is not a management plane project", readme)
192-
continue
193-
}
194185

195186
log.Printf("Start to process autorest project: %s", readme)
196187

eng/tools/generator/cmd/v2/common/changelogProcessor.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ const (
3030
sdk_remote_url = "https://github.com/Azure/azure-sdk-for-go.git"
3131
)
3232

33-
func GetAllVersionTags(rpName, namespaceName string) ([]string, error) {
34-
log.Printf("Fetching all release tags from GitHub for RP: '%s' Package: '%s' ...", rpName, namespaceName)
33+
func GetAllVersionTags(packageModuleRelativePath string) ([]string, error) {
34+
arr := strings.Split(packageModuleRelativePath, "/")
35+
log.Printf("Fetching all release tags from GitHub for RP: '%s' Package: '%s' ...", arr[len(arr)-2], arr[len(arr)-1])
3536
client := http.Client{}
3637
res, err := client.Get(sdk_tag_fetch_url)
3738
if err != nil {
@@ -51,7 +52,7 @@ func GetAllVersionTags(rpName, namespaceName string) ([]string, error) {
5152
versionTag := make(map[string]string)
5253
for _, tag := range result {
5354
tagName := tag["ref"].(string)
54-
if strings.Contains(tagName, "sdk/resourcemanager/"+rpName+"/"+namespaceName+"/v") {
55+
if strings.Contains(tagName, packageModuleRelativePath+"/v") {
5556
m := regexp.MustCompile(semver.SemVerRegex).FindString(tagName)
5657
versions = append(versions, m)
5758
versionTag[m] = tagName

eng/tools/generator/cmd/v2/common/constants.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@
44
package common
55

66
const (
7-
ChangelogFileName = "CHANGELOG.md"
8-
MgmtSDKModulePrefix = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager"
7+
ChangelogFileName = "CHANGELOG.md"
98
)

eng/tools/generator/cmd/v2/common/fileProcessor.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ func ReplaceNewClientNamePlaceholder(packageRootPath string, exports exports.Con
416416
return os.WriteFile(path, []byte(content), 0644)
417417
}
418418

419-
func UpdateModuleDefinition(packageRootPath, rpName, namespaceName string, version *semver.Version) error {
419+
func UpdateModuleDefinition(packageRootPath, packageModuleRelativePath string, version *semver.Version) error {
420420
if version.Major() > 1 {
421421
path := filepath.Join(packageRootPath, "go.mod")
422422

@@ -431,7 +431,7 @@ func UpdateModuleDefinition(packageRootPath, rpName, namespaceName string, versi
431431
line = strings.TrimRight(line, "\r")
432432
parts := strings.Split(line, "/")
433433
if parts[len(parts)-1] != fmt.Sprintf("v%d", version.Major()) {
434-
lines[i] = fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/%s/%s/v%d", rpName, namespaceName, version.Major())
434+
lines[i] = fmt.Sprintf("module github.com/Azure/azure-sdk-for-go/%s/v%d", packageModuleRelativePath, version.Major())
435435
}
436436
break
437437
}
@@ -621,13 +621,13 @@ func existSuffixFile(path, suffix string) bool {
621621
return existed
622622
}
623623

624-
func replaceReadmeModule(path, rpName, namespaceName, currentVersion string) error {
624+
func replaceReadmeModule(path, packageModuleRelativePath, currentVersion string) error {
625625
readmeFile, err := os.ReadFile(filepath.Join(path, "README.md"))
626626
if err != nil {
627627
return err
628628
}
629629

630-
module := fmt.Sprintf("github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/%s/%s", rpName, namespaceName)
630+
module := fmt.Sprintf("github.com/Azure/azure-sdk-for-go/%s", packageModuleRelativePath)
631631

632632
readmeModule := module
633633
match := regexp.MustCompile(fmt.Sprintf(`%s/v\d+`, module))

eng/tools/generator/cmd/v2/common/generation.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
213213
if !onBoard {
214214
log.Printf("Get ori exports for changelog generation...")
215215

216-
tags, err := GetAllVersionTags(generateParam.RPName, generateParam.NamespaceName)
216+
tags, err := GetAllVersionTags(fmt.Sprintf("sdk/resourcemanager/%s/%s", generateParam.RPName, generateParam.NamespaceName))
217217
if err != nil {
218218
return nil, err
219219
}
@@ -308,7 +308,7 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
308308
}
309309

310310
log.Printf("Update module definition if v2+...")
311-
err = UpdateModuleDefinition(packagePath, generateParam.RPName, generateParam.NamespaceName, version)
311+
err = UpdateModuleDefinition(packagePath, fmt.Sprintf("sdk/resourcemanager/%s/%s", generateParam.RPName, generateParam.NamespaceName), version)
312312
if err != nil {
313313
return nil, err
314314
}
@@ -341,7 +341,7 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
341341
}
342342

343343
log.Printf("Replace README.md module...")
344-
if err = replaceReadmeModule(packagePath, generateParam.RPName, generateParam.NamespaceName, version.String()); err != nil {
344+
if err = replaceReadmeModule(packagePath, fmt.Sprintf("sdk/resourcemanager/%s/%s", generateParam.RPName, generateParam.NamespaceName), version.String()); err != nil {
345345
return nil, err
346346
}
347347

@@ -374,8 +374,8 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
374374
}
375375
}
376376

377-
func (ctx *GenerateContext) GenerateForTypeSpec(generateParam *GenerateParam) (*GenerateResult, error) {
378-
packagePath := filepath.Join(ctx.SDKPath, "sdk", "resourcemanager", generateParam.RPName, generateParam.NamespaceName)
377+
func (ctx *GenerateContext) GenerateForTypeSpec(generateParam *GenerateParam, packageModuleRelativePath string) (*GenerateResult, error) {
378+
packagePath := filepath.Join(ctx.SDKPath, packageModuleRelativePath)
379379
changelogPath := filepath.Join(packagePath, ChangelogFileName)
380380

381381
version, err := semver.NewVersion("0.1.0")
@@ -448,13 +448,13 @@ func (ctx *GenerateContext) GenerateForTypeSpec(generateParam *GenerateParam) (*
448448
if !onBoard {
449449
log.Printf("Get ori exports for changelog generation...")
450450

451-
tags, err := GetAllVersionTags(generateParam.RPName, generateParam.NamespaceName)
451+
tags, err := GetAllVersionTags(packageModuleRelativePath)
452452
if err != nil {
453453
return nil, err
454454
}
455455

456456
if len(tags) == 0 {
457-
return nil, fmt.Errorf("github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/%s/%s hasn't been released, it's supposed to OnBoard", generateParam.RPName, generateParam.NamespaceName)
457+
return nil, fmt.Errorf("github.com/Azure/azure-sdk-for-go/%s hasn't been released, it's supposed to OnBoard", packageModuleRelativePath)
458458
}
459459

460460
previousVersionTag := GetPreviousVersionTag(isCurrentPreview, tags)
@@ -546,7 +546,7 @@ func (ctx *GenerateContext) GenerateForTypeSpec(generateParam *GenerateParam) (*
546546
}
547547

548548
log.Printf("Update module definition if v2+...")
549-
err = UpdateModuleDefinition(packagePath, generateParam.RPName, generateParam.NamespaceName, version)
549+
err = UpdateModuleDefinition(packagePath, packageModuleRelativePath, version)
550550
if err != nil {
551551
return nil, err
552552
}
@@ -561,7 +561,7 @@ func (ctx *GenerateContext) GenerateForTypeSpec(generateParam *GenerateParam) (*
561561
return nil, err
562562
}
563563

564-
baseModule := fmt.Sprintf("%s/%s/%s", MgmtSDKModulePrefix, generateParam.RPName, generateParam.NamespaceName)
564+
baseModule := fmt.Sprintf("%s/%s", "github.com/Azure/azure-sdk-for-go", packageModuleRelativePath)
565565
if _, err := os.Stat(filepath.Join(packagePath, "fake")); !os.IsNotExist(err) && oldModuleVersion.Major() != version.Major() {
566566
log.Printf("Replace fake module v2+...")
567567
if err = ReplaceModule(version, packagePath, baseModule, ".go"); err != nil {
@@ -578,7 +578,7 @@ func (ctx *GenerateContext) GenerateForTypeSpec(generateParam *GenerateParam) (*
578578
}
579579

580580
log.Printf("Replace README.md module...")
581-
if err = replaceReadmeModule(packagePath, generateParam.RPName, generateParam.NamespaceName, version.String()); err != nil {
581+
if err = replaceReadmeModule(packagePath, packageModuleRelativePath, version.String()); err != nil {
582582
return nil, err
583583
}
584584

eng/tools/generator/cmd/v2/release/releaseCmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ func (c *commandContext) generate(sdkRepo repo.SDKRepository, specCommitHash str
194194
GoVersion: c.flags.GoVersion,
195195
TypeSpecEmitOption: c.flags.TypeSpecGoOption,
196196
TspClientOptions: c.flags.TspClientOption,
197-
})
197+
}, generateCtx.TypeSpecConfig.GetPackageModuleRelativePath())
198198
} else {
199199
log.Printf("Generate SDK through AutoRest...")
200200
result, err = generateCtx.GenerateForSingleRPNamespace(&common.GenerateParam{

eng/tools/generator/typespec/tspconfig.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ func ParseTypeSpecConfig(tspconfigPath string) (*TypeSpecConfig, error) {
117117
return &tspConfig, err
118118
}
119119

120+
func (tc *TypeSpecConfig) GetPackageModuleRelativePath() string {
121+
return tc.Options["@azure-tools/typespec-go"].(map[string]interface{})["service-dir"].(string) + "/" + tc.Options["@azure-tools/typespec-go"].(map[string]interface{})["package-dir"].(string)
122+
}
123+
120124
func (tc *TypeSpecConfig) EditOptions(emit string, option map[string]any, append bool) {
121125
if tc.Options == nil {
122126
tc.Options = make(map[string]any)
@@ -177,8 +181,8 @@ func (tc TypeSpecConfig) GetModuleName() ([2]string, error) {
177181
if l != 7 {
178182
return [2]string{}, fmt.Errorf("module is invalid and must be in the format of `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/{rpName}/{packageName}`")
179183
}
180-
if !strings.Contains(s[l-1], "arm") {
181-
return [2]string{}, fmt.Errorf("packageName is invalid and must start with `arm`")
184+
if !strings.Contains(s[l-1], "arm") && !strings.Contains(s[l-1], "az") {
185+
return [2]string{}, fmt.Errorf("packageName is invalid and must start with `arm` or `az`")
182186
}
183187

184188
return [2]string{s[l-2], s[l-1]}, nil

0 commit comments

Comments
 (0)