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}