diff --git a/.gitignore b/.gitignore index 4066bc3..f6233d0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,10 @@ internal/btree/*.db # binary builds go-cqhttp +*.exe # macos .DS_Store + +# windwos rc +*.syso diff --git a/.goreleaser.yml b/.goreleaser.yml index c379886..b6c335d 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -3,6 +3,9 @@ env: before: hooks: - go mod tidy + - go install github.com/tc-hib/go-winres@latest + - go generate winres/init.go + - go-winres make release: draft: true discussion_category_name: General diff --git a/README.md b/README.md index bf0fea1..8efa36c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
diff --git a/winres/.gitignore b/winres/.gitignore new file mode 100644 index 0000000..87e127f --- /dev/null +++ b/winres/.gitignore @@ -0,0 +1 @@ +winres.json \ No newline at end of file diff --git a/winres/gen/json.go b/winres/gen/json.go new file mode 100644 index 0000000..415e6dc --- /dev/null +++ b/winres/gen/json.go @@ -0,0 +1,118 @@ +// Package main generates winres.json +package main + +import ( + "bytes" + "fmt" + "os" + "os/exec" + "strings" + "time" + + "github.com/Mrs4s/go-cqhttp/internal/base" +) + +const js = `{ + "RT_GROUP_ICON": { + "APP": { + "0000": [ + "icon.png", + "icon16.png" + ] + } + }, + "RT_MANIFEST": { + "#1": { + "0409": { + "identity": { + "name": "go-cqhttp", + "version": "%s" + }, + "description": "", + "minimum-os": "vista", + "execution-level": "as invoker", + "ui-access": false, + "auto-elevate": false, + "dpi-awareness": "system", + "disable-theming": false, + "disable-window-filtering": false, + "high-resolution-scrolling-aware": false, + "ultra-high-resolution-scrolling-aware": false, + "long-path-aware": false, + "printer-driver-isolation": false, + "gdi-scaling": false, + "segment-heap": false, + "use-common-controls-v6": false + } + } + }, + "RT_VERSION": { + "#1": { + "0000": { + "fixed": { + "file_version": "%s", + "product_version": "%s", + "timestamp": "%s" + }, + "info": { + "0409": { + "Comments": "Golang implementation of cqhttp.", + "CompanyName": "Mrs4s", + "FileDescription": "https://github.com/Mrs4s/go-cqhttp", + "FileVersion": "%s", + "InternalName": "", + "LegalCopyright": "©️ 2020 - %d Mrs4s. All Rights Reserved.", + "LegalTrademarks": "", + "OriginalFilename": "GOCQHTTP.EXE", + "PrivateBuild": "", + "ProductName": "go-cqhttp", + "ProductVersion": "%s", + "SpecialBuild": "" + } + } + } + } + } +}` + +const timeformat = `2006-01-02T15:04:05+08:00` + +func main() { + f, err := os.Create("winres.json") + if err != nil { + panic(err) + } + defer f.Close() + v := "" + if base.Version == "(devel)" { + vartag := bytes.NewBuffer(nil) + vartagcmd := exec.Command("git", "tag", "--sort=committerdate") + vartagcmd.Stdout = vartag + err = vartagcmd.Run() + if err != nil { + panic(err) + } + s := strings.Split(vartag.String(), "\n") + v = s[len(s)-2] + } else { + v = base.Version + } + i := strings.Index(v, "-") // remove -rc / -beta + if i <= 0 { + i = len(v) + } + commitcnt := strings.Builder{} + commitcnt.WriteString(v[1:i]) + commitcnt.WriteByte('.') + commitcntcmd := exec.Command("git", "rev-list", "--count", "master") + commitcntcmd.Stdout = &commitcnt + err = commitcntcmd.Run() + if err != nil { + panic(err) + } + fv := commitcnt.String()[:commitcnt.Len()-1] + _, err = fmt.Fprintf(f, js, fv, fv, v, time.Now().Format(timeformat), fv, time.Now().Year(), v) + if err != nil { + panic(err) + } +} diff --git a/winres/icon.png b/winres/icon.png new file mode 100644 index 0000000..9725af6 Binary files /dev/null and b/winres/icon.png differ diff --git a/winres/icon16.png b/winres/icon16.png new file mode 100644 index 0000000..751be91 Binary files /dev/null and b/winres/icon16.png differ diff --git a/winres/init.go b/winres/init.go new file mode 100644 index 0000000..0b8c33e --- /dev/null +++ b/winres/init.go @@ -0,0 +1,4 @@ +// Package winres 生成windows资源 +package winres + +//go:generate go run github.com/Mrs4s/go-cqhttp/winres/gen