82 lines
1.8 KiB
Lua
82 lines
1.8 KiB
Lua
local M = {}
|
|
|
|
local function make_env(colorscheme)
|
|
local specs = colorscheme.specs
|
|
vim.opt.background = colorscheme.background
|
|
package.loaded[specs] = nil
|
|
|
|
local builder = require "shipwright.builder"
|
|
local p = require(specs .. ".palette")[colorscheme.background]
|
|
local env = builder.make_env {
|
|
name = colorscheme.name,
|
|
specs = require(specs),
|
|
p = p,
|
|
term = require("zenbones.term").colors_map(p),
|
|
transform = require "zenbones.shipwright.transform",
|
|
}
|
|
return env
|
|
end
|
|
|
|
local function make_build_fn(file)
|
|
return loadfile(string.format("lua/zenbones/shipwright/runners/%s.lua", file))
|
|
end
|
|
|
|
local function make_runners(config)
|
|
if not config.background then
|
|
return {
|
|
setfenv(
|
|
make_build_fn(config.file),
|
|
make_env {
|
|
name = config.name .. "_light",
|
|
specs = config.name,
|
|
background = "light",
|
|
}
|
|
),
|
|
setfenv(
|
|
make_build_fn(config.file),
|
|
make_env {
|
|
name = config.name .. "_dark",
|
|
specs = config.name,
|
|
background = "dark",
|
|
}
|
|
),
|
|
}
|
|
end
|
|
|
|
return {
|
|
setfenv(
|
|
make_build_fn(config.file),
|
|
make_env {
|
|
name = config.name,
|
|
specs = config.name,
|
|
background = config.background,
|
|
}
|
|
),
|
|
}
|
|
end
|
|
|
|
M.run = function()
|
|
local runner_files = { "vim", "alacritty", "kitty", "wezterm", "tmux", "lualine", "lightline" }
|
|
local colorschemes = {
|
|
{ name = "zenbones" },
|
|
{ name = "neobones" },
|
|
{ name = "vimbones", background = "light" },
|
|
{ name = "forestbones" },
|
|
{ name = "nordbones", background = "dark" },
|
|
{ name = "rosebones" },
|
|
{ name = "tokyobones" },
|
|
{ name = "zenburned", background = "dark" },
|
|
{ name = "zenwritten" },
|
|
}
|
|
for _, colorscheme in ipairs(colorschemes) do
|
|
for _, file in ipairs(runner_files) do
|
|
colorscheme.file = file
|
|
for _, runner in ipairs(make_runners(colorscheme)) do
|
|
assert(pcall(runner))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
return M
|