mirror of
https://github.com/acedanger/dotfiles.git
synced 2025-12-05 22:30:13 -08:00
copied profile
This commit is contained in:
71
wezterm/.config/utils/class/config.lua
Normal file
71
wezterm/.config/utils/class/config.lua
Normal file
@@ -0,0 +1,71 @@
|
||||
---@module "utils.class.config"
|
||||
---@author sravioli
|
||||
---@license GNU-GPLv3
|
||||
|
||||
---locals are faster
|
||||
-- local type, pcall, pairs, setmetatable = type, pcall, pairs, setmetatable
|
||||
|
||||
local wt = require "wezterm"
|
||||
|
||||
---@class Utils.Class.Config
|
||||
local M = {}
|
||||
|
||||
---@package
|
||||
---
|
||||
---Class logger
|
||||
M.log = require("utils.class.logger"):new "Config"
|
||||
|
||||
---Initializes a new Config object.
|
||||
---Creates a new Wezterm configuration object. If `wezterm.config_builder()` is available,
|
||||
---it will use the config builder and set the configuration to strict mode.
|
||||
---
|
||||
---@return Utils.Class.Config self new instance of the Wezterm configuration.
|
||||
function M:new()
|
||||
self.config = {}
|
||||
|
||||
if wt.config_builder then ---@diagnostic disable-line: undefined-field
|
||||
self.config = wt.config_builder() ---@diagnostic disable-line: undefined-field
|
||||
self.config:set_strict_mode(true)
|
||||
M.log:debug "Wezterm's config builder is available"
|
||||
else
|
||||
M.log:warn "Wezterm's config builder is unavailable"
|
||||
end
|
||||
|
||||
self = setmetatable(self.config, { __index = M })
|
||||
return self
|
||||
end
|
||||
|
||||
---Adds a module to the Wezterm configuration.
|
||||
---This function allows you to extend the Wezterm configuration by adding new options
|
||||
---from a specified module. If a string is provided, it requires the module and merges
|
||||
---its options. If a table is provided, it merges the table directly into the configuration.
|
||||
---
|
||||
---**Example usage**
|
||||
---
|
||||
---~~~lua
|
||||
---local Config = require "config"
|
||||
---return Config:new():add(require "<module.name>")
|
||||
---~~~
|
||||
---
|
||||
---@param spec string|table lua `require()` path to config table or config table
|
||||
---@return Utils.Class.Config # Modified Config object with the new options.
|
||||
function M:add(spec)
|
||||
if type(spec) == "string" then
|
||||
if not (pcall(require, spec)) then
|
||||
M.log:error("Unable to require module %s", spec)
|
||||
return self
|
||||
end
|
||||
spec = require(spec)
|
||||
end
|
||||
|
||||
for key, value in pairs(spec) do
|
||||
if self.config[key] == spec[key] then
|
||||
M.log:warn("found duplicate! old: %s, new: %s", self.config[key], spec[key])
|
||||
end
|
||||
self.config[key] = value
|
||||
end
|
||||
|
||||
return self.config
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user