diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..401c221 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,28 @@ +name: 更新 md5 +on: + push: + tags: + - 'v*' + +jobs: + update: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2.3.4 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: '1.17' + + - name: Run Updater + env: + REILIA_SPS: ${{ secrets.REILIA_SPS }} + run: | + ls + go mod init updater + go mod tidy + go run main.go diff --git a/main.go b/main.go new file mode 100644 index 0000000..ffc90ca --- /dev/null +++ b/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "crypto/md5" + "encoding/hex" + "fmt" + "io/fs" + "os" + "strings" + "unicode" + "unsafe" + + "github.com/fumiama/go-registry" + "github.com/wdvxdr1123/ZeroBot/utils/helper" +) + +func main() { + var files []string + fs.WalkDir(os.DirFS("./"), ".", func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if !d.IsDir() && strings.Contains(path, "/") && unicode.IsUpper([]rune(path)[0]) { + files = append(files, path) + } + return nil + }) + fmt.Println(files) + md5s := make([]string, len(files)) + for i, fn := range files { + data, err := os.ReadFile(fn) + if err != nil { + panic(err) + } + buf := md5.Sum(data) + *(*unsafe.Pointer)(unsafe.Pointer(&md5s[i])) = unsafe.Pointer(&buf) + *(*uintptr)(unsafe.Add(unsafe.Pointer(&md5s[i]), unsafe.Sizeof(uintptr(0)))) = uintptr(16) + } + r := registry.NewRegedit("reilia.eastasia.azurecontainer.io:32664", "fumiama", os.Getenv("REILIA_SPS")) + err := r.Connect() + if err != nil { + panic(err) + } + for i, fn := range files { + fmt.Println("set", "data/"+fn, "=", hex.EncodeToString(helper.StringToBytes(md5s[i]))) + err = r.Set("data/"+fn, md5s[i]) + if err != nil { + panic(err) + } + } + r.Close() +}