local util = require("solarized-osaka.util")

local function hex2rgb(key, value)
  local hex = value:gsub("#", "")

  local r = tonumber(hex:sub(1, 2), 16)
  local g = tonumber(hex:sub(3, 4), 16)
  local b = tonumber(hex:sub(5, 6), 16)

  return string.format("Rgb(%s,%s,%s), // %s %s", r, g, b, key, value)
end

local M = {}

--- @param colors ColorScheme
function M.generate(colors)
  local gitui_colors = {}
  for k, v in pairs(colors) do
    if type(v) == "string" then
      gitui_colors[k] = hex2rgb(k, v)
    end
  end

  local gitui = util.template(
    [[
(
  selected_tab: ${magenta}
  command_fg: ${base01}
  selection_bg: ${bg_highlight}
  selection_fg: ${cyan}
  cmdbar_bg: ${bg}
  cmdbar_extra_lines_bg: ${bg}
  disabled_fg: ${base01}
  diff_line_add: ${green}
  diff_line_delete: ${red}
  diff_file_added: ${green500}
  diff_file_removed: ${red300}
  diff_file_moved: ${magenta2}
  diff_file_modified: ${yellow}
  commit_hash: ${magenta}
  commit_time: ${teal}
  commit_author: ${green}
  danger_fg: ${red}
  push_gauge_bg: ${bg}
  push_gauge_fg: ${fg}
  tag_fg: ${magenta2}
  branch_fg: ${yellow}
)
]],
    gitui_colors
  )

  return gitui
end

return M
