const std = @import("std"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const cbor_dep = b.dependency("cbor", .{ .target = target }); const cbor_mod = cbor_dep.module("cbor"); const theme_mod = b.createModule(.{ .root_source_file = b.path("src/theme.zig") }); const themes_compile = b.addExecutable(.{ .name = "themes_compile", .root_module = b.createModule(.{ .root_source_file = b.path("src/compile.zig"), .target = target, }), }); add_themes(b, themes_compile); themes_compile.root_module.addImport("cbor", cbor_mod); themes_compile.root_module.addImport("theme", theme_mod); // b.installArtifact(themes_compile); const themes_compile_step = b.addRunArtifact(themes_compile); const themes_compile_output = themes_compile_step.addOutputFileArg("themes.zig"); b.getInstallStep().dependOn(&b.addInstallFileWithDir(themes_compile_output, .{ .custom = "src" }, "themes.zig").step); b.installFile("src/theme.zig", "src/theme.zig"); b.installFile("src/build-dest.zig", "./build.zig"); } fn theme_file(b: *std.Build, exe: anytype, comptime dep_name: []const u8, comptime sub_path: []const u8) void { const dep = b.dependency("theme_" ++ dep_name, .{}); exe.root_module.addImport(sub_path, b.createModule(.{ .root_source_file = dep.path(sub_path) })); } fn add_themes(b: *std.Build, exe: anytype) void { const theme_list = .{ .{ "1984", "themes/1984-color-theme.json" }, .{ "1984", "themes/1984-cyberpunk-color-theme.json" }, .{ "1984", "themes/1984-orwell-color-theme.json" }, .{ "1984", "themes/1984-light-color-theme.json" }, .{ "cobalt2", "theme/cobalt2.json" }, .{ "oldschool", "themes/oldschool-gray-color-theme.json" }, .{ "oldschool", "themes/oldschool-terminal-green.json" }, .{ "turbo_colors", "themes/Turbo Colors-color-theme.json" }, .{ "vscode", "extensions/theme-tomorrow-night-blue/themes/tomorrow-night-blue-color-theme.json" }, .{ "vscode", "extensions/theme-monokai/themes/monokai-color-theme.json" }, .{ "vscode", "extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json" }, .{ "vscode", "extensions/theme-solarized-light/themes/solarized-light-color-theme.json" }, .{ "vscode", "extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json" }, .{ "vscode", "extensions/theme-defaults/themes/dark_modern.json" }, .{ "vscode", "extensions/theme-defaults/themes/dark_plus.json" }, .{ "vscode", "extensions/theme-defaults/themes/dark_vs.json" }, .{ "vscode", "extensions/theme-defaults/themes/light_modern.json" }, .{ "vscode", "extensions/theme-defaults/themes/light_plus.json" }, .{ "vscode", "extensions/theme-defaults/themes/light_vs.json" }, .{ "CRT", "themes/CRT-64-color-theme.json" }, .{ "CRT", "themes/CRT-Amber-color-theme.json" }, .{ "CRT", "themes/CRT-Gray-color-theme.json" }, .{ "CRT", "themes/CRT-Green-color-theme.json" }, .{ "CRT", "themes/CRT-Paper-color-theme.json" }, .{ "gruvbox", "themes/gruvbox-dark-hard.json" }, .{ "gruvbox", "themes/gruvbox-dark-medium.json" }, .{ "gruvbox", "themes/gruvbox-dark-soft.json" }, .{ "gruvbox", "themes/gruvbox-light-hard.json" }, .{ "gruvbox", "themes/gruvbox-light-medium.json" }, .{ "gruvbox", "themes/gruvbox-light-soft.json" }, .{ "gruvbox_material", "themes/gruvbox-material-dark.json" }, .{ "gruvbox_material", "themes/gruvbox-material-light.json" }, .{ "tokyo_night", "themes/tokyo-night-storm-color-theme.json" }, .{ "tokyo_night", "themes/tokyo-night-color-theme.json" }, .{ "tokyo_night", "themes/tokyo-night-light-color-theme.json" }, .{ "ayu", "ayu-dark.json" }, .{ "ayu", "ayu-dark-bordered.json" }, .{ "ayu", "ayu-mirage.json" }, .{ "ayu", "ayu-mirage-bordered.json" }, .{ "ayu", "ayu-light.json" }, .{ "ayu", "ayu-light-bordered.json" }, .{ "onedark_pro", "themes/OneDark-Pro.json" }, .{ "rose_pine", "themes/rose-pine-color-theme.json" }, .{ "rose_pine", "themes/rose-pine-no-italics-color-theme.json" }, .{ "rose_pine", "themes/rose-pine-moon-color-theme.json" }, .{ "rose_pine", "themes/rose-pine-moon-no-italics-color-theme.json" }, .{ "rose_pine", "themes/rose-pine-dawn-color-theme.json" }, .{ "adwaita", "themes/adwaita-dark.json" }, .{ "adwaita", "themes/adwaita-light.json" }, .{ "everforest", "themes/everforest-dark.json" }, .{ "everforest", "themes/everforest-light.json" }, .{ "nord", "themes/nord-color-theme.json" }, .{ "catppuccin", "themes/frappe.json" }, .{ "catppuccin", "themes/latte.json" }, .{ "catppuccin", "themes/macchiato.json" }, .{ "catppuccin", "themes/mocha.json" }, .{ "mellow", "themes/mellow.json" }, .{ "zenbones", "extras/vscode/themes/duckbones_default.json" }, .{ "zenbones", "extras/vscode/themes/duckbones_stark.json" }, .{ "zenbones", "extras/vscode/themes/duckbones_warm.json" }, .{ "zenbones", "extras/vscode/themes/forestbones_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/forestbones_dark_stark.json" }, .{ "zenbones", "extras/vscode/themes/forestbones_dark_warm.json" }, .{ "zenbones", "extras/vscode/themes/forestbones_light_bright.json" }, .{ "zenbones", "extras/vscode/themes/forestbones_light_default.json" }, .{ "zenbones", "extras/vscode/themes/forestbones_light_dim.json" }, .{ "zenbones", "extras/vscode/themes/kanagawabones_default.json" }, .{ "zenbones", "extras/vscode/themes/kanagawabones_stark.json" }, .{ "zenbones", "extras/vscode/themes/kanagawabones_warm.json" }, .{ "zenbones", "extras/vscode/themes/neobones_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/neobones_dark_stark.json" }, .{ "zenbones", "extras/vscode/themes/neobones_dark_warm.json" }, .{ "zenbones", "extras/vscode/themes/neobones_light_bright.json" }, .{ "zenbones", "extras/vscode/themes/neobones_light_default.json" }, .{ "zenbones", "extras/vscode/themes/neobones_light_dim.json" }, .{ "zenbones", "extras/vscode/themes/nordbones_default.json" }, .{ "zenbones", "extras/vscode/themes/nordbones_stark.json" }, .{ "zenbones", "extras/vscode/themes/nordbones_warm.json" }, .{ "zenbones", "extras/vscode/themes/rosebones_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/rosebones_dark_stark.json" }, .{ "zenbones", "extras/vscode/themes/rosebones_dark_warm.json" }, .{ "zenbones", "extras/vscode/themes/rosebones_light_bright.json" }, .{ "zenbones", "extras/vscode/themes/rosebones_light_default.json" }, .{ "zenbones", "extras/vscode/themes/rosebones_light_dim.json" }, .{ "zenbones", "extras/vscode/themes/seoulbones_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/seoulbones_dark_stark.json" }, .{ "zenbones", "extras/vscode/themes/seoulbones_dark_warm.json" }, .{ "zenbones", "extras/vscode/themes/seoulbones_light_bright.json" }, .{ "zenbones", "extras/vscode/themes/seoulbones_light_default.json" }, .{ "zenbones", "extras/vscode/themes/seoulbones_light_dim.json" }, .{ "zenbones", "extras/vscode/themes/tokyobones_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/tokyobones_dark_stark.json" }, .{ "zenbones", "extras/vscode/themes/tokyobones_dark_warm.json" }, .{ "zenbones", "extras/vscode/themes/tokyobones_light_bright.json" }, .{ "zenbones", "extras/vscode/themes/tokyobones_light_default.json" }, .{ "zenbones", "extras/vscode/themes/tokyobones_light_dim.json" }, .{ "zenbones", "extras/vscode/themes/vimbones_bright.json" }, .{ "zenbones", "extras/vscode/themes/vimbones_default.json" }, .{ "zenbones", "extras/vscode/themes/vimbones_dim.json" }, .{ "zenbones", "extras/vscode/themes/zenbones_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/zenbones_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/zenbones_dark_stark.json" }, .{ "zenbones", "extras/vscode/themes/zenbones_dark_warm.json" }, .{ "zenbones", "extras/vscode/themes/zenbones_light_bright.json" }, .{ "zenbones", "extras/vscode/themes/zenbones_light_default.json" }, .{ "zenbones", "extras/vscode/themes/zenbones_light_dim.json" }, .{ "zenbones", "extras/vscode/themes/zenburned_default.json" }, .{ "zenbones", "extras/vscode/themes/zenburned_stark.json" }, .{ "zenbones", "extras/vscode/themes/zenburned_warm.json" }, .{ "zenbones", "extras/vscode/themes/zenwritten_dark_default.json" }, .{ "zenbones", "extras/vscode/themes/zenwritten_dark_stark.json" }, .{ "zenbones", "extras/vscode/themes/zenwritten_dark_warm.json" }, .{ "zenbones", "extras/vscode/themes/zenwritten_light_bright.json" }, .{ "zenbones", "extras/vscode/themes/zenwritten_light_default.json" }, .{ "zenbones", "extras/vscode/themes/zenwritten_light_dim.json" }, .{ "kanagawa", "themes/kanagawa-wave-color-theme.json" }, .{ "kanagawa", "themes/kanagawa-dragon-color-theme.json" }, .{ "kanagawa", "themes/kanagawa-lotus-color-theme.json" }, .{ "hypersubatomic", "themes/Hypersubatomic-color-theme.json" }, .{ "base16", "themes/3024-dark.json" }, .{ "base16", "themes/3024-light.json" }, .{ "base16", "themes/apathy-dark.json" }, .{ "base16", "themes/apathy-light.json" }, .{ "base16", "themes/ashes-dark.json" }, .{ "base16", "themes/ashes-light.json" }, .{ "base16", "themes/atelierdune-dark.json" }, .{ "base16", "themes/atelierdune-light.json" }, .{ "base16", "themes/atelierforest-dark.json" }, .{ "base16", "themes/atelierforest-light.json" }, .{ "base16", "themes/atelierheath-dark.json" }, .{ "base16", "themes/atelierheath-light.json" }, .{ "base16", "themes/atelierlakeside-dark.json" }, .{ "base16", "themes/atelierlakeside-light.json" }, .{ "base16", "themes/atelierseaside-dark.json" }, .{ "base16", "themes/atelierseaside-light.json" }, .{ "base16", "themes/bespin-dark.json" }, .{ "base16", "themes/bespin-light.json" }, .{ "base16", "themes/brewer-dark.json" }, .{ "base16", "themes/brewer-light.json" }, .{ "base16", "themes/bright-dark.json" }, .{ "base16", "themes/bright-light.json" }, .{ "base16", "themes/chalk-dark.json" }, .{ "base16", "themes/chalk-light.json" }, .{ "base16", "themes/codeschool-dark.json" }, .{ "base16", "themes/codeschool-light.json" }, .{ "base16", "themes/colors-dark.json" }, .{ "base16", "themes/colors-light.json" }, .{ "base16", "themes/default-dark.json" }, .{ "base16", "themes/default-light.json" }, .{ "base16", "themes/eighties-dark.json" }, .{ "base16", "themes/eighties-light.json" }, .{ "base16", "themes/embers-dark.json" }, .{ "base16", "themes/embers-light.json" }, .{ "base16", "themes/flat-dark.json" }, .{ "base16", "themes/flat-light.json" }, .{ "base16", "themes/google-dark.json" }, .{ "base16", "themes/google-light.json" }, .{ "base16", "themes/grayscale-dark.json" }, .{ "base16", "themes/grayscale-light.json" }, .{ "base16", "themes/greenscreen-dark.json" }, .{ "base16", "themes/greenscreen-light.json" }, .{ "base16", "themes/harmonic16-dark.json" }, .{ "base16", "themes/harmonic16-light.json" }, .{ "base16", "themes/isotope-dark.json" }, .{ "base16", "themes/isotope-light.json" }, .{ "base16", "themes/londontube-dark.json" }, .{ "base16", "themes/londontube-light.json" }, .{ "base16", "themes/marrakesh-dark.json" }, .{ "base16", "themes/marrakesh-light.json" }, .{ "base16", "themes/mocha-dark.json" }, .{ "base16", "themes/mocha-light.json" }, .{ "base16", "themes/monokai-dark.json" }, .{ "base16", "themes/monokai-light.json" }, .{ "base16", "themes/ocean-dark.json" }, .{ "base16", "themes/oceanicnext-dark.json" }, .{ "base16", "themes/ocean-light.json" }, .{ "base16", "themes/paraiso-dark.json" }, .{ "base16", "themes/paraiso-light.json" }, .{ "base16", "themes/pop-dark.json" }, .{ "base16", "themes/pop-light.json" }, .{ "base16", "themes/railscasts-dark.json" }, .{ "base16", "themes/railscasts-light.json" }, .{ "base16", "themes/shapeshifter-dark.json" }, .{ "base16", "themes/shapeshifter-light.json" }, .{ "base16", "themes/solarized-dark.json" }, .{ "base16", "themes/solarized-light.json" }, .{ "base16", "themes/summerfruit-dark.json" }, .{ "base16", "themes/summerfruit-light.json" }, .{ "base16", "themes/tomorrow-dark.json" }, .{ "base16", "themes/tomorrow-light.json" }, .{ "base16", "themes/twilight-dark.json" }, .{ "base16", "themes/twilight-light.json" }, .{ "base16", "themes/unikitty-dark.json" }, .{ "base16", "themes/unikitty-light.json" }, .{ "base16", "themes/woodland-dark.json" }, .{ "alabaster", "theme/alabaster-color-theme.json" }, .{ "ethereal", "themes/ethereal-color-theme.json" }, .{ "selenized", "editors/visual-studio-code/themes/selenized-dark.json" }, .{ "selenized", "editors/visual-studio-code/themes/selenized-light.json" }, }; inline for (theme_list) |list| { theme_file(b, exe, list[0], list[1]); } }