Compare commits

...

3 Commits

Author SHA1 Message Date
55d4504645 feat: add validatepattern 2025-04-26 20:17:00 +02:00
d4341b3b40 feat: add script + parameter 2025-04-26 20:16:40 +02:00
fb58f88f5e feat: add serde 2025-04-26 20:15:37 +02:00
7 changed files with 64 additions and 1 deletions

View File

@ -6,4 +6,5 @@ description = "PowerShell Scripts for EVERYONE!"
repository = "https://git.itsscb.de/itsscb/BefehlsWerk" repository = "https://git.itsscb.de/itsscb/BefehlsWerk"
[dependencies] [dependencies]
serde = { version = "1.0.219", features = ["derive", "rc"] }
serde_json = "1.0.140" serde_json = "1.0.140"

View File

@ -120,7 +120,9 @@ foreach ($param in $paramBlock.Parameters) {
} elseif ($attr.TypeName.Name -eq 'ValidateSet') { } elseif ($attr.TypeName.Name -eq 'ValidateSet') {
$val.values = $attr.PositionalArguments.Value $val.values = $attr.PositionalArguments.Value
} elseif ($attr.TypeName.Name -eq 'ValidateScript') { } elseif ($attr.TypeName.Name -eq 'ValidateScript') {
$val.script = $attr.PositionalArguments.ScriptBlock.Extent.Text $val.value = $attr.PositionalArguments.ScriptBlock.Extent.Text
} elseif ($attr.TypeName.Name -eq 'ValidatePattern') {
$val.value = $attr.PositionalArguments.Value
} }
$validations += [pscustomobject]$val $validations += [pscustomobject]$val

View File

@ -21,6 +21,7 @@
# Accepts pipeline input by value # Accepts pipeline input by value
[Parameter(ValueFromPipeline = $true, ParameterSetName = 'Set2')] [Parameter(ValueFromPipeline = $true, ParameterSetName = 'Set2')]
[ValidatePattern("^[a-zA-Z0-9]*$")]
[string]$InputObject, [string]$InputObject,
# Accepts pipeline input by property name # Accepts pipeline input by property name

View File

@ -1,3 +1,5 @@
mod script;
use std::process::Command; use std::process::Command;
#[allow(dead_code)] #[allow(dead_code)]

1
src/script.rs Normal file
View File

@ -0,0 +1 @@
mod parameter;

38
src/script/parameter.rs Normal file
View File

@ -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<str>,
data_type: DataType,
is_array: bool,
aliases: Vec<Arc<str>>,
description: Option<Arc<str>>,
help_message: Option<Arc<str>>,
parameter_sets: Vec<ParameterSet>,
validations: Vec<Validation>,
}
#[derive(Deserialize, Serialize)]
pub struct ParameterSet {
name: Arc<str>,
mandatory: bool,
position: Option<u8>,
value_from_pipeline: Option<bool>,
value_from_pipeline_by_property_name: Option<bool>,
}
#[derive(Deserialize, Serialize)]
pub enum DataType {
String,
Int32,
Int64,
Switch,
Bool,
Credential,
SecureString,
}

View File

@ -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<str> },
#[serde(rename = "ValidatePattern")]
Pattern { value: Arc<str> },
#[serde(rename = "ValidateSet")]
Set { values: Vec<Arc<str>> },
}