#!/bin/bash

# omarchy:summary=Print OSC sequences for an Omarchy color theme
# omarchy:hidden=true

theme="${1:-$HOME/.config/omarchy/current/theme/colors.toml}"

[[ -f $theme ]] || exit 0

awk -F= '
  function clean(value) {
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", value)
    if (value ~ /^"/) {
      sub(/^"/, "", value)
      sub(/".*$/, "", value)
    }
    return value
  }

  function alias_color(target, source) {
    if (colors[target] == "" && colors[source] != "") colors[target] = colors[source]
  }

  function emit_color(color_index, key) {
    if (colors[key] != "") printf "\033]4;%d;%s\007", color_index, colors[key]
  }

  {
    key = $1
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", key)
    value = clean($2)
    colors[key] = value
  }

  END {
    alias_color("color0", "bg")
    alias_color("color0", "background")
    alias_color("color1", "red")
    alias_color("color2", "green")
    alias_color("color3", "yellow")
    alias_color("color4", "blue")
    alias_color("color5", "magenta")
    alias_color("color5", "purple")
    alias_color("color6", "cyan")
    alias_color("color7", "fg")
    alias_color("color7", "foreground")
    alias_color("color8", "muted")
    alias_color("color8", "dark_fg")
    alias_color("color8", "foreground")
    alias_color("color9", "bright_red")
    alias_color("color9", "red")
    alias_color("color10", "bright_green")
    alias_color("color10", "green")
    alias_color("color11", "bright_yellow")
    alias_color("color11", "yellow")
    alias_color("color12", "bright_blue")
    alias_color("color12", "blue")
    alias_color("color13", "bright_magenta")
    alias_color("color13", "bright_purple")
    alias_color("color13", "magenta")
    alias_color("color13", "purple")
    alias_color("color14", "bright_cyan")
    alias_color("color14", "cyan")
    alias_color("color15", "bright_fg")
    alias_color("color15", "foreground")

    if (colors["foreground"] != "") printf "\033]10;%s\007", colors["foreground"]
    if (colors["background"] != "") printf "\033]11;%s\007", colors["background"]
    if (colors["cursor"] != "") printf "\033]12;%s\007", colors["cursor"]
    if (colors["selection_background"] != "") printf "\033]17;%s\007", colors["selection_background"]
    if (colors["selection_foreground"] != "") printf "\033]19;%s\007", colors["selection_foreground"]

    for (i = 0; i <= 15; i++) emit_color(i, "color" i)
  }
' "$theme"
