why was it deleted??
This commit is contained in:
91
awesome/src/tools/config.lua
Normal file
91
awesome/src/tools/config.lua
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
local assert = assert
|
||||||
|
local error = error
|
||||||
|
local io = io
|
||||||
|
local pairs = pairs
|
||||||
|
|
||||||
|
-- Awesome libs
|
||||||
|
local aspawn = require('awful.spawn')
|
||||||
|
local gfilesystem = require('gears.filesystem')
|
||||||
|
local gobject = require('gears.object')
|
||||||
|
local gtable = require('gears.table')
|
||||||
|
|
||||||
|
-- Third party libs
|
||||||
|
local json = require('src.lib.json-lua.json-lua')
|
||||||
|
|
||||||
|
local config = {}
|
||||||
|
|
||||||
|
---Takes a file path and puts the content into the callback
|
||||||
|
---@param path string file path, caller has to make sure it exists
|
||||||
|
---@return string|nil file_content
|
||||||
|
config.read = function(path)
|
||||||
|
local handler = io.open(path, 'r')
|
||||||
|
if not handler then error('Invalid path') return end
|
||||||
|
|
||||||
|
local content = handler:read('*all')
|
||||||
|
handler:close()
|
||||||
|
return content
|
||||||
|
end
|
||||||
|
|
||||||
|
---Writes a string to a file
|
||||||
|
---@param path string file path, caller has to make sure it exists
|
||||||
|
---@param content string content to write
|
||||||
|
config.write = function(path, content)
|
||||||
|
local handler = io.open(path, 'w')
|
||||||
|
if not handler then error('Invalid path') return end
|
||||||
|
|
||||||
|
handler:write(content)
|
||||||
|
handler:close()
|
||||||
|
end
|
||||||
|
|
||||||
|
config.read_json = function(path)
|
||||||
|
print(path)
|
||||||
|
local handler = io.open(path, 'r')
|
||||||
|
if not handler then error('Invalid path') return end
|
||||||
|
|
||||||
|
local content = handler:read('*all')
|
||||||
|
handler:close()
|
||||||
|
|
||||||
|
local json_content = json:decode(content) or {}
|
||||||
|
assert(type(json_content) == 'table', 'json is not a table')
|
||||||
|
return json_content
|
||||||
|
end
|
||||||
|
|
||||||
|
config.write_json = function(path, content)
|
||||||
|
local json_content = json:encode(content)
|
||||||
|
assert(type(json_content) == 'string', 'json is not a string')
|
||||||
|
|
||||||
|
local handler = io.open(path, 'w')
|
||||||
|
if not handler then error('Invalid path') return end
|
||||||
|
|
||||||
|
handler:write(json_content)
|
||||||
|
handler:close()
|
||||||
|
end
|
||||||
|
|
||||||
|
local instance = nil
|
||||||
|
if not instance then
|
||||||
|
instance = setmetatable(config, {
|
||||||
|
__call = function()
|
||||||
|
local ret = gobject {}
|
||||||
|
|
||||||
|
gtable.crush(ret, config, true)
|
||||||
|
|
||||||
|
-- Create config files if they don't exist
|
||||||
|
for _, file in pairs { 'floating.json', 'dock.json', 'desktop.json', 'applications.json' } do
|
||||||
|
if not gfilesystem.file_readable(gfilesystem.get_configuration_dir() .. 'src/config/' .. file) then
|
||||||
|
aspawn('touch ' .. gfilesystem.get_configuration_dir() .. 'src/config/' .. file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Create config directories if they don't exist
|
||||||
|
for _, dir in pairs { 'files/desktop/icons' } do
|
||||||
|
if not gfilesystem.dir_readable(gfilesystem.get_configuration_dir() .. 'src/config/' .. dir) then
|
||||||
|
gfilesystem.make_directories(gfilesystem.get_configuration_dir() .. 'src/config/' .. dir)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return ret
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
return instance
|
||||||
Reference in New Issue
Block a user