From a27fb422303b2e2baea3725a0d8f8882f2226740 Mon Sep 17 00:00:00 2001 From: Maxim Merzhanov Date: Sat, 22 Oct 2022 18:56:42 +0300 Subject: [PATCH] tools: add generate_release_info tool --- tools/generate_release_info.go | 75 +++++++++++++++++++++++++++ tools/release-description-template.md | 31 +++++++++++ 2 files changed, 106 insertions(+) create mode 100644 tools/generate_release_info.go create mode 100644 tools/release-description-template.md diff --git a/tools/generate_release_info.go b/tools/generate_release_info.go new file mode 100644 index 0000000..9e1fbe5 --- /dev/null +++ b/tools/generate_release_info.go @@ -0,0 +1,75 @@ +package main + +import ( + _ "embed" + "flag" + "html/template" + "os" + "sort" + "strings" +) + +//go:embed release-description-template.md +var releaseDescriptionTemplate string + +func main() { + var buildPath string + flag.StringVar(&buildPath, "build_path", "build", "directory with build files") + + files, err := os.ReadDir(buildPath) + if err != nil { + panic(err) + } + var awlAndroid string + var awlLinux []string + var awlWindows []string + var awlTrayLinux []string + var awlTrayWindows []string + + for _, file := range files { + if file.IsDir() { + continue + } + filename := file.Name() + + switch { + case strings.HasPrefix(filename, "awl-android"): + awlAndroid = filename + case strings.HasPrefix(filename, "awl-linux"): + awlLinux = append(awlLinux, filename) + case strings.HasPrefix(filename, "awl-windows"): + awlWindows = append(awlWindows, filename) + case strings.HasPrefix(filename, "awl-tray-linux"): + awlTrayLinux = append(awlTrayLinux, filename) + case strings.HasPrefix(filename, "awl-tray-windows"): + awlTrayWindows = append(awlTrayWindows, filename) + } + } + + sort.Strings(awlLinux) + sort.Strings(awlWindows) + sort.Strings(awlTrayLinux) + sort.Strings(awlTrayWindows) + + releaseTag := strings.TrimPrefix(awlAndroid, "awl-android-") + releaseTag = strings.TrimSuffix(releaseTag, ".apk") + + temp, err := template.New("release-description").Parse(releaseDescriptionTemplate) + if err != nil { + panic(err) + } + + data := map[string]interface{}{ + "ReleaseTag": releaseTag, + "AwlAndroid": awlAndroid, + "AwlLinux": awlLinux, + "AwlWindows": awlWindows, + "AwlTrayLinux": awlTrayLinux, + "AwlTrayWindows": awlTrayWindows, + } + + err = temp.Execute(os.Stdout, data) + if err != nil { + panic(err) + } +} diff --git a/tools/release-description-template.md b/tools/release-description-template.md new file mode 100644 index 0000000..f165677 --- /dev/null +++ b/tools/release-description-template.md @@ -0,0 +1,31 @@ +# Installation + +For instructions on how to install anywherelan [see readme](https://github.com/anywherelan/awl#installation). + +## Android + +[{{$.AwlAndroid}}](https://github.com/anywherelan/awl/releases/download/{{$.ReleaseTag}}/{{$.AwlAndroid}}) + +## Desktop version (awl-tray) + +### Linux binary builds + +{{range .AwlTrayLinux}} +[{{.}}](https://github.com/anywherelan/awl/releases/download/{{$.ReleaseTag}}/{{.}}) {{end}} + +### Windows binary builds + +{{range .AwlTrayWindows}} +[{{.}}](https://github.com/anywherelan/awl/releases/download/{{$.ReleaseTag}}/{{.}}) {{end}} + +## Server version (awl) + +### Linux binary builds + +{{range .AwlLinux}} +[{{.}}](https://github.com/anywherelan/awl/releases/download/{{$.ReleaseTag}}/{{.}}) {{end}} + +### Windows binary builds + +{{range .AwlWindows}} +[{{.}}](https://github.com/anywherelan/awl/releases/download/{{$.ReleaseTag}}/{{.}}) {{end}}