| // Copyright 2024 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package main | |
| import ( | |
| "fmt" | |
| "os" | |
| "path/filepath" | |
| "runtime" | |
| "golang.org/x/build/relnote" | |
| "rsc.io/markdown" | |
| ) | |
| const prefixFormat = `--- | |
| title: Go 1.%[1]s Release Notes | |
| template: false | |
| --- | |
| ` | |
| // generate takes the root of the Go repo. | |
| // It generates release notes by combining the fragments in the doc/next directory | |
| // of the repo. | |
| func generate(version, goRoot string) error { | |
| if goRoot == "" { | |
| goRoot = runtime.GOROOT() | |
| } | |
| dir := filepath.Join(goRoot, "doc", "next") | |
| doc, err := relnote.Merge(os.DirFS(dir)) | |
| if err != nil { | |
| return fmt.Errorf("merging %s: %v", dir, err) | |
| } | |
| out := markdown.ToMarkdown(doc) | |
| out = fmt.Sprintf(prefixFormat, version) + out | |
| outFile := fmt.Sprintf("go1.%s.md", version) | |
| if err := os.WriteFile(outFile, []byte(out), 0644); err != nil { | |
| return err | |
| } | |
| fmt.Printf("wrote %s\n", outFile) | |
| return nil | |
| } |