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}