txtx-core 0.4.14

Primitives for parsing, analyzing and executing Txtx runbooks
Documentation
use txtx_addon_kit::types::AuthorizationContext;
use txtx_addon_kit::{
    define_function, indoc,
    types::{
        diagnostics::Diagnostic,
        functions::{FunctionImplementation, FunctionSpecification},
        types::{Type, Value},
    },
};

lazy_static! {
    pub static ref FUNCTIONS: Vec<FunctionSpecification> = vec![define_function! {
        EncodeHex => {
            name: "encode_hex",
            documentation: "`encode_hex` encodes a string as a hexadecimal string.",
            example: indoc!{r#"
                output "encoded_hex" {
                    value = encode_hex("hello, world")
                }
                // > encoded_hex: 68656C6C6F2C20776F726C64
          "#},
            inputs: [
                value: {
                    documentation: "Any input string.",
                    typing: vec![Type::string()]
                }
            ],
            output: {
                documentation: "The input string in its hexadecimal representation.",
                typing: Type::string()
            },
        }
    },];
}

pub struct EncodeHex;
impl FunctionImplementation for EncodeHex {
    fn check_instantiability(
        _fn_spec: &FunctionSpecification,
        _auth_ctx: &AuthorizationContext,
        _args: &Vec<Type>,
    ) -> Result<Type, Diagnostic> {
        unimplemented!()
    }

    fn run(
        _fn_spec: &FunctionSpecification,
        _auth_ctx: &AuthorizationContext,
        args: &Vec<Value>,
    ) -> Result<Value, Diagnostic> {
        let input = args.get(0).unwrap().expect_string();
        let hex = txtx_addon_kit::hex::encode(input);
        Ok(Value::string(hex))
    }
}