Infrastructure as CodeStandard Library
Standard Functions
Utility functions available in the standard library
These functions are available in all Runbooks as part of the standard library.
Operators
Basic mathematical and comparison operators:
// Addition
output "sum" {
value = 1 + 2 // or std::add(1, 2)
}
// Subtraction
output "diff" {
value = 5 - 3 // or std::minus(5, 3)
}
// Multiplication
output "product" {
value = 4 * 3 // or std::multiply(4, 3)
}
// Division
output "quotient" {
value = 10 / 2 // or std::div(10, 2)
}
// Modulo
output "remainder" {
value = 10 % 3 // or std::modulo(10, 3)
}Hash Functions
// SHA256 hash
output "hash" {
value = std::sha256("hello world")
}
// Keccak256 hash
output "keccak" {
value = std::keccak256("hello world")
}Hex Functions
// Encode string's raw bytes to hex (returns string with 0x prefix)
output "hex" {
value = std::encode_hex("hello, world")
}
// > hex: 0x68656c6c6f2c20776f726c64
// Decode from hex (returns buffer)
output "decoded" {
value = std::decode_hex("0x68656c6c6f2c20776f726c64")
}
// > decoded: 0x68656c6c6f2c20776f726c64Base58 Functions
// Encode to base58 (accepts buffer or hex string)
output "base58" {
value = std::encode_base58("0x68656c6c6f")
}
// > base58: Cn8eVZg
// Decode from base58 (returns buffer)
output "decoded" {
value = std::decode_base58("Cn8eVZg")
}
// > decoded: 0x68656c6c6fBase64 Functions
// Encode to base64 (accepts buffer or hex string)
output "encoded" {
value = std::encode_base64("0x48656c6c6f20776f726c6421")
}
// > encoded: SGVsbG8gd29ybGQh
// Decode from base64 (returns buffer)
output "decoded" {
value = std::decode_base64("SGVsbG8gd29ybGQh")
}
// > decoded: 0x48656c6c6f20776f726c6421JSON Functions
// Query JSON with jq syntax
output "message" {
value = std::jq("{ \"message\": \"Hello world!\" }", ".message")
}List Functions
// Get element at index
output "entry" {
value = std::index(['a', 'b', 'c'], 1) // Returns 'b'
}Assertion Functions
// Assert equality
output "check_eq" {
value = std::assert_eq(action.example.result, 1)
}
// Assert not equal
output "check_ne" {
value = std::assert_ne(action.example.result, 0)
}
// Assert greater than / greater than or equal
output "check_gt" {
value = std::assert_gt(action.example.result, 0)
}
// Assert less than / less than or equal
output "check_lt" {
value = std::assert_lt(action.example.result, 100)
}