Dotfiles/vim/theme/cyberqueer.nvim/lua/cyberdream/extra/init.lua

72 lines
2.5 KiB
Lua

local M = {}
M.variants = {
default = "default",
light = "light",
}
M.extras = {
alacritty = { extension = "toml", name = "alacritty" },
base16 = { extension = "yaml", name = "base16" },
fish = { extension = "theme", name = "fish" },
foot = { extension = "ini", name = "foot" },
ghostty = { extension = nil, name = "ghostty" },
gitui = { extension = "ron", name = "gitui" },
helix = { extension = "toml", name = "helix" },
kitty = { extension = "conf", name = "kitty" },
lazydocker = { extension = "yml", name = "lazydocker" },
lazygit = { extension = "yml", name = "lazygit" },
lsd = { extension = "yml", name = "lsd" },
pywal = { extension = "json", name = "pywal" },
rio = { extension = "toml", name = "rio" },
textmate = { extension = "tmTheme", name = "textmate" },
tilix = { extension = "json", name = "tilix" },
tmux = { extension = "tmuxtheme", name = "tmux" },
vivid = { extension = "yml", name = "vivid" },
warp = { extension = "yaml", name = "warp" },
wezterm = { extension = "lua", name = "wezterm" },
windowsterminal = { extension = "json", name = "windowsterminal" },
yazi = { extension = "toml", name = "yazi" },
zellij = { extension = "kdl", name = "zellij" },
zed = { extension = "json", name = "zed" },
}
--- Create/overwrite a file in the extras directory.
--- @param str string: The string to write to the file.
local function write(str, filename)
print("writing extra: extras/" .. filename)
vim.fn.mkdir(vim.fs.dirname("extras/" .. filename), "p")
local file = io.open("extras/" .. filename, "w")
if file then
file:write(str)
file:close()
else
print("Failed to write to file: extras/" .. filename)
end
end
--- Generate the extras for a given variant.
--- @param variant string: Variation of the colorscheme to use. Defaults to "default".
local function generate_extras(variant)
local suffix = variant == "default" and "" or "-" .. variant
for name, extra in pairs(M.extras) do
local extra_module = require("cyberdream.extra." .. name)
local str = extra_module.generate(variant)
if extra.extension then
write(str, extra.name .. "/" .. "cyberdream" .. suffix .. "." .. extra.extension)
else
write(str, extra.name .. "/" .. "cyberdream" .. suffix)
end
end
end
--- Generate Extras for all styles.
function M.generate_all_extras()
for variant, _ in pairs(M.variants) do
generate_extras(variant)
end
end
return M