From fb10b4906aadaeff295883d171c05246943e5571 Mon Sep 17 00:00:00 2001 From: Hennadii Chernyshchyk Date: Sat, 10 Sep 2022 14:05:32 +0300 Subject: Initial commit --- lua/tasks/project_config.lua | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lua/tasks/project_config.lua (limited to 'lua/tasks/project_config.lua') diff --git a/lua/tasks/project_config.lua b/lua/tasks/project_config.lua new file mode 100644 index 0000000..2d366c6 --- /dev/null +++ b/lua/tasks/project_config.lua @@ -0,0 +1,29 @@ +local config = require('tasks.config') +local Path = require('plenary.path') + +--- Contains all fields from configuration. +---@class ProjectConfig +local ProjectConfig = {} +ProjectConfig.__index = ProjectConfig + +--- Reads project configuration JSON into a table. +---@return ProjectConfig +function ProjectConfig.new() + local project_config = {} + local params_file = Path:new(config.params_file) + if params_file:is_file() then + project_config = vim.json.decode(params_file:read()) + else + project_config = {} + end + project_config = vim.tbl_extend('keep', project_config, config.default_params) + return setmetatable(project_config, ProjectConfig) +end + +--- Writes all values as JSON to disk. +function ProjectConfig:write() + local params_file = Path:new(config.params_file) + params_file:write(vim.json.encode(self), 'w') +end + +return ProjectConfig -- cgit v1.2.3