forked from cloudmanic/herdr-plus
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathherdr-plugin.toml
More file actions
91 lines (82 loc) · 4.27 KB
/
Copy pathherdr-plugin.toml
File metadata and controls
91 lines (82 loc) · 4.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#
# Date: 2026-06-15
# Author: Spicer Matthews (spicer@cloudmanic.com)
# Copyright: 2026 Cloudmanic Labs, LLC. All rights reserved.
#
# herdr-plugin.toml registers herdr-plus with herdr as a first-class plugin.
# Install it with `herdr plugin install cloudmanic/herdr-plus` (herdr clones this
# repo, runs the [[build]] step below, and registers the entry points), or for
# local development `herdr plugin link .` from a checkout.
#
# This is the plugin-first rebuild. It ships Projects (declarative workspace
# templates you fuzzy-pick) and Quick Actions (a fuzzy launcher for one-off
# scripts), plus a `ping` smoke test that proves the plugin loop end to end.
id = "cloudmanic.herdr-plus"
name = "Herdr Plus"
# Kept in sync with internal/version/version.go by .github/workflows/release.yml.
version = "0.1.16"
min_herdr_version = "0.7.0"
description = "An extension for herdr — a collection of tools that make it better. Projects: fuzzy-pick a declarative template to spin up a whole workspace — every tab, pane, and startup command. Quick Actions: a fuzzy launcher for one-off scripts, run in the directory you launched from."
platforms = ["linux", "macos"]
# Produce the binary at install time. herdr runs this once, after you confirm a
# GitHub install and before registering the plugin. The script prefers a local Go
# toolchain (an exact build of the cloned source) and falls back to downloading
# the latest prebuilt release binary, so installing works with or without Go.
# Either way the result is ./bin/herdr-plus, which the entry points below invoke.
[[build]]
command = ["sh", "scripts/build.sh"]
# projects — the flagship action. Opens a full-screen browser to fuzzy-pick a
# project (a declarative set of tabs/panes from ~/.config/herdr-plus/projects/)
# and spins up its whole herdr workspace. Bind a key to it or run it from herdr's
# action menu — see the README.
[[actions]]
id = "projects"
title = "Herdr Plus: Projects"
command = ["./bin/herdr-plus", "projects"]
# picker — the projects browser as a herdr-managed pane (no throwaway workspace).
# Opened by the projects action via `herdr plugin pane open`; herdr gives it a
# zoomed pane, runs the browser, and tears the pane down when it exits.
[[panes]]
id = "picker"
title = "Herdr Plus: Projects"
placement = "zoomed"
command = ["./bin/herdr-plus", "projects-ui"]
# quick-actions — a fuzzy launcher for one-off actions/scripts (command, select,
# or form), loaded from ~/.config/herdr-plus/quick-actions/ (plus a repo's own
# .herdr-plus/quick-actions/). Commands template against and run in the directory
# you launched from. Bind a key or run it from herdr's action menu.
[[actions]]
id = "quick-actions"
title = "Herdr Plus: Quick Actions"
command = ["./bin/herdr-plus", "quick-actions"]
# quick-actions-picker — the action picker as a herdr-managed overlay pane. The
# quick-actions action opens it (passing the launch context), and herdr restores
# your previous focus when it closes.
[[panes]]
id = "quick-actions-picker"
title = "Quick Actions"
placement = "overlay"
command = ["./bin/herdr-plus", "quick-actions-ui"]
# ping — a smoke-test action that proves the plugin loop end to end: it talks to
# herdr over the socket and prints the focused pane/workspace. Its output is
# captured in `herdr plugin log list --plugin cloudmanic.herdr-plus`.
[[actions]]
id = "ping"
title = "Herdr Plus: ping"
command = ["./bin/herdr-plus", "ping"]
# worktree.created / worktree.opened — herdr fires worktree.created when it
# creates a new git worktree and worktree.opened when it opens an existing one
# into a workspace (e.g. the right-click dialog for a branch that already has a
# worktree). Both hand us a fresh workspace that wants tabs, so we subscribe to
# both — otherwise opening an existing worktree would silently skip the layout.
# The handler looks for a matching layout in ~/.config/herdr-plus/worktrees/ and
# lays its tabs/panes into the workspace. It is a quiet no-op when no layout
# matches, and it skips a workspace that already has tabs (so a layout never
# applies twice even if both events fire). herdr runs this for you — never invoke
# it by hand. Output is captured in the plugin log.
[[events]]
on = "worktree.created"
command = ["./bin/herdr-plus", "on-worktree"]
[[events]]
on = "worktree.opened"
command = ["./bin/herdr-plus", "on-worktree"]