Ð޸´ȫÏîĿÉó²éÎÊÌⲢ·¢²¼ v1.1.9

¸ÄÓñ¾»ú¶ÀÁ¢ CA£¬»ָ´ CLI TLS УÑ飬±£»¤ƾ¾ÝÓëÅäÖò¢·¢±£´档
Ð޸´ Cursor Êý¾ݡ¢»Ự·¾¶¡¢´úÀíÉúÃüÖÜÆڡ¢ģÐÍÇëÇóÓë Skills Îļþ²Ù×÷¡£
Ϊ¶ÀÁ¢ Tab ·þÎñÔö¼ӿͻ§¶˼øȨ£¬Éý¼¶ÒÀÀµÓ빤¾ßÁ´£¬ÍêÉƷ¢²¼ԪÐÅϢͬ²½¡£

Ñé֤£ºÁ½¸ö Go ģ¿éµIJâÊÔ/vet¡¢¹ؼüģ¿é race¡¢ǰ¶˲âÊÔ/Éú²ú¹¹½¨/Éó¼ơ¢
Go ¿ɴï©¶´ɨÃèÓë macOS/Linux ¿ÉÐÐģ¿齻²æ±àÒë¾ùͨ¹ý¡£
Windows ¸ôÀëÆô¶¯ͨ¹ý£»δÍê³ɵĵã»÷ðÑ̺ÍԭÉúƽ̨Ñé֤¼ûÉó²鱨¸档
This commit is contained in:
FuDie0915
2026-11-10 09:59:34 +08:00
parent db73cf5a39
commit 188225fae6
98 changed files with 3324 additions and 930 deletions

View File

@@ -0,0 +1,65 @@
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
"regexp"
"strings"
)
type metadataRule struct{ path, pattern, version string }
// syncMetadata updates version fields only. Regenerating Wails build templates
// during a release used to overwrite customized platform packaging tasks.
func syncMetadata(root, version string) error {
if !regexp.MustCompile(`^[0-9]+\.[0-9]+\.[0-9]+(?:-[A-Za-z0-9.-]+)?$`).MatchString(version) {
return fmt.Errorf("invalid release version")
}
core := strings.SplitN(version, "-", 2)[0]
rules := []metadataRule{
{"build/windows/info.json", `("(?:file_version|product_version|FileVersion|ProductVersion)"\s*:\s*")[^"]*(")`, core},
{"build/windows/wails.exe.manifest", `(<assemblyIdentity[^>]*version=")[^"]*(")`, core + ".0"},
{"build/windows/nsis/wails_tools.nsh", `(!define INFO_PRODUCTVERSION ")[^"]*(")`, core},
{"build/darwin/Info.plist", `(<key>CFBundle(?:ShortVersionString|Version)</key>\s*<string>)[^<]*(</string>)`, version},
{"build/darwin/Info.dev.plist", `(<key>CFBundle(?:ShortVersionString|Version)</key>\s*<string>)[^<]*(</string>)`, version},
{"build/linux/nfpm/nfpm.yaml", `(?m)(^version:\s*")[^"]*(")`, version},
}
updates := make(map[string][]byte)
for _, rule := range rules {
file := filepath.Join(root, filepath.FromSlash(rule.path))
data, err := os.ReadFile(file)
if err != nil {
return err
}
pattern := regexp.MustCompile(rule.pattern)
if !pattern.Match(data) {
return fmt.Errorf("missing version field in %s", rule.path)
}
updates[file] = pattern.ReplaceAll(data, []byte("${1}"+rule.version+"${2}"))
}
for file, data := range updates {
info, err := os.Stat(file)
if err != nil {
return err
}
if err = os.WriteFile(file, data, info.Mode().Perm()); err != nil {
return err
}
}
return nil
}
func runMetadata(args []string) {
flags := flag.NewFlagSet("sync-metadata", flag.ExitOnError)
root := flags.String("root", ".", "project root")
_ = flags.Parse(args)
version, err := readVersion(filepath.Join(*root, "build", "config.yml"))
if err != nil {
exitErr(err)
}
if err = syncMetadata(*root, version); err != nil {
exitErr(err)
}
}