provisioning-catalog/components/forgejo/cluster/vars.nu

42 lines
1.3 KiB
Text
Raw Normal View History

#!/usr/bin/env nu
# Derived variables for forgejo bundle rendering.
def zone_to_cf_secret [zone: string]: nothing -> string {
$"dns-($zone | str replace --all '.' '-')"
}
def resolve_fip_ip [fip_name: string]: nothing -> string {
let result = (do { ^hcloud floating-ip list -o json } | complete)
if $result.exit_code != 0 { return "" }
let matched = ($result.stdout | from json | where name == $fip_name)
if ($matched | is-empty) { return "" }
$matched | first | get ip
}
def main [component_json: string]: nothing -> nothing {
let d = ($component_json | from json)
let dns_zone = ($d | get -o dns_zone | default "")
let gateway_fip = ($d | get -o gateway_fip | default "")
let gateway_ip = ($d | get -o gateway_ip | default "")
let name = ($d | get -o name | default "forgejo")
let resolved_cf_secret = if ($dns_zone | is-not-empty) {
zone_to_cf_secret $dns_zone
} else { "" }
let resolved_gateway_ip = if ($gateway_ip | is-not-empty) {
$gateway_ip
} else if ($gateway_fip | is-not-empty) {
resolve_fip_ip $gateway_fip
} else { "" }
{
cf_secret_name: $resolved_cf_secret,
gateway_ip: $resolved_gateway_ip,
tls_secret: $"($name)-tls",
}
| to json --raw
| print
}