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 when: Vec<PluginRunWhen>,
42    pub write: PluginWrite,
43    pub configuration: Value,
44}
45
46#[derive(Debug, Serialize, Clone)]
47#[serde(rename_all = "camelCase")]
48pub struct PluginWrite {
49    pub git: Vec<PluginWriteRight>,
50    pub web: Vec<PluginWriteRight>,
51    pub exec: Vec<PluginExecRight>,
52}
53
54#[derive(Debug, Serialize, Clone)]
55#[serde(rename_all = "camelCase")]
56pub struct PluginWriteRight {
57    pub path: String,
58    pub can: Vec<PluginWriteRightCan>,
59}
60
61#[derive(Debug, Serialize, Clone)]
62#[serde(rename_all = "camelCase")]
63pub struct PluginExecRight {
64    pub command: String,
65}