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 model
6
7type PluginRunWhen string
8type PluginWriteRightCan string
9
10const (
11 PluginRunWhenAdd PluginRunWhen = "add"
12 PluginRunWhenMod PluginRunWhen = "mod"
13 PluginRunWhenDel PluginRunWhen = "del"
14
15 PluginWriteRightCanAdd PluginWriteRightCan = "add"
16 PluginWriteRightCanMod PluginWriteRightCan = "mod"
17 PluginWriteRightCanDel PluginWriteRightCan = "del"
18 PluginWriteRightCanAppend PluginWriteRightCan = "append"
19)
20
21var PluginRunWhenAll = []PluginRunWhen{PluginRunWhenAdd, PluginRunWhenMod, PluginRunWhenDel}
22var PluginWriteRightCanAll = []PluginWriteRightCan{PluginWriteRightCanAdd, PluginWriteRightCanMod, PluginWriteRightCanDel, PluginWriteRightCanAppend}
23
24type PluginRun struct {
25 Path string `json:"path"`
26 Branch []string `json:"branch"`
27 When []PluginRunWhen `json:"when"`
28 Schedule string `json:"schedule"`
29 Func []PluginFunc `json:"func"`
30 Write PluginWrite `json:"write"`
31 Configuration map[string]any `json:"configuration"`
32}
33
34type PluginFunc struct {
35 FuncName string `json:"funcName"`
36 Args []string `json:"args"`
37 Res []string `json:"res"`
38}
39
40type PluginWrite struct {
41 Git []PluginWriteRight `json:"git"`
42 Web []PluginWriteRight `json:"web"`
43 Exec []PluginExecRight `json:"exec"`
44 CallFunc []PluginCallFuncRight `json:"callFunc"`
45}
46
47type PluginWriteRight struct {
48 Path string `json:"path"`
49 Can []PluginWriteRightCan `json:"can"`
50}
51
52type PluginExecRight struct {
53 Command string `json:"command"`
54}
55
56type PluginCallFuncRight struct {
57 PluginPURL string `json:"pluginPURL"`
58 FuncName string `json:"funcName"`
59 Configuration map[string]any `json:"configuration"`
60}