diff --git a/lua/chai/config.lua b/lua/chai/config.lua index 7fd97cc..2b81039 100644 --- a/lua/chai/config.lua +++ b/lua/chai/config.lua @@ -1,7 +1,7 @@ local M = {} M.defaults = { - servers = {}, + providers = {}, } M.options = {} diff --git a/lua/chai/providers.lua b/lua/chai/providers.lua new file mode 100644 index 0000000..27b7b5f --- /dev/null +++ b/lua/chai/providers.lua @@ -0,0 +1,26 @@ +local M = {} + +local config = require('chai.config') + +local provider_instances = {} + +-- lazy loads providers of course +function M.get_provider(name) + if provider_instances[name] ~= nil then + return provider_instances[name] + end + + if config.options.providers[name] == nil then + error('unknown provider') + end + + local provider_config = config.options.providers[name] + + local provider = require('chai.providers.' .. provider_config.type) + + local provider_instance = provider.init(provider_config) + provider_instances[name] = provider_instance + return provider_instance +end + +return M diff --git a/lua/chai/providers/gitea/init.lua b/lua/chai/providers/gitea/init.lua new file mode 100644 index 0000000..b20486d --- /dev/null +++ b/lua/chai/providers/gitea/init.lua @@ -0,0 +1,12 @@ +local M + +local GiteaProvider = {} + +function M.init(config) + local provider = vim.deepcopy(GiteaProvider) + provider.config = config + + return provider +end + +return M diff --git a/lua/chai/providers/github/init.lua b/lua/chai/providers/github/init.lua new file mode 100644 index 0000000..5694f6f --- /dev/null +++ b/lua/chai/providers/github/init.lua @@ -0,0 +1,12 @@ +local M + +local GithubProvider = {} + +function M.init(config) + local provider = vim.deepcopy(GithubProvider) + provider.config = config + + return provider +end + +return M