Skip to content

Commit

Permalink
fix: repo addr replacement in autorest.md
Browse files Browse the repository at this point in the history
  • Loading branch information
tadelesh committed Aug 16, 2021
1 parent 3a27314 commit be3d546
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 9 deletions.
2 changes: 1 addition & 1 deletion tools/generator/cmd/track2/automation/automationCmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func (ctx *automationContext) generate(input *pipeline.GenerateInput) (*pipeline
CommitHash: ctx.commitHash,
}

namespaceResults, errors := generateCtx.GenerateForAutomation(readme)
namespaceResults, errors := generateCtx.GenerateForAutomation(readme, input.RepoHTTPSURL)
if len(errors) != 0 {
errorBuilder.add(errors...)
continue
Expand Down
25 changes: 22 additions & 3 deletions tools/generator/cmd/track2/common/fileProcessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ const (
)

var (
track2BeginRegex = regexp.MustCompile("^```\\s*yaml\\s*\\$\\(go\\)\\s*&&\\s*\\$\\(track2\\)")
track2EndRegex = regexp.MustCompile("^\\s*```\\s*$")
track2BeginRegex = regexp.MustCompile("^```\\s*yaml\\s*\\$\\(go\\)\\s*&&\\s*\\$\\(track2\\)")
track2EndRegex = regexp.MustCompile("^\\s*```\\s*$")
autorestMdSwaggerURLBeginRegex = regexp.MustCompile(`https://github.com/.+/azure-rest-api-specs/`)
)

// reads from readme.go.md, parses the `track2` section to get module and package name
Expand Down Expand Up @@ -105,7 +106,7 @@ func CleanSDKGeneratedFiles(path string) error {

// replace all commit id in autorest.md files
func ReplaceCommitID(path string, commitID string) error {
log.Printf("Replacing commit id from autorest.md ...")
log.Printf("Replacing commit id in autorest.md ...")
b, err := ioutil.ReadFile(path)
if err != nil {
return err
Expand All @@ -122,6 +123,24 @@ func ReplaceCommitID(path string, commitID string) error {
return err
}

func ReplaceRepoURL(path string, repoUrl string) error {
log.Printf("Replacing repo url in autorest.md ...")
b, err := ioutil.ReadFile(path)
if err != nil {
return err
}

lines := strings.Split(string(b), "\n")
for i, line := range lines {
if pos := autorestMdSwaggerURLBeginRegex.FindStringIndex(line); pos != nil {
lines[i] = line[:pos[0]] + repoUrl + "/" + line[pos[1]:]
}
}

err = ioutil.WriteFile(path, []byte(strings.Join(lines, "\n")), 0644)
return err
}

func GetLatestVersion(packageRootPath string) (*semver.Version, error) {
b, err := ioutil.ReadFile(filepath.Join(packageRootPath, "autorest.md"))
if err != nil {
Expand Down
23 changes: 19 additions & 4 deletions tools/generator/cmd/track2/common/generation.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func (ctx GenerateContext) SpecRoot() string {
return ctx.SpecPath
}

func (ctx GenerateContext) GenerateForAutomation(readme string) ([]GenerateResult, []error) {
func (ctx GenerateContext) GenerateForAutomation(readme string, repo string) ([]GenerateResult, []error) {
absReadme := filepath.Join(ctx.SpecPath, readme)
absReadmeGo := filepath.Join(filepath.Dir(absReadme), "readme.go.md")

Expand All @@ -59,7 +59,7 @@ func (ctx GenerateContext) GenerateForAutomation(readme string) ([]GenerateResul
for rpName, namespaceNames := range rpMap {
for _, namespaceName := range namespaceNames {
log.Printf("Process rp: %s, namespace: %s", rpName, namespaceName)
singleResult, err := ctx.GenerateForSingleRpNamespace(rpName, namespaceName, "")
singleResult, err := ctx.GenerateForSingleRpNamespace(rpName, namespaceName, "", repo)
if err != nil {
errors = append(errors, err)
continue
Expand All @@ -70,7 +70,7 @@ func (ctx GenerateContext) GenerateForAutomation(readme string) ([]GenerateResul
return result, errors
}

func (ctx GenerateContext) GenerateForSingleRpNamespace(rpName, namespaceName string, specficVersion string) (*GenerateResult, error) {
func (ctx GenerateContext) GenerateForSingleRpNamespace(rpName, namespaceName string, specficVersion string, specficRepoURL string) (*GenerateResult, error) {
packagePath := filepath.Join(ctx.SdkPath, "sdk", rpName, namespaceName)
changelogPath := filepath.Join(packagePath, common.ChangelogFilename)
if _, err := os.Stat(changelogPath); os.IsNotExist(err) {
Expand All @@ -86,6 +86,14 @@ func (ctx GenerateContext) GenerateForSingleRpNamespace(rpName, namespaceName st
return nil, err
}

if specficRepoURL != "" {
log.Printf("Change the repo url in `autorest.md`...")
autorestMdPath := filepath.Join(packagePath, "autorest.md")
if err = ReplaceRepoURL(autorestMdPath, specficRepoURL); err != nil {
return nil, err
}
}

log.Printf("Run `go generate` to regenerate the code...")
if err = ExecuteGoGenerate(packagePath); err != nil {
return nil, err
Expand Down Expand Up @@ -129,6 +137,13 @@ func (ctx GenerateContext) GenerateForSingleRpNamespace(rpName, namespaceName st
return nil, err
}

if specficRepoURL != "" {
log.Printf("Change the repo url in `autorest.md`...")
if err = ReplaceRepoURL(autorestMdPath, specficRepoURL); err != nil {
return nil, err
}
}

log.Printf("Run `go generate` to regenerate the code...")
if err = ExecuteGoGenerate(packagePath); err != nil {
return nil, err
Expand All @@ -146,7 +161,7 @@ func (ctx GenerateContext) GenerateForSingleRpNamespace(rpName, namespaceName st

log.Printf("Calculate new version...")
var version *semver.Version
if len(specficVersion) == 0 {
if specficVersion == "" {
version, err = CalculateNewVersion(changelog, packagePath)
if err != nil {
return nil, err
Expand Down
3 changes: 2 additions & 1 deletion tools/generator/cmd/track2/release/releaseCmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ namespaceName: name of namespace to be released, default value is arm+rp-name

type Flags struct {
VersionNumber string
RepoURL string
}

func BindFlags(flagSet *pflag.FlagSet) {
Expand Down Expand Up @@ -117,7 +118,7 @@ func (c *commandContext) execute() error {
CommitHash: specRef.Hash().String(),
}

result, err := generateCtx.GenerateForSingleRpNamespace(c.rpName, c.namespaceName, c.flags.VersionNumber)
result, err := generateCtx.GenerateForSingleRpNamespace(c.rpName, c.namespaceName, c.flags.VersionNumber, c.flags.RepoURL)
if err != nil {
return fmt.Errorf("failed to finish release generation process: %+v", err)
}
Expand Down

0 comments on commit be3d546

Please sign in to comment.