autogenerate version

This commit is contained in:
Nazar Kanaev 2020-10-05 21:58:10 +01:00
parent 63f624251d
commit dd058e1637
6 changed files with 67 additions and 42 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@
/yarr /yarr
*.db *.db
*.syso *.syso
versioninfo.rc

View File

@ -1,26 +0,0 @@
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904E4"
BEGIN
VALUE "CompanyName", "Old MacDonald's Farm"
VALUE "FileDescription", "Yet another RSS reader"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "yarr"
VALUE "LegalCopyright", "nkanaev"
VALUE "OriginalFilename", "yarr.exe"
VALUE "ProductName", "yarr"
VALUE "ProductVersion", "1.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1252
END
END
1 ICON "icon.ico"

View File

@ -11,7 +11,7 @@ import (
"path/filepath" "path/filepath"
) )
var Version string = "v0.0" var Version string = "0.0"
var GitHash string = "unknown" var GitHash string = "unknown"
func main() { func main() {
@ -23,7 +23,7 @@ func main() {
flag.Parse() flag.Parse()
if ver { if ver {
fmt.Printf("%s (%s)\n", Version, GitHash) fmt.Printf("v%s (%s)\n", Version, GitHash)
return return
} }

View File

@ -1,4 +1,4 @@
VERSION=v1.0 VERSION=1.0
GITHASH=$(shell git rev-parse --short=8 HEAD) GITHASH=$(shell git rev-parse --short=8 HEAD)
ASSETS = assets/javascripts/* assets/stylesheets/* assets/graphicarts/* assets/index.html ASSETS = assets/javascripts/* assets/stylesheets/* assets/graphicarts/* assets/index.html
@ -24,7 +24,7 @@ build_macos: bundle
mkdir -p _output/macos mkdir -p _output/macos
go build -tags "sqlite_foreign_keys release macos" -ldflags="$(GO_LDFLAGS)" -o _output/macos/yarr main.go go build -tags "sqlite_foreign_keys release macos" -ldflags="$(GO_LDFLAGS)" -o _output/macos/yarr main.go
cp artwork/icon.png _output/macos/icon.png cp artwork/icon.png _output/macos/icon.png
go run scripts/package_macos.go _output/macos go run scripts/package_macos.go -outdir _output/macos -version "$(VERSION)"
build_linux: bundle build_linux: bundle
set GOOS=linux set GOOS=linux
@ -36,5 +36,6 @@ build_windows: bundle
set GOOS=windows set GOOS=windows
set GOARCH=386 set GOARCH=386
mkdir -p _output/windows mkdir -p _output/windows
go run scripts/generate_versioninfo.go -version "$(VERSION)" -outfile artwork/versioninfo.rc
windres -i artwork/versioninfo.rc -O coff -o platform/versioninfo.syso windres -i artwork/versioninfo.rc -O coff -o platform/versioninfo.syso
go build -tags "sqlite_foreign_keys release windows" -ldflags="$(GO_LDFLAGS) -H windowsgui" -o _output/windows/yarr.exe main.go go build -tags "sqlite_foreign_keys release windows" -ldflags="$(GO_LDFLAGS) -H windowsgui" -o _output/windows/yarr.exe main.go

View File

@ -0,0 +1,48 @@
package main
import (
"io/ioutil"
"flag"
"strings"
)
var rsrc = `1 VERSIONINFO
FILEVERSION {VERSION_COMMA},0,0
PRODUCTVERSION {VERSION_COMMA},0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904E4"
BEGIN
VALUE "CompanyName", "Old MacDonald's Farm"
VALUE "FileDescription", "Yet another RSS reader"
VALUE "FileVersion", "{VERSION}"
VALUE "InternalName", "yarr"
VALUE "LegalCopyright", "nkanaev"
VALUE "OriginalFilename", "yarr.exe"
VALUE "ProductName", "yarr"
VALUE "ProductVersion", "{VERSION}"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1252
END
END
1 ICON "icon.ico"
`
func main() {
var version, outfile string
flag.StringVar(&version, "version", "0.0", "")
flag.StringVar(&outfile, "outfile", "versioninfo.rc", "")
flag.Parse()
version_comma := strings.ReplaceAll(version, ".", ",")
out := strings.ReplaceAll(rsrc, "{VERSION}", version)
out = strings.ReplaceAll(out, "{VERSION_COMMA}", version_comma)
ioutil.WriteFile(outfile, []byte(out), 0644)
}

View File

@ -1,13 +1,15 @@
package main package main
import ( import (
"os" "flag"
"path"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"os/exec"
"strconv"
"log" "log"
"os"
"os/exec"
"path"
"strconv"
"strings"
) )
var plist = `<?xml version="1.0" encoding="UTF-8"?> var plist = `<?xml version="1.0" encoding="UTF-8"?>
@ -21,7 +23,7 @@ var plist = `<?xml version="1.0" encoding="UTF-8"?>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>nkanaev.yarr</string> <string>nkanaev.yarr</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.0</string> <string>VERSION</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
@ -35,11 +37,6 @@ var plist = `<?xml version="1.0" encoding="UTF-8"?>
<key>NSHighResolutionCapable</key> <key>NSHighResolutionCapable</key>
<string>True</string> <string>True</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
<string>10.13</string> <string>10.13</string>
<key>LSUIElement</key> <key>LSUIElement</key>
@ -59,7 +56,11 @@ func run(cmd ...string) {
} }
func main() { func main() {
outdir := os.Args[1] var version, outdir string
flag.StringVar(&version, "version", "0.0", "")
flag.StringVar(&outdir, "outdir", "", "")
flag.Parse()
outfile := "yarr" outfile := "yarr"
binDir := path.Join(outdir, "yarr.app", "Contents/MacOS") binDir := path.Join(outdir, "yarr.app", "Contents/MacOS")
@ -74,7 +75,7 @@ func main() {
f, _ := ioutil.ReadFile(path.Join(outdir, outfile)) f, _ := ioutil.ReadFile(path.Join(outdir, outfile))
ioutil.WriteFile(path.Join(binDir, outfile), f, 0755) ioutil.WriteFile(path.Join(binDir, outfile), f, 0755)
ioutil.WriteFile(plistFile, []byte(plist), 0644) ioutil.WriteFile(plistFile, []byte(strings.Replace(plist, "VERSION", version, 1)), 0644)
ioutil.WriteFile(pkginfoFile, []byte("APPL????"), 0644) ioutil.WriteFile(pkginfoFile, []byte("APPL????"), 0644)
iconFile := path.Join(outdir, "icon.png") iconFile := path.Join(outdir, "icon.png")