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}