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}