104 lines
2.9 KiB
Go
104 lines
2.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/ssgo/u"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
homeDir, _ := os.UserHomeDir()
|
|
if !u.FileExists("../gojs.go") {
|
|
fmt.Println(u.Red("请在gojs的项目跟目录中运行"))
|
|
return
|
|
}
|
|
r, err := u.RunCommand("go", "get", "-u", "github.com/dop251/goja")
|
|
fmt.Println(err)
|
|
fmt.Println(strings.Join(r, "\n"))
|
|
r, err = u.RunCommand("go", "get", "-u", "github.com/dop251/goja_nodejs")
|
|
fmt.Println(err)
|
|
fmt.Println(strings.Join(r, "\n"))
|
|
r, err = u.RunCommand("go", "get", "-u", "github.com/dop251/base64dec")
|
|
fmt.Println(err)
|
|
fmt.Println(strings.Join(r, "\n"))
|
|
|
|
gojaPkgPath := ""
|
|
gojaPkgVer := int64(0)
|
|
gojaNodejsPkgPath := ""
|
|
gojaNodejsPkgVer := int64(0)
|
|
gojaB64PkgPath := ""
|
|
gojaB64PkgVer := int64(0)
|
|
for _, f := range u.ReadDirN(homeDir + "/go/pkg/mod/github.com/dop251/") {
|
|
if f.IsDir && strings.HasPrefix(f.Name, "goja@") {
|
|
a := strings.Split(f.Name, "-")
|
|
ver := u.Int64(a[1])
|
|
if ver > gojaPkgVer {
|
|
gojaPkgPath = f.FullName
|
|
gojaPkgVer = ver
|
|
}
|
|
} else if f.IsDir && strings.HasPrefix(f.Name, "goja_nodejs@") {
|
|
a := strings.Split(f.Name, "-")
|
|
ver := u.Int64(a[1])
|
|
if ver > gojaNodejsPkgVer {
|
|
gojaNodejsPkgPath = f.FullName
|
|
gojaNodejsPkgVer = ver
|
|
}
|
|
} else if f.IsDir && strings.HasPrefix(f.Name, "base64dec@") {
|
|
a := strings.Split(f.Name, "-")
|
|
ver := u.Int64(a[1])
|
|
if ver > gojaB64PkgVer {
|
|
gojaB64PkgPath = f.FullName
|
|
gojaB64PkgVer = ver
|
|
}
|
|
}
|
|
}
|
|
|
|
_ = os.RemoveAll("../dop251")
|
|
|
|
u.CopyFile(gojaPkgPath, "../dop251/goja")
|
|
_ = os.Remove("../dop251/goja/go.mod")
|
|
_ = os.Remove("../dop251/goja/go.sum")
|
|
replacePackage("../dop251/goja")
|
|
|
|
u.CopyFile(gojaNodejsPkgPath, "../dop251/goja_nodejs")
|
|
_ = os.Remove("../dop251/goja_nodejs/go.mod")
|
|
_ = os.Remove("../dop251/goja_nodejs/go.sum")
|
|
replacePackage("../dop251/goja_nodejs")
|
|
|
|
u.CopyFile(gojaB64PkgPath, "../dop251/base64dec")
|
|
_ = os.Remove("../dop251/base64dec/go.mod")
|
|
_ = os.Remove("../dop251/base64dec/go.sum")
|
|
replacePackage("../dop251/base64dec")
|
|
|
|
_ = os.Chdir("..")
|
|
r, err = u.RunCommand("go", "mod", "tidy")
|
|
fmt.Println(err)
|
|
fmt.Println(strings.Join(r, "\n"))
|
|
}
|
|
|
|
func replacePackage(root string) {
|
|
for _, f := range u.ReadDirN(root) {
|
|
if f.IsDir {
|
|
if !strings.HasPrefix(f.Name, ".") {
|
|
replacePackage(filepath.Join(f.FullName))
|
|
} else {
|
|
_ = os.RemoveAll(f.FullName)
|
|
}
|
|
} else if strings.HasSuffix(f.Name, ".go") && !strings.HasSuffix(f.Name, "_test.go") {
|
|
str := u.ReadFileN(f.FullName)
|
|
if strings.Contains(str, "github.com/dop251/") {
|
|
str = strings.ReplaceAll(str, "github.com/dop251/", "apigo.cc/apigo/gojs/dop251/")
|
|
if strings.HasSuffix(f.FullName, "/dop251/goja/runtime.go") {
|
|
str = strings.ReplaceAll(str, "type Runtime struct {", "type Runtime struct {\n\tGoData map[string]any")
|
|
}
|
|
_ = u.WriteFile(f.FullName, str)
|
|
fmt.Println(u.BGreen("文件更新"), u.Green(f.FullName))
|
|
}
|
|
} else {
|
|
_ = os.Remove(f.FullName)
|
|
}
|
|
}
|
|
}
|