diff --git a/lua/zenbones/shipwright/init.lua b/lua/zenbones/shipwright/init.lua index 0c5776a..7ffd0aa 100644 --- a/lua/zenbones/shipwright/init.lua +++ b/lua/zenbones/shipwright/init.lua @@ -4,28 +4,66 @@ local function make_env(colorscheme) local builder = require "shipwright.builder" local env = builder.make_env() - local name = colorscheme.name - env.name = name + local specs = colorscheme.specs + env.name = colorscheme.name - vim.opt.background = "light" - package.loaded[name] = nil - env.specs = require(name) - env.p = require(name .. ".palette").light + vim.opt.background = colorscheme.background + package.loaded[specs] = nil + env.specs = require(specs) + env.p = require(specs .. ".palette")[colorscheme.background] env.term = require("zenbones.term").colors_map(env.p) env.transform = require "zenbones.shipwright.transform" return env end -M.run = function() - local runners = { "alacritty", "kitty" } - for _, runner in ipairs(runners) do - local build_fn = loadfile(string.format("lua/zenbones/shipwright/runners/%s.lua", runner)) - assert(pcall(setfenv( - build_fn, +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 = "zenbones", + name = config.name, + specs = config.name, + background = config.background, } - ))) + ), + } +end + +M.run = function() + local runner_files = { "alacritty", "kitty" } + local colorschemes = { { name = "zenbones" }, { name = "neobones" } } + 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