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
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
7
8#[derive(Debug, Deserialize, Serialize, Clone)]
9#[serde(rename_all = "lowercase")]
10pub enum PluginRunWhen {
11 ADD, // = "add",
12 MOD, // = "mod",
13 DEL, // = "del",
14}
15
16#[derive(Debug, Deserialize, Serialize, Clone)]
17#[serde(rename_all = "lowercase")]
18pub enum PluginWriteRightCan {
19 ADD, // = "add",
20 MOD, // = "mod",
21 DEL, // = "del",
22 APPEND, // = "append",
23}
24
25impl PluginWriteRightCan {
26 pub fn all() -> Vec<PluginWriteRightCan> {
27 vec![
28 PluginWriteRightCan::ADD,
29 PluginWriteRightCan::MOD,
30 PluginWriteRightCan::DEL,
31 PluginWriteRightCan::APPEND,
32 ]
33 }
34}
35
36#[derive(Debug, Serialize, Clone)]
37#[serde(rename_all = "camelCase")]
38pub struct PluginRun {
39 pub path: String,
40 pub branch: Vec<String>,
41 pub func: Vec<PluginFunc>,
42 pub when: Vec<PluginRunWhen>,
43 pub write: PluginWrite,
44 pub configuration: Value,
45}
46
47#[derive(Debug, Serialize, Clone)]
48#[serde(rename_all = "camelCase")]
49pub struct PluginFunc {
50 pub func_name: String,
51 pub args: Vec<String>,
52 pub res: Vec<String>,
53}
54
55#[derive(Debug, Serialize, Clone)]
56#[serde(rename_all = "camelCase")]
57pub struct PluginWrite {
58 pub git: Vec<PluginWriteRight>,
59 pub web: Vec<PluginWriteRight>,
60 pub exec: Vec<PluginExecRight>,
61 pub call_func: Vec<PluginCallFuncRight>,
62}
63
64#[derive(Debug, Serialize, Clone)]
65#[serde(rename_all = "camelCase")]
66pub struct PluginWriteRight {
67 pub path: String,
68 pub can: Vec<PluginWriteRightCan>,
69}
70
71#[derive(Debug, Serialize, Clone)]
72#[serde(rename_all = "camelCase")]
73pub struct PluginExecRight {
74 pub command: String,
75}
76
77#[derive(Debug, Serialize, Clone)]
78#[serde(rename_all = "camelCase")]
79pub struct PluginCallFuncRight {
80 pub plugin_name: String,
81 pub func_name: String,
82}