diff --git a/README.md b/README.md index 1c5819e..cb8e8ff 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,15 @@ # arti-pack -A Neovim plugin manager that installs plugins from an artifact store instead of -git. It downloads tagged upstream source archives through -[artifactapi](https://artifactapi.k8s.syd1.au.unkin.net) and unpacks them into -Neovim's native package path — see `:h packages`. +A Neovim plugin manager that installs plugins from an artifact repository +instead of git. It downloads tagged upstream source archives over HTTP and +unpacks them into Neovim's native package path — see `:h packages`. -No git, no submodules, no network access to GitHub from the editor: every -plugin arrives as a cached, immutable, tagged artifact from the same proxy that -serves RPMs, containers and Terraform providers. +It works with any HTTP artifact repository that serves an upstream tag archive +at a stable URL — a JFrog Artifactory remote GitHub repository, or any caching +proxy with the same path shape. Nothing is cloned, no git binary is needed, and +the editor never has to reach GitHub: every plugin arrives as a cached, +immutable, versioned artifact from the same store your builds already pull +from. ## Requirements @@ -42,7 +44,7 @@ Once installed it can carry itself, since `url` bypasses the registry: ```lua require('arti-pack').setup({ - registry = 'https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github', + registry = 'https://artifacts.example.com/artifactory/github-remote', plugins = { { 'nvim-lua/plenary.nvim', tag = 'v0.1.4' }, { 'folke/which-key.nvim', tag = 'v3.13.3', opt = true }, @@ -52,6 +54,9 @@ require('arti-pack').setup({ }) ``` +`registry` is the one option you have to set: the URL prefix your artifact +repository serves upstream tag archives under. + Every plugin needs an explicit `tag` — that is the point. Plugins install to `stdpath('data')/site/pack/arti-pack/start/`, or `.../opt/` when `opt = true`. @@ -71,7 +76,7 @@ Every plugin needs an explicit `tag` — that is the point. Plugins install to | Option | Default | Meaning | | ------------- | ------- | ------------------------------------------- | -| `registry` | the estate artifactapi github remote | Proxy prefix placed in front of `owner/repo` | +| `registry` | *site-specific* | Archive URL prefix placed in front of `owner/repo` | | `auto_sync` | `true` | Sync missing and changed plugins on startup | | `concurrency` | `4` | Plugins downloaded in parallel | | `timeout` | `120` | Per-download timeout in seconds | @@ -91,12 +96,15 @@ Every plugin needs an explicit `tag` — that is the point. Plugins install to ///archive/refs/tags/. ``` -which for the defaults is +which for the example above is ``` -https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/nvim-lua/plenary.nvim/archive/refs/tags/v0.1.4.zip +https://artifacts.example.com/artifactory/github-remote/nvim-lua/plenary.nvim/archive/refs/tags/v0.1.4.zip ``` +That is GitHub's own tag-archive path shape, so a remote repository proxying +`github.com` resolves it unchanged. + Archives are cached under `stdpath('cache')/arti-pack`, checked for a real zip or gzip magic header before being trusted, and unpacked into a staging directory. Tag archives wrap their contents in a single `-` diff --git a/doc/arti-pack.txt b/doc/arti-pack.txt index e6fa6b0..3454665 100644 --- a/doc/arti-pack.txt +++ b/doc/arti-pack.txt @@ -12,9 +12,14 @@ CONTENTS *arti-pack-contents* ============================================================================== 1. INTRODUCTION *arti-pack-introduction* -arti-pack installs plugins from tagged upstream source archives served through -artifactapi, and unpacks them into Neovim's native package path. See |packages| -for how Neovim loads what arti-pack writes. +arti-pack installs plugins from tagged upstream source archives served over +HTTP by an artifact repository, and unpacks them into Neovim's native package +path. See |packages| for how Neovim loads what arti-pack writes. + +Any artifact repository that serves an upstream tag archive at a stable URL +works — a JFrog Artifactory remote GitHub repository, or any caching proxy +with the same path shape. Nothing is cloned and the editor never reaches +GitHub itself. Requires curl, and unzip or tar. @@ -24,7 +29,7 @@ Requires curl, and unzip or tar. *arti-pack.setup()* >lua require('arti-pack').setup({ - registry = 'https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github', + registry = 'https://artifacts.example.com/artifactory/github-remote', plugins = { { 'nvim-lua/plenary.nvim', tag = 'v0.1.4' }, { 'folke/which-key.nvim', tag = 'v3.13.3', opt = true }, @@ -33,7 +38,9 @@ Requires curl, and unzip or tar. < Options: - registry Proxy prefix placed in front of "owner/repo". + registry Archive URL prefix placed in front of "owner/repo". The + shipped default is site-specific; set it to your own + artifact repository. plugins List of plugin specs. See |arti-pack-specs|. auto_sync Sync missing and changed plugins on startup. Default true. concurrency Plugins downloaded in parallel. Default 4. diff --git a/tests/spec_spec.lua b/tests/spec_spec.lua index eca0019..6d9ae04 100644 --- a/tests/spec_spec.lua +++ b/tests/spec_spec.lua @@ -1,7 +1,7 @@ local t = require('tests.harness') local spec = require('arti-pack.spec') -local REGISTRY = 'https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github' +local REGISTRY = 'https://artifacts.example.com/artifactory/github-remote' t.describe('spec.parse', function() t.it('parses a full table spec', function()