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
5import { JSON } from "json-as";
6
7export const PluginRunWhenAdd = "add";
8export const PluginRunWhenMod = "mod";
9export const PluginRunWhenDel = "del";
10
11export const pluginRunWhenAll: Array<string> = [
12 PluginRunWhenAdd,
13 PluginRunWhenMod,
14 PluginRunWhenDel,
15];
16
17export const PluginWriteRightCanAdd = "add";
18export const PluginWriteRightCanMod = "mod";
19export const PluginWriteRightCanDel = "del";
20export const PluginWriteRightCanAppend = "append";
21
22export const pluginWriteRightCanAll: Array<string> = [
23 PluginWriteRightCanAdd,
24 PluginWriteRightCanMod,
25 PluginWriteRightCanDel,
26 PluginWriteRightCanAppend,
27];
28
29@json
30export class PluginRun {
31 constructor(
32 public path: string,
33 public branch: Array<string>,
34 public when: Array<string>,
35 public func: Array<PluginFunc>,
36 public write: PluginWrite,
37 public configuration: JSON.Raw,
38 ) {}
39
40 static build(
41 path: string,
42 branch: Array<string>,
43 when: Array<string>,
44 func: Array<PluginFunc>,
45 write: PluginWrite,
46 configuration: JSON.Raw,
47 ): PluginRun {
48 return new PluginRun(path, branch, when, func, write, configuration);
49 }
50}
51
52@json
53export class PluginFunc {
54 constructor(
55 public funcName: string,
56 public args: Array<string>,
57 public res: Array<string>,
58 ) {}
59
60 static build(
61 funcName: string,
62 args: Array<string>,
63 res: Array<string>,
64 ): PluginFunc {
65 return new PluginFunc(funcName, args, res);
66 }
67}
68
69@json
70export class PluginWrite {
71 constructor(
72 public git: Array<PluginWriteRight>,
73 public web: Array<PluginWriteRight>,
74 public exec: Array<PluginExecRight>,
75 public callFunc: Array<PluginCallFuncRight>,
76 ) {}
77
78 static build(
79 git: Array<PluginWriteRight>,
80 web: Array<PluginWriteRight>,
81 exec: Array<PluginExecRight>,
82 callFunc: Array<PluginCallFuncRight>,
83 ): PluginWrite {
84 return new PluginWrite(git, web, exec, callFunc);
85 }
86}
87
88@json
89export class PluginWriteRight {
90 constructor(
91 public path: string,
92 public can: Array<string>,
93 ) {}
94
95 static build(path: string, can: Array<string>): PluginWriteRight {
96 return new PluginWriteRight(path, can);
97 }
98}
99
100@json
101export class PluginExecRight {
102 constructor(public command: string) {}
103
104 static build(command: string): PluginExecRight {
105 return new PluginExecRight(command);
106 }
107}
108
109@json
110export class PluginCallFuncRight {
111 constructor(
112 public pluginName: string,
113 public funcName: string,
114 ) {}
115
116 static build(pluginName: string, funcName: string): PluginCallFuncRight {
117 return new PluginCallFuncRight(pluginName, funcName);
118 }
119}