GitRoot
craft your forge, build your project, grow your community freely
1// SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
2//
3// SPDX-License-Identifier: MIT
4
5package gitroot
6
7import (
8 "encoding/json"
9
10 "gitroot.dev/libs/golang/plugin/model"
11)
12
13//go:wasmexport init
14func Init(repoNamePtr, repoNameSize, confHasChangedPtr, confHasChangedSize, confPtr, confSize uint32) {
15 repoName := ptrToString(repoNamePtr, repoNameSize)
16 serializedConf := ptrToString(confPtr, confSize)
17 confHasChanged := ptrToString(confHasChangedPtr, confHasChangedSize)
18 server.plugin.Init(repoName, confHasChanged == "true", serializedConf)
19}
20
21//go:wasmexport startCommit
22func StartCommit(jsonPtr, jsonSize uint32) {
23 server.plugin.StartCommit(model.CommitFromString(ptrToString(jsonPtr, jsonSize)))
24}
25
26//go:wasmexport addFile
27func AddFile(ptr, size uint32) {
28 server.plugin.AddFile(ptrToString(ptr, size))
29}
30
31//go:wasmexport modFile
32func ModFile(fromPtr, fromSize, toPtr, toSize uint32) {
33 server.plugin.ModFile(ptrToString(fromPtr, fromSize), ptrToString(toPtr, toSize))
34}
35
36//go:wasmexport delFile
37func DelFile(ptr, size uint32) {
38 server.plugin.DelFile(ptrToString(ptr, size))
39}
40
41//go:wasmexport endCommit
42func EndCommit(jsonPtr, jsonSize uint32) {
43 server.plugin.EndCommit(model.CommitFromString(ptrToString(jsonPtr, jsonSize)))
44}
45
46//go:wasmexport finish
47func Finish() {
48 server.plugin.Finish()
49}
50
51//go:wasmexport pluginConf
52func PluginConf() uint64 {
53 conf := model.ConfPlugin{
54 DefaultRun: server.run,
55 SdkVersion: "0.2.0",
56 SdkType: model.PluginSdkTypeTinygo,
57 }
58 if j, err := json.Marshal(conf); err == nil {
59 ptr, size := stringToLeakedPtr(string(j))
60 return (uint64(ptr) << uint64(32)) | uint64(size)
61 } else {
62 server.LogError("can't serialize conf", err)
63 return 0
64 }
65}