58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
const inFile = "CHANGELOG.md"
|
|
const outFile = "whats-new.md"
|
|
|
|
// Get the path to the changelog
|
|
changelogPath := filepath.Join(".", inFile)
|
|
|
|
// Read the changelog content
|
|
content, err := os.ReadFile(changelogPath)
|
|
if err != nil {
|
|
fmt.Println("Error reading changelog:", err)
|
|
return
|
|
}
|
|
|
|
// Convert the content to a string
|
|
changelog := string(content)
|
|
|
|
// Extract everything between the first and second "## " headers
|
|
sections := strings.Split(changelog, "## ")
|
|
if len(sections) < 2 {
|
|
fmt.Println("Not enough headers found in the changelog.")
|
|
return
|
|
}
|
|
|
|
// We only care about the first section
|
|
changelog = sections[1]
|
|
|
|
// Remove everything after the next header (if any)
|
|
changelog = strings.Split(changelog, "## ")[0]
|
|
|
|
// Remove the first line (which is the title of the first section)
|
|
lines := strings.Split(changelog, "\n")
|
|
if len(lines) > 1 {
|
|
changelog = strings.Join(lines[1:], "\n")
|
|
}
|
|
|
|
// Trim newlines
|
|
changelog = strings.TrimSpace(changelog)
|
|
|
|
// Write the extracted content to the output file
|
|
outPath := filepath.Join(".", outFile)
|
|
if err := os.WriteFile(outPath, []byte(changelog), 0644); err != nil {
|
|
fmt.Println("Error writing to file:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("Changelog content written to %s\n", outPath)
|
|
}
|