cli/plugin/
types.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//! # types
//!
//! Defines the various plugin related types.
//!

#[cfg(test)]
#[path = "types_test.rs"]
mod types_test;

use indexmap::IndexMap;

#[derive(Serialize, Deserialize, Debug, Clone)]
/// Holds a plugin implementation
pub(crate) struct Plugin {
    /// The plugin script content
    pub(crate) script: String,
}

#[derive(Serialize, Deserialize, Debug, Clone, Default)]
/// Holds the entire plugin config and implementation structure
pub struct Plugins {
    /// The plugin name aliases
    pub(crate) aliases: Option<IndexMap<String, String>>,
    /// All plugin definitions
    #[serde(rename = "impl")]
    pub(crate) plugins: IndexMap<String, Plugin>,
}

impl Plugins {
    /// Creates and returns a new instance.
    pub fn new() -> Plugins {
        Default::default()
    }
}