Merge branch 'benvin/scaffold' into benvin/release-pipeline
This commit is contained in:
@@ -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/<name>`, or `.../opt/<name>` 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
|
||||
<registry>/<owner>/<repo>/archive/refs/tags/<tag>.<ext>
|
||||
```
|
||||
|
||||
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 `<repo>-<version>`
|
||||
|
||||
+12
-5
@@ -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.
|
||||
|
||||
+1
-1
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user