| // 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. |
| |
| //go:build go1.21 |
| |
| package main |
| |
| import ( |
| "fmt" |
| "os" |
| "path/filepath" |
| "runtime" |
| |
| "golang.org/x/build/relnote" |
| "rsc.io/markdown" |
| ) |
| |
| const prefixFormat = ` |
| --- |
| path: /doc/go1.%s |
| template: false |
| title: Go 1.%[1]s Release Notes |
| --- |
| |
| ` |
| |
| // 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 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 |
| } |