58 lines
1.7 KiB
Fennel
58 lines
1.7 KiB
Fennel
(let [mod {}
|
|
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 run-cmd [program]
|
|
(vim.system program {:cwd (vim.loop.cwd)}))
|
|
|
|
(fn open-split [program]
|
|
(let [args [:cli
|
|
:split-pane
|
|
:--bottom
|
|
:--percent
|
|
:60
|
|
:--cwd
|
|
(vim.loop.cwd)
|
|
"--"]]
|
|
(each [_ value (ipairs program)]
|
|
(table.insert args value))
|
|
(wezterm.exec args
|
|
(fn [result]
|
|
(when (not= result.code 0)
|
|
(vim.notify "wezterm: Error opening split window"
|
|
vim.log.levels.ERROR []))))))
|
|
|
|
(fn mod.open-repo []
|
|
(case mod.type
|
|
:github nil
|
|
:gitlab (run-cmd [:glab :repo :view :--web])
|
|
:forgejo (run-cmd [:tea :open])))
|
|
|
|
(fn mod.open-merge-request []
|
|
(case mod.type
|
|
:github nil
|
|
:gitlab (run-cmd [:glab :mr :view :--web])
|
|
:forgejo nil))
|
|
|
|
(fn mod.open-ci []
|
|
(case mod.type
|
|
:github nil
|
|
:gitlab (open-split [(exe :glab) :pipeline :ci :view])
|
|
:forgejo nil))
|
|
|
|
(fn mod.run-ci []
|
|
(case mod.type
|
|
:github nil
|
|
:gitlab (do
|
|
(run-cmd [:glab :pipeline :run])
|
|
(open-split [(exe :glab) :pipeline :ci :view]))
|
|
:forgejo nil))
|
|
|
|
mod)
|