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 "runtime"
9 "time"
10)
11
12//go:wasmexport init
13func Init(repoNamePtr, repoNameSize, confHasChangedPtr, confHasChangedSize, confPtr, confSize uint32) {
14 repoName := ptrToString(repoNamePtr, repoNameSize)
15 serializedConf := ptrToString(confPtr, confSize)
16 confHasChanged := ptrToString(confHasChangedPtr, confHasChangedSize)
17 server.plugin.Init(repoName, confHasChanged == "true", serializedConf)
18}
19
20//go:wasmexport startCommit
21func StartCommit(branchPtr, branchSize, hashPrt, hashSize, msgPrt, msgSize, datePtr, dateSize, committerPtr, committerSize uint32) {
22 date, err := time.Parse(time.RFC3339, ptrToString(datePtr, dateSize))
23 if err != nil {
24 message := "can't parse date of commit"
25 ptr, size := stringToPtr(message)
26 errPtr, errSize := stringToPtr(err.Error())
27 _logError(ptr, size, errPtr, errSize)
28 runtime.KeepAlive(message)
29 runtime.KeepAlive(err)
30 date = time.Now()
31 }
32 commit := Commit{
33 Branch: ptrToString(branchPtr, branchSize),
34 Hash: ptrToString(hashPrt, hashSize),
35 Message: ptrToString(msgPrt, msgSize),
36 Date: date,
37 Committer: ptrToString(committerPtr, committerSize),
38 }
39 server.plugin.StartCommit(commit)
40}
41
42//go:wasmexport addFile
43func AddFile(ptr, size uint32) {
44 server.plugin.AddFile(ptrToString(ptr, size))
45}
46
47//go:wasmexport modFile
48func ModFile(fromPtr, fromSize, toPtr, toSize uint32) {
49 server.plugin.ModFile(ptrToString(fromPtr, fromSize), ptrToString(toPtr, toSize))
50}
51
52//go:wasmexport delFile
53func DelFile(ptr, size uint32) {
54 server.plugin.DelFile(ptrToString(ptr, size))
55}
56
57//go:wasmexport endCommit
58func EndCommit(branchPtr, branchSize, hashPrt, hashSize, msgPrt, msgSize, datePtr, dateSize, committerPtr, committerSize uint32) {
59 date, err := time.Parse(time.RFC3339, ptrToString(datePtr, dateSize))
60 if err != nil {
61 message := "can't parse date of commit"
62 ptr, size := stringToPtr(message)
63 errPtr, errSize := stringToPtr(err.Error())
64 _logError(ptr, size, errPtr, errSize)
65 runtime.KeepAlive(message)
66 runtime.KeepAlive(err)
67 date = time.Now()
68 }
69 commit := Commit{
70 Branch: ptrToString(branchPtr, branchSize),
71 Hash: ptrToString(hashPrt, hashSize),
72 Message: ptrToString(msgPrt, msgSize),
73 Date: date,
74 Committer: ptrToString(committerPtr, committerSize),
75 }
76 server.plugin.EndCommit(commit)
77}
78
79//go:wasmexport finish
80func Finish() {
81 server.plugin.Finish()
82}
83
84//go:wasmexport defaultRun
85func DefaultRun() uint64 {
86 ptr, size := stringToLeakedPtr(server.run)
87 return (uint64(ptr) << uint64(32)) | uint64(size)
88}