From 79572a45dde93bc750e99b0d641d1f460e64b6cc Mon Sep 17 00:00:00 2001 From: femkrotek Date: Fri, 26 Jun 2026 16:45:04 +0200 Subject: [PATCH] feat: add provider system --- lua/chai/config.lua | 2 +- lua/chai/providers.lua | 26 ++++++++++++++++++++++++++ lua/chai/providers/gitea/init.lua | 12 ++++++++++++ lua/chai/providers/github/init.lua | 12 ++++++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 lua/chai/providers.lua create mode 100644 lua/chai/providers/gitea/init.lua create mode 100644 lua/chai/providers/github/init.lua 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