main.go 2.5 KB

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