1
0
Fork 0

nvim: detect remote repo type based on url

This commit is contained in:
Daniel Kempkens 2024-05-01 13:21:41 +02:00
parent d54b411dcd
commit ac3aaf3f7b
Signed by: daniel
SSH key fingerprint: SHA256:Ks/MyhQYcPRQiwMKLAKquWCdCPe3JXlb1WttgnAoSeM
2 changed files with 14 additions and 9 deletions

View file

@ -1,5 +1,12 @@
(let [mod {} (let [mod {}
wezterm (require :wezterm)] wezterm (require :wezterm)
remote-origin (vim.fn.system "git remote get-url origin")]
(match remote-origin
(where r (r:find :git.kempkens.io)) (set mod.type :forgejo)
(where r (r:find :git.app.nedeco.de)) (set mod.type :gitlab)
(where r (r:find :github.com)) (set mod.type :github)
_ (set mod.type (or vim.env.REMOTE_REPO_TYPE :default)))
(fn exe [bin] (vim.fn.exepath bin)) (fn exe [bin] (vim.fn.exepath bin))
(fn run-cmd [program] (fn run-cmd [program]
@ -23,25 +30,25 @@
vim.log.levels.ERROR [])))))) vim.log.levels.ERROR []))))))
(fn mod.open-repo [] (fn mod.open-repo []
(case vim.env.REMOTE_REPO_TYPE (case mod.type
:github nil :github nil
:gitlab (run-cmd [:glab :repo :view :--web]) :gitlab (run-cmd [:glab :repo :view :--web])
:forgejo (run-cmd [:tea :open]))) :forgejo (run-cmd [:tea :open])))
(fn mod.open-merge-request [] (fn mod.open-merge-request []
(case vim.env.REMOTE_REPO_TYPE (case mod.type
:github nil :github nil
:gitlab (run-cmd [:glab :mr :view :--web]) :gitlab (run-cmd [:glab :mr :view :--web])
:forgejo nil)) :forgejo nil))
(fn mod.open-ci [] (fn mod.open-ci []
(case vim.env.REMOTE_REPO_TYPE (case mod.type
:github nil :github nil
:gitlab (open-split [(exe :glab) :pipeline :ci :view]) :gitlab (open-split [(exe :glab) :pipeline :ci :view])
:forgejo nil)) :forgejo nil))
(fn mod.run-ci [] (fn mod.run-ci []
(case vim.env.REMOTE_REPO_TYPE (case mod.type
:github nil :github nil
:gitlab (do :gitlab (do
(run-cmd [:glab :pipeline :run]) (run-cmd [:glab :pipeline :run])

View file

@ -151,15 +151,13 @@
;; git ;; git
(set mod.git (set mod.git
{:condition heirline-conditions.is_git_repo {:condition heirline-conditions.is_git_repo
:static {:git-repo-type (or vim.env.REMOTE_REPO_TYPE :default) :static {:git-repo-icons {:github ""
:git-repo-icons {:github ""
:gitlab "" :gitlab ""
:forgejo "" :forgejo ""
:default ""}} :default ""}}
:init (fn [self] :init (fn [self]
(let [git-status vim.b.gitsigns_status_dict] (let [git-status vim.b.gitsigns_status_dict]
(set self.git-repo-icon (set self.git-repo-icon (. self :git-repo-icons repo.type))
(. self.git-repo-icons self.git-repo-type))
(set self.git-head git-status.head) (set self.git-head git-status.head)
(set self.git-added (or git-status.added 0)) (set self.git-added (or git-status.added 0))
(set self.git-removed (or git-status.removed 0)) (set self.git-removed (or git-status.removed 0))