mirror of
https://github.com/taigrr/glaze.nvim.git
synced 2026-04-02 03:09:10 -07:00
- auto_install (default: true) — install missing binaries on register - auto_check (default: true) — check for available updates periodically - auto_update (default: false) — auto-update when newer versions found - Disabling auto_check also disables auto_update - Updated README and help docs
229 lines
8.5 KiB
Plaintext
229 lines
8.5 KiB
Plaintext
*glaze.txt* 🍩 Centralized Go binary management for Neovim plugins
|
|
|
|
Author: Tai Groot <tai@taigrr.com>
|
|
License: MIT
|
|
Homepage: https://github.com/taigrr/glaze.nvim
|
|
|
|
==============================================================================
|
|
CONTENTS *glaze-contents*
|
|
|
|
1. Introduction ........................... |glaze-introduction|
|
|
2. Setup .................................. |glaze-setup|
|
|
3. Commands ............................... |glaze-commands|
|
|
4. Keybinds ............................... |glaze-keybinds|
|
|
5. API .................................... |glaze-api|
|
|
6. Configuration .......................... |glaze-config|
|
|
7. Highlights ............................. |glaze-highlights|
|
|
8. Auto-update Checking ................... |glaze-auto-check|
|
|
9. For Plugin Authors ..................... |glaze-plugin-authors|
|
|
|
|
==============================================================================
|
|
1. INTRODUCTION *glaze-introduction*
|
|
|
|
Glaze (Go + Lazy = Glaze 🍩) is a centralized manager for Go binaries used by
|
|
Neovim plugins. Instead of each plugin implementing its own binary installer,
|
|
Glaze provides:
|
|
|
|
- A unified lazy.nvim-style UI for managing all Go binaries
|
|
- Parallel installation with progress tracking
|
|
- Cursor-aware keybinds for individual binary control
|
|
- Automatic update checking with notifications
|
|
- GOBIN/GOPATH awareness
|
|
- A simple registration API for plugin authors
|
|
|
|
==============================================================================
|
|
2. SETUP *glaze-setup*
|
|
|
|
Using lazy.nvim:
|
|
>lua
|
|
{
|
|
"taigrr/glaze.nvim",
|
|
config = function()
|
|
require("glaze").setup({})
|
|
end,
|
|
}
|
|
<
|
|
|
|
==============================================================================
|
|
3. COMMANDS *glaze-commands*
|
|
|
|
*:Glaze*
|
|
:Glaze Open the Glaze UI window.
|
|
|
|
*:GlazeUpdate*
|
|
:GlazeUpdate [name] Update all registered binaries, or a specific one.
|
|
|
|
*:GlazeInstall*
|
|
:GlazeInstall [name] Install missing binaries, or a specific one.
|
|
|
|
*:GlazeCheck*
|
|
:GlazeCheck Manually check for available updates.
|
|
|
|
==============================================================================
|
|
4. KEYBINDS *glaze-keybinds*
|
|
|
|
These keybinds are active in the Glaze UI window:
|
|
|
|
Key Action ~
|
|
`U` Update ALL registered binaries
|
|
`u` Update the binary under the cursor
|
|
`I` Install all missing binaries
|
|
`i` Install the binary under the cursor
|
|
`x` Abort all running tasks
|
|
`<CR>` Toggle detail expansion (URL, path, version, errors)
|
|
`q` Close the Glaze window
|
|
`<Esc>` Close the Glaze window
|
|
|
|
==============================================================================
|
|
5. API *glaze-api*
|
|
|
|
*glaze.setup()*
|
|
glaze.setup({opts})
|
|
Initialize Glaze with optional configuration.
|
|
|
|
*glaze.register()*
|
|
glaze.register({name}, {url}, {opts?})
|
|
Register a binary for management.
|
|
|
|
Parameters: ~
|
|
{name} Binary/executable name (string)
|
|
{url} Go module URL without version (string)
|
|
{opts} Optional table with:
|
|
- plugin: Name of the registering plugin (string)
|
|
- callback: Function called after install/update (function)
|
|
|
|
*glaze.unregister()*
|
|
glaze.unregister({name})
|
|
Remove a binary from management.
|
|
|
|
*glaze.binaries()*
|
|
glaze.binaries()
|
|
Returns all registered binaries as a table.
|
|
|
|
*glaze.is_installed()*
|
|
glaze.is_installed({name})
|
|
Returns true if the binary is found in PATH, $GOBIN, $GOPATH/bin,
|
|
or ~/go/bin.
|
|
|
|
*glaze.bin_path()*
|
|
glaze.bin_path({name})
|
|
Returns the full path to the binary, or nil if not found.
|
|
|
|
*glaze.status()*
|
|
glaze.status({name})
|
|
Returns "installed", "missing", or "unknown".
|
|
|
|
*glaze-runner-api*
|
|
Runner API (require("glaze.runner")):
|
|
|
|
runner.update({names}) Update specific binaries
|
|
runner.update_all() Update all registered binaries
|
|
runner.install({names}) Install specific binaries
|
|
runner.install_missing() Install all missing binaries
|
|
runner.abort() Stop all running tasks
|
|
runner.is_running() Check if tasks are running
|
|
runner.tasks() Get current task list
|
|
runner.stats() Get task statistics
|
|
|
|
*glaze-checker-api*
|
|
Checker API (require("glaze.checker")):
|
|
|
|
checker.check() Check for updates (with notifications)
|
|
checker.auto_check() Check only if enough time has passed
|
|
checker.get_update_info() Get cached update info table
|
|
|
|
==============================================================================
|
|
6. CONFIGURATION *glaze-config*
|
|
|
|
Default configuration:
|
|
>lua
|
|
require("glaze").setup({
|
|
ui = {
|
|
border = "rounded",
|
|
size = { width = 0.7, height = 0.8 },
|
|
icons = {
|
|
pending = "○",
|
|
running = "◐",
|
|
done = "●",
|
|
error = "✗",
|
|
binary = "",
|
|
},
|
|
},
|
|
concurrency = 4,
|
|
go_cmd = { "go" }, -- Auto-detects goenv
|
|
auto_install = {
|
|
enabled = true, -- Auto-install missing binaries on register
|
|
silent = false, -- Suppress install notifications
|
|
},
|
|
auto_check = {
|
|
enabled = true, -- Auto-check for updates (disabling also disables auto_update)
|
|
frequency = "daily", -- "daily", "weekly", or hours (number)
|
|
},
|
|
auto_update = {
|
|
enabled = false, -- Auto-update when newer versions found (requires auto_check)
|
|
},
|
|
})
|
|
<
|
|
|
|
==============================================================================
|
|
7. HIGHLIGHTS *glaze-highlights*
|
|
|
|
All highlight groups are prefixed with "Glaze":
|
|
|
|
GlazeH1 Main title
|
|
GlazeH2 Section headers
|
|
GlazeBinary Binary names
|
|
GlazeUrl Module URLs
|
|
GlazePlugin Plugin names
|
|
GlazeDone Success status
|
|
GlazeError Error status
|
|
GlazeRunning In-progress status
|
|
GlazeProgressDone Progress bar (filled)
|
|
GlazeProgressTodo Progress bar (empty)
|
|
GlazeVersion Version info
|
|
GlazeTime Timing info
|
|
|
|
==============================================================================
|
|
8. AUTO-UPDATE CHECKING *glaze-auto-check*
|
|
|
|
Glaze can automatically check for newer versions of your registered binaries.
|
|
|
|
When enabled, Glaze checks on setup if enough time has passed since the last
|
|
check. It uses `go list -m -json <module>@latest` to find the latest version
|
|
and `go version -m <binary>` to determine the installed version.
|
|
|
|
State is stored in: `vim.fn.stdpath("data") .. "/glaze/state.json"`
|
|
|
|
Use `:GlazeCheck` to manually trigger a check at any time.
|
|
|
|
In the UI, binaries with available updates show a ⬆ indicator with version
|
|
info (e.g., "v1.0.0 → v1.1.0").
|
|
|
|
==============================================================================
|
|
9. FOR PLUGIN AUTHORS *glaze-plugin-authors*
|
|
|
|
Register your binaries in your plugin's setup:
|
|
>lua
|
|
local ok, glaze = pcall(require, "glaze")
|
|
if ok then
|
|
glaze.register("mytool", "github.com/me/mytool", {
|
|
plugin = "myplugin.nvim",
|
|
callback = function(success)
|
|
if success then
|
|
vim.notify("mytool updated!")
|
|
end
|
|
end,
|
|
})
|
|
end
|
|
<
|
|
|
|
You can still provide plugin-specific update commands:
|
|
>lua
|
|
vim.api.nvim_create_user_command("MyPluginUpdate", function()
|
|
require("glaze.runner").update({ "mytool" })
|
|
end, {})
|
|
<
|
|
|
|
==============================================================================
|
|
vim:tw=78:ts=8:ft=help:norl:
|