5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-03 15:00:21 +08:00
wails/v3/tasks/release/release.go
2025-01-13 21:30:16 +11:00

124 lines
3.7 KiB
Go

package main
import (
"os"
"strconv"
"strings"
"time"
"github.com/wailsapp/wails/v3/internal/s"
)
const versionFile = "../../internal/version/version.txt"
func checkError(err error) {
if err != nil {
println(err.Error())
os.Exit(1)
}
}
// TODO:This can be replaced with "https://github.com/coreos/go-semver/blob/main/semver/semver.go"
func updateVersion() string {
currentVersionData, err := os.ReadFile(versionFile)
checkError(err)
currentVersion := string(currentVersionData)
vsplit := strings.Split(currentVersion, ".")
minorVersion, err := strconv.Atoi(vsplit[len(vsplit)-1])
checkError(err)
minorVersion++
vsplit[len(vsplit)-1] = strconv.Itoa(minorVersion)
newVersion := strings.Join(vsplit, ".")
err = os.WriteFile(versionFile, []byte(newVersion), 0o755)
checkError(err)
return newVersion
}
//func runCommand(name string, arg ...string) {
// cmd := exec.Command(name, arg...)
// cmd.Stdout = os.Stdout
// cmd.Stderr = os.Stderr
// err := cmd.Run()
// checkError(err)
//}
//func IsPointRelease(currentVersion string, newVersion string) bool {
// // The first n-1 parts of the version should be the same
// if currentVersion[:len(currentVersion)-2] != newVersion[:len(newVersion)-2] {
// return false
// }
// // split on the last dot in the string
// currentVersionSplit := strings.Split(currentVersion, ".")
// newVersionSplit := strings.Split(newVersion, ".")
// // if the last part of the version is the same, it's a point release
// currentMinor := lo.Must(strconv.Atoi(currentVersionSplit[len(currentVersionSplit)-1]))
// newMinor := lo.Must(strconv.Atoi(newVersionSplit[len(newVersionSplit)-1]))
// return newMinor == currentMinor+1
//}
func main() {
var newVersion string
if len(os.Args) > 1 {
newVersion = os.Args[1]
//currentVersion, err := os.ReadFile(versionFile)
//checkError(err)
err := os.WriteFile(versionFile, []byte(newVersion), 0o755)
checkError(err)
//isPointRelease = IsPointRelease(string(currentVersion), newVersion)
} else {
newVersion = updateVersion()
}
// Update ChangeLog
s.CD("../../..")
// Read in `src/pages/changelog.md`
changelogData, err := os.ReadFile("docs/src/content/docs/changelog.mdx")
checkError(err)
changelog := string(changelogData)
// Split on the line that has `## [Unreleased]`
changelogSplit := strings.Split(changelog, "## [Unreleased]")
// Get today's date in YYYY-MM-DD format
today := time.Now().Format("2006-01-02")
// Add the new version to the top of the changelog
newChangelog := changelogSplit[0] + "## [Unreleased]\n\n## " + newVersion + " - " + today + changelogSplit[1]
// Write the changelog back
err = os.WriteFile("docs/src/content/docs/changelog.mdx", []byte(newChangelog), 0o755)
checkError(err)
// TODO: Documentation Versioning and Translations
//if !isPointRelease {
// runCommand("npx", "-y", "pnpm", "install")
//
// s.ECHO("Generating new Docs for version: " + newVersion)
//
// runCommand("npx", "pnpm", "run", "docusaurus", "docs:version", newVersion)
//
// runCommand("npx", "pnpm", "run", "write-translations")
//
// // Load the version list/*
// versionsData, err := os.ReadFile("versions.json")
// checkError(err)
// var versions []string
// err = json.Unmarshal(versionsData, &versions)
// checkError(err)
// oldestVersion := versions[len(versions)-1]
// s.ECHO(oldestVersion)
// versions = versions[0 : len(versions)-1]
// newVersions, err := json.Marshal(&versions)
// checkError(err)
// err = os.WriteFile("versions.json", newVersions, 0o755)
// checkError(err)
//
// s.ECHO("Removing old version: " + oldestVersion)
// s.CD("versioned_docs")
// s.RMDIR("version-" + oldestVersion)
// s.CD("../versioned_sidebars")
// s.RM("version-" + oldestVersion + "-sidebars.json")
// s.CD("..")
//
// runCommand("npx", "pnpm", "run", "build")
//}
}