Neovim plugin to browse JFrog Artifactory artifacts from a project root (for example org/repo) using:
- a tree picker (Telescope by default, with right-side preview; can use Snacks or
vim.ui.select) - an optional vertical tree explorer
It uses jf rt s "<project>/**" --format=json under the hood.
Results are sorted by most recent first when created/modified metadata is available.
Before search/download, the plugin checks that JFrog CLI is configured and reachable; if not, it prompts to run jf login.
- Neovim >= 0.10
jfCLI installed and authenticated
{
"YOUR_GITHUB_USERNAME/jfrog-artifactory.nvim",
config = function()
require("jfrog_artifactory").setup()
end,
}" Recommended: browse by project with a picker tree
:JfArtifactsBrowse org/repo
" Or rely on inferred project from current git repo/cwd
:JfArtifactsBrowse
" Alias for browse
:JfArtifactsPicker org/repo
" Optional: open vertical tree explorer for same project
:JfArtifactsSearch org/repo
" Re-run last browse/search
:JfArtifactsRefreshSelecting a directory in the picker opens a buffer with its contents (Octo-like flow).
Browse list entries now append branch as (<branch>) using artifact property vcs.branch when available.
<CR>on folder: expand/collapse<CR>on file: expand/collapse artifact metadatad: download selected file or folder subtreey: copy selected artifact pathq: close buffer
The content buffer includes a Build Info header (project, branch, path, file count, fetch time).
<CR>: expand/collapse folder<CR>on file: triggeron_selectcallback (default: yank artifact path)y: yank artifact pathp: open picker with current resultsr: refresh current searchq: close explorer
require("jfrog_artifactory").setup({
default_project = nil, -- e.g. "org/repo"
infer_project_from_git = true, -- infer owner/repo from git remote or cwd path
jfrog_command = { "jf", "rt", "s" },
jfrog_ping_command = { "jf", "rt", "ping" },
jfrog_download_command = { "jf", "rt", "dl" },
picker_backend = "telescope", -- telescope | snacks | vim_ui | auto
download_root = ".jfrog", -- created under current working directory
explorer = {
width = 45,
},
on_select = function(item)
-- item = { repo, path, name, full }
vim.fn.setreg("+", item.full)
vim.notify("Copied: " .. item.full)
end,
})jfrog-artifactory.nvim/
├── LICENSE
├── README.md
├── plugin/
│ └── jfrog_artifactory.lua
└── lua/
└── jfrog_artifactory/
├── commands.lua
├── init.lua
├── jfrog.lua
├── tree.lua
└── ui.lua