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}