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 write: PluginWrite,
36 public configuration: JSON.Raw
37 ) {}
38
39 static build(
40 path: string,
41 branch: Array<string>,
42 when: Array<string>,
43 write: PluginWrite,
44 configuration: JSON.Raw
45 ): PluginRun {
46 return new PluginRun(path, branch, when, write, configuration);
47 }
48}
49
50@json
51export class PluginWrite {
52 constructor(
53 public git: Array<PluginWriteRight>,
54 public web: Array<PluginWriteRight>
55 ) {}
56
57 static build(
58 git: Array<PluginWriteRight>,
59 web: Array<PluginWriteRight>
60 ): PluginWrite {
61 return new PluginWrite(git, web);
62 }
63}
64
65@json
66export class PluginWriteRight {
67 constructor(public path: string, public can: Array<string>) {}
68
69 static build(path: string, can: Array<string>): PluginWriteRight {
70 return new PluginWriteRight(path, can);
71 }
72}