main.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "os"
  7. "os/exec"
  8. "strconv"
  9. )
  10. func main() {
  11. versionFile := "version"
  12. b, err := os.ReadFile(versionFile)
  13. if err != nil {
  14. file, err := os.OpenFile(versionFile, os.O_RDWR|os.O_CREATE, 0777)
  15. if err != nil {
  16. fmt.Println(err)
  17. return
  18. }
  19. defer file.Close()
  20. file.WriteString("v1.0.0")
  21. cmd := exec.Command("git", "add", versionFile)
  22. err = cmd.Run()
  23. if err != nil {
  24. fmt.Println(err)
  25. }
  26. return
  27. }
  28. fmt.Println("old version", string(b))
  29. file, err := os.OpenFile("version", os.O_RDWR|os.O_TRUNC, 0777)
  30. if err != nil {
  31. fmt.Println(err)
  32. return
  33. }
  34. defer file.Close()
  35. bs := bytes.Split(b, []byte{'.'})
  36. lb := bs[len(bs)-1]
  37. i, err := strconv.Atoi(string(lb))
  38. if err != nil {
  39. fmt.Println(err)
  40. return
  41. }
  42. bs[len(bs)-1] = []byte(fmt.Sprintf("%d", i+1))
  43. tb := bytes.Join(bs, []byte{'.'})
  44. fmt.Println("new version", string(tb))
  45. file.Write(tb)
  46. cmd := exec.Command("git", "add", versionFile)
  47. err = cmd.Run()
  48. if err != nil {
  49. fmt.Println(err)
  50. }
  51. // Windows编译版本文件
  52. winVersionFile := "./versioninfo.json"
  53. _, err = os.Stat(winVersionFile)
  54. if err != nil {
  55. return
  56. }
  57. winB, err := os.ReadFile(winVersionFile)
  58. if err != nil {
  59. fmt.Println("open ", winVersionFile, "error: ", err)
  60. return
  61. }
  62. fmt.Println("xxxxxxxxxx", len(winB))
  63. var winV windowsVersion
  64. err = json.Unmarshal(winB, &winV)
  65. if err != nil {
  66. fmt.Println("invalid format of Windows version info: xxxx", err, string(winB))
  67. }
  68. winV.StringFileInfo.ProductVersion = string(tb)
  69. file1, _ := os.OpenFile(winVersionFile, os.O_RDWR|os.O_TRUNC, 0777)
  70. defer file1.Close()
  71. vb, _ := json.MarshalIndent(winV, "", " ")
  72. _, err = file1.Write(vb)
  73. if err != nil {
  74. fmt.Println("write new windows version error: ", err)
  75. return
  76. }
  77. cmd2 := exec.Command("git", "add", winVersionFile)
  78. err = cmd2.Run()
  79. if err != nil {
  80. fmt.Println(err)
  81. return
  82. }
  83. }
  84. type windowsVersion struct {
  85. FixedFileInfo struct {
  86. FileVersion struct {
  87. Major int
  88. Minor int
  89. Patch int
  90. Build int
  91. }
  92. ProductVersion struct {
  93. Major int
  94. Minor int
  95. Patch int
  96. Build int
  97. }
  98. FileFlagsMask string
  99. FileFlags string
  100. FileOS string
  101. FileType string
  102. FileSubType string
  103. }
  104. StringFileInfo struct {
  105. Comments string
  106. CompanyName string
  107. FileDescription string
  108. FileVersion string
  109. InternalName string
  110. LegalCopyright string
  111. LegalTrademarks string
  112. OriginalFilename string
  113. PrivateBuild string
  114. ProductName string
  115. ProductVersion string
  116. SpecialBuild string
  117. }
  118. VarFileInfo struct {
  119. Translation struct {
  120. LangID string
  121. CharsetID string
  122. }
  123. }
  124. IconPath string
  125. ManifestPath string
  126. }