#!/bin/sh -efu

CONFIG_FILE="${ALTERA_CONFIG_FILE:-/etc/alterator/altera.yaml}"

. "/usr/bin/altera-sh-functions"

on_read()
{
    if [ ! -f "$CONFIG_FILE" ]; then
        write_error_json "config file not found: $CONFIG_FILE"
        return 1
    fi

    jq -Rsc --arg path "$CONFIG_FILE" '
        {
          config_path: $path,
          content: .,
          exists: true
        }
    ' < "$CONFIG_FILE" >&3
}

on_write()
{
    if ! json_get -e '.content | strings | select(length > 0)' >/dev/null; then
        write_error_json "content must be a non-empty string"
        return 1
    fi

    mkdir -p "$(dirname "$CONFIG_FILE")"
    json_get -j '.content' > "$CONFIG_FILE"

    jq -cn --arg path "$CONFIG_FILE" '
        {
          status: "ok",
          config_path: $path
        }
    ' >&3
}

on_list()
{
    jq -cn --arg path "$CONFIG_FILE" '
        {
          module: "altera-config",
          config_path: $path,
          actions: ["list", "read", "write"]
        }
    ' >&3
}

message_loop_backend4
