pub mod array;
pub mod data_parsing;
pub mod datetime;
pub mod debug;
pub mod encoding;
pub mod environment;
pub mod exec;
pub mod filesystem;
pub mod kubernetes;
pub mod logic;
pub mod math;
pub mod metadata;
pub mod network;
pub mod object;
pub mod predicates;
pub mod random;
pub mod string;
pub mod system;
pub mod traits;
pub mod url;
pub mod uuid_gen;
pub mod validation;
use crate::TemplateContext;
use minijinja::Environment;
pub use metadata::{ArgumentMetadata, FunctionMetadata, SyntaxVariants};
pub use traits::{ContextFunction, Function};
pub fn get_all_metadata() -> Vec<&'static FunctionMetadata> {
vec![
&environment::GetEnv::METADATA,
&environment::FilterEnv::METADATA,
&random::GetRandom::METADATA,
&random::RandomString::METADATA,
&uuid_gen::UuidGen::METADATA,
&validation::MatchesRegex::METADATA,
&system::GetHostname::METADATA,
&system::GetUsername::METADATA,
&system::GetHomeDir::METADATA,
&system::GetTempDir::METADATA,
&system::GetOs::METADATA,
&system::GetArch::METADATA,
&system::GetCwd::METADATA,
&network::GetIpAddress::METADATA,
&network::GetInterfaces::METADATA,
&network::ResolveDns::METADATA,
&network::CidrContains::METADATA,
&network::CidrNetwork::METADATA,
&network::CidrBroadcast::METADATA,
&network::CidrNetmask::METADATA,
&network::IpToInt::METADATA,
&network::IntToIp::METADATA,
&debug::Debug::METADATA,
&debug::TypeOf::METADATA,
&debug::Inspect::METADATA,
&debug::Assert::METADATA,
&debug::Warn::METADATA,
&debug::Abort::METADATA,
&predicates::ArrayAny::METADATA,
&predicates::ArrayAll::METADATA,
&predicates::ArrayContains::METADATA,
&predicates::StartsWith::METADATA,
&predicates::EndsWith::METADATA,
&logic::Default::METADATA,
&logic::Coalesce::METADATA,
&logic::Ternary::METADATA,
&logic::InRange::METADATA,
&datetime::Now::METADATA,
&datetime::ParseDate::METADATA,
&datetime::DateAdd::METADATA,
&datetime::DateDiff::METADATA,
&datetime::TimezoneConvert::METADATA,
&encoding::Bcrypt::METADATA,
&encoding::GenerateSecret::METADATA,
&encoding::HmacSha256::METADATA,
&math::Min::METADATA,
&math::Max::METADATA,
&math::Percentage::METADATA,
&string::RegexMatch::METADATA,
&string::RegexFindAll::METADATA,
&string::Contains::METADATA,
&string::IndexOf::METADATA,
&string::CountOccurrences::METADATA,
&string::SentenceCase::METADATA,
&string::ToConstantCase::METADATA,
&string::Pluralize::METADATA,
&array::ArrayCount::METADATA,
&array::ArrayChunk::METADATA,
&array::ArrayZip::METADATA,
&array::ArraySortBy::METADATA,
&array::ArrayGroupBy::METADATA,
&array::ArrayTake::METADATA,
&array::ArrayDrop::METADATA,
&array::ArrayIndexOf::METADATA,
&array::ArrayFind::METADATA,
&array::ArrayFilterBy::METADATA,
&array::ArrayPluck::METADATA,
&array::ArrayIntersection::METADATA,
&array::ArrayDifference::METADATA,
&array::ArrayUnion::METADATA,
&array::ArraySymmetricDifference::METADATA,
&object::ObjectMerge::METADATA,
&object::ObjectGet::METADATA,
&object::ObjectSet::METADATA,
&object::ObjectHasKey::METADATA,
&object::JsonPath::METADATA,
&object::ObjectPick::METADATA,
&object::ObjectOmit::METADATA,
&object::ObjectRenameKeys::METADATA,
&object::ObjectUnflatten::METADATA,
&kubernetes::K8sResourceRequest::METADATA,
&kubernetes::K8sEnvVarRef::METADATA,
&kubernetes::K8sSecretRef::METADATA,
&kubernetes::K8sConfigmapRef::METADATA,
&kubernetes::HelmTpl::METADATA,
&kubernetes::K8sQuantityToBytes::METADATA,
&kubernetes::K8sBytesToQuantity::METADATA,
&kubernetes::K8sSelector::METADATA,
&kubernetes::K8sPodAffinity::METADATA,
&kubernetes::K8sToleration::METADATA,
&kubernetes::K8sProbe::METADATA,
&url::BasicAuth::METADATA,
&url::BuildUrl::METADATA,
&url::QueryString::METADATA,
&filesystem::ReadFile::METADATA,
&filesystem::FileExists::METADATA,
&filesystem::ListDir::METADATA,
&filesystem::Glob::METADATA,
&filesystem::FileSize::METADATA,
&filesystem::FileModified::METADATA,
&filesystem::ReadLines::METADATA,
&data_parsing::ReadJsonFile::METADATA,
&data_parsing::ReadYamlFile::METADATA,
&data_parsing::ReadTomlFile::METADATA,
&exec::Exec::METADATA,
&exec::ExecRaw::METADATA,
]
}
pub fn register_all(env: &mut Environment, context: TemplateContext) {
use std::sync::Arc;
use traits::{ContextFunction, Function};
crate::filter_functions::register_all(env);
let context_arc = Arc::new(context);
crate::is_functions::register_all(env, context_arc.clone());
environment::GetEnv::register(env);
environment::FilterEnv::register(env);
random::GetRandom::register(env);
random::RandomString::register(env);
uuid_gen::UuidGen::register(env);
datetime::Now::register(env);
datetime::ParseDate::register(env);
datetime::DateAdd::register(env);
datetime::DateDiff::register(env);
datetime::TimezoneConvert::register(env);
validation::MatchesRegex::register(env);
system::GetHostname::register(env);
system::GetUsername::register(env);
system::GetHomeDir::register(env);
system::GetTempDir::register(env);
system::GetOs::register(env);
system::GetArch::register(env);
system::GetCwd::register(env);
network::GetIpAddress::register(env);
network::GetInterfaces::register(env);
network::ResolveDns::register(env);
network::CidrContains::register(env);
network::CidrNetwork::register(env);
network::CidrBroadcast::register(env);
network::CidrNetmask::register(env);
network::IpToInt::register(env);
network::IntToIp::register(env);
encoding::Bcrypt::register(env);
encoding::GenerateSecret::register(env);
encoding::HmacSha256::register(env);
debug::Debug::register(env);
debug::TypeOf::register(env);
debug::Inspect::register(env);
debug::Assert::register(env);
debug::Warn::register(env);
debug::Abort::register(env);
predicates::ArrayAny::register(env);
predicates::ArrayAll::register(env);
predicates::ArrayContains::register(env);
predicates::StartsWith::register(env);
predicates::EndsWith::register(env);
logic::Default::register(env);
logic::Coalesce::register(env);
logic::Ternary::register(env);
logic::InRange::register(env);
math::Min::register(env);
math::Max::register(env);
math::Percentage::register(env);
string::RegexMatch::register(env);
string::RegexFindAll::register(env);
string::Contains::register(env);
string::IndexOf::register(env);
string::CountOccurrences::register(env);
string::SentenceCase::register(env);
string::ToConstantCase::register(env);
string::Pluralize::register(env);
array::ArrayCount::register(env);
array::ArrayChunk::register(env);
array::ArrayZip::register(env);
array::ArraySortBy::register(env);
array::ArrayGroupBy::register(env);
array::ArrayTake::register(env);
array::ArrayDrop::register(env);
array::ArrayIndexOf::register(env);
array::ArrayFind::register(env);
array::ArrayFilterBy::register(env);
array::ArrayPluck::register(env);
array::ArrayIntersection::register(env);
array::ArrayDifference::register(env);
array::ArrayUnion::register(env);
array::ArraySymmetricDifference::register(env);
object::ObjectMerge::register(env);
object::ObjectGet::register(env);
object::ObjectSet::register(env);
object::ObjectHasKey::register(env);
object::JsonPath::register(env);
object::ObjectPick::register(env);
object::ObjectOmit::register(env);
object::ObjectRenameKeys::register(env);
object::ObjectUnflatten::register(env);
kubernetes::K8sResourceRequest::register(env);
kubernetes::K8sEnvVarRef::register(env);
kubernetes::K8sSecretRef::register(env);
kubernetes::K8sConfigmapRef::register(env);
kubernetes::HelmTpl::register(env);
kubernetes::K8sQuantityToBytes::register(env);
kubernetes::K8sBytesToQuantity::register(env);
kubernetes::K8sSelector::register(env);
kubernetes::K8sPodAffinity::register(env);
kubernetes::K8sToleration::register(env);
kubernetes::K8sProbe::register(env);
url::BasicAuth::register(env);
url::BuildUrl::register(env);
url::QueryString::register(env);
filesystem::ReadFile::register(env, context_arc.clone());
filesystem::FileExists::register(env, context_arc.clone());
filesystem::ListDir::register(env, context_arc.clone());
filesystem::Glob::register(env, context_arc.clone());
filesystem::FileSize::register(env, context_arc.clone());
filesystem::FileModified::register(env, context_arc.clone());
filesystem::ReadLines::register(env, context_arc.clone());
data_parsing::ReadJsonFile::register(env, context_arc.clone());
data_parsing::ReadYamlFile::register(env, context_arc.clone());
data_parsing::ReadTomlFile::register(env, context_arc.clone());
exec::Exec::register(env, context_arc.clone());
exec::ExecRaw::register(env, context_arc);
}