diff --git a/src/lib.rs b/src/lib.rs index bc3a8f2..e7e10af 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,5 @@ +mod script; + use std::process::Command; #[allow(dead_code)] diff --git a/src/script.rs b/src/script.rs new file mode 100644 index 0000000..b9eaa0e --- /dev/null +++ b/src/script.rs @@ -0,0 +1 @@ +mod parameter; diff --git a/src/script/parameter.rs b/src/script/parameter.rs new file mode 100644 index 0000000..e2f5630 --- /dev/null +++ b/src/script/parameter.rs @@ -0,0 +1,38 @@ +use std::sync::Arc; + +use serde::{Deserialize, Serialize}; +use validation::Validation; + +mod validation; + +#[derive(Deserialize, Serialize)] +pub struct Parameter { + name: Arc, + data_type: DataType, + is_array: bool, + aliases: Vec>, + description: Option>, + help_message: Option>, + parameter_sets: Vec, + validations: Vec, +} + +#[derive(Deserialize, Serialize)] +pub struct ParameterSet { + name: Arc, + mandatory: bool, + position: Option, + value_from_pipeline: Option, + value_from_pipeline_by_property_name: Option, +} + +#[derive(Deserialize, Serialize)] +pub enum DataType { + String, + Int32, + Int64, + Switch, + Bool, + Credential, + SecureString, +} diff --git a/src/script/parameter/validation.rs b/src/script/parameter/validation.rs new file mode 100644 index 0000000..ce61877 --- /dev/null +++ b/src/script/parameter/validation.rs @@ -0,0 +1,18 @@ +use std::sync::Arc; + +use serde::{Deserialize, Serialize}; + +#[derive(Deserialize, Serialize)] +#[serde(tag = "type")] +pub enum Validation { + #[serde(rename = "ValidateNotNullOrEmpty")] + NotNullOrEmpty, + #[serde(rename = "ValidateRange")] + Range { min: i32, max: i32 }, + #[serde(rename = "ValidateScript")] + Script { value: Arc }, + #[serde(rename = "ValidatePattern")] + Pattern { value: Arc }, + #[serde(rename = "ValidateSet")] + Set { values: Vec> }, +}