@revotools/cli 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/dist/revo +3263 -0
  4. package/package.json +34 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 dean0x
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,198 @@
1
+ # Revo
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+
5
+ Claude-first multi-repo workspace manager.
6
+
7
+ Revo is a fork of [Mars](https://github.com/dean0x/mars). It keeps everything
8
+ Mars gives you — tag-based filtering, coordinated branches, zero dependencies —
9
+ and adds features designed for working with coding agents:
10
+
11
+ - **`revo context`** scans your repos and writes a root-level `CLAUDE.md` so
12
+ Claude Code can understand the whole workspace at a glance.
13
+ - **`revo feature <name>`** creates a coordinated branch and shared context
14
+ file across matching repos.
15
+ - **`revo commit`**, **`revo push`**, **`revo pr`** let you commit, push, and
16
+ open PRs across the stack in one step.
17
+ - **`depends_on`** in `revo.yaml` feeds a topological sort into the generated
18
+ CLAUDE.md so the agent knows what to change first.
19
+
20
+ Pure bash 3.2+, works on macOS out of the box, no runtime dependencies beyond
21
+ `git` (and optionally `gh` for `revo pr`).
22
+
23
+ ## Quick Start
24
+
25
+ ```bash
26
+ mkdir my-project && cd my-project
27
+ revo init
28
+
29
+ revo add git@github.com:org/shared-types.git --tags shared
30
+ revo add git@github.com:org/backend.git --tags backend,api --depends-on shared-types
31
+ revo add git@github.com:org/frontend.git --tags frontend,web --depends-on backend
32
+
33
+ revo clone # CLAUDE.md is auto-generated after first clone
34
+ revo context # regenerate it any time repos change
35
+ ```
36
+
37
+ Then point Claude Code at the workspace directory and it will read `CLAUDE.md`
38
+ on its own.
39
+
40
+ ## Claude Code Workflow
41
+
42
+ ```
43
+ revo init
44
+
45
+ revo add (repos, with --depends-on)
46
+
47
+ revo clone ── auto-generates CLAUDE.md
48
+
49
+ Claude Code reads CLAUDE.md
50
+
51
+ revo feature clock-student ── branch + .revo/features/clock-student.md
52
+
53
+ Claude Code works across repos
54
+
55
+ revo commit "wire up clock endpoint"
56
+
57
+ revo push
58
+
59
+ revo pr "Clock endpoint for students" ── coordinated PRs via gh
60
+ ```
61
+
62
+ ## Commands
63
+
64
+ ### Workspace (from Mars)
65
+
66
+ | Command | Description |
67
+ |---------|-------------|
68
+ | `revo init` | Initialize a new workspace |
69
+ | `revo add <url> [--tags t1,t2] [--depends-on r1,r2]` | Add a repository to config |
70
+ | `revo clone [--tag TAG]` | Clone configured repositories |
71
+ | `revo list [--tag TAG]` | List configured repositories |
72
+ | `revo status [--tag TAG]` | Show status of all repositories |
73
+ | `revo sync [--tag TAG] [--rebase]` | Pull latest changes |
74
+ | `revo branch <name> [--tag TAG]` | Create branch on repositories |
75
+ | `revo checkout <branch> [--tag TAG]` | Checkout branch on repositories |
76
+ | `revo exec "<cmd>" [--tag TAG]` | Run command in each repository |
77
+
78
+ ### Claude-first (new in Revo)
79
+
80
+ | Command | Description |
81
+ |---------|-------------|
82
+ | `revo context` | Scan repos and regenerate workspace `CLAUDE.md` |
83
+ | `revo feature <name> [--tag TAG]` | Coordinated feature branch + `.revo/features/<name>.md` |
84
+ | `revo commit <msg> [--tag TAG]` | Commit across dirty repos |
85
+ | `revo push [--tag TAG]` | Push branches across repos |
86
+ | `revo pr <title> [--tag TAG] [--body BODY]` | Create coordinated PRs via `gh` |
87
+
88
+ ## Tag Filtering
89
+
90
+ Target subsets of repos using `--tag`:
91
+
92
+ ```bash
93
+ # Only clone frontend repos
94
+ revo clone --tag frontend
95
+
96
+ # Create coordinated feature on backend repos only
97
+ revo feature auth-overhaul --tag backend
98
+
99
+ # Run npm install on all frontend repos
100
+ revo exec "npm install" --tag frontend
101
+ ```
102
+
103
+ ## Configuration
104
+
105
+ ### revo.yaml
106
+
107
+ ```yaml
108
+ version: 1
109
+
110
+ workspace:
111
+ name: "my-project"
112
+
113
+ repos:
114
+ - url: git@github.com:org/shared-types.git
115
+ tags: [shared, types]
116
+
117
+ - url: git@github.com:org/backend.git
118
+ path: api # optional custom path
119
+ tags: [backend, api]
120
+ depends_on: [shared-types] # optional — drives dep order in CLAUDE.md
121
+
122
+ - url: git@github.com:org/frontend.git
123
+ tags: [frontend, web]
124
+ depends_on: [backend]
125
+
126
+ defaults:
127
+ branch: main
128
+ ```
129
+
130
+ `depends_on` references repos by their path basename (the bit derived from
131
+ the URL, or the explicit `path` if set).
132
+
133
+ Migrating from Mars? `mars.yaml` is still honored as a fallback, so `revo`
134
+ works in existing Mars workspaces without renaming anything.
135
+
136
+ ## Workspace Structure
137
+
138
+ ```
139
+ my-project/
140
+ ├── revo.yaml # Workspace configuration
141
+ ├── CLAUDE.md # Auto-generated by revo context
142
+ ├── .gitignore # Contains 'repos/' and '.revo/'
143
+ ├── .revo/ # Revo-local state (gitignored)
144
+ │ └── features/ # Feature context files
145
+ │ ├── clock-student.md
146
+ │ └── auth-overhaul.md
147
+ └── repos/ # Cloned repositories (gitignored)
148
+ ├── shared-types/
149
+ ├── backend/
150
+ └── frontend/
151
+ ```
152
+
153
+ ## Why not...
154
+
155
+ - **...a monorepo?** Because these repos are real, separately owned codebases
156
+ with their own CI, deploys, and histories. A monorepo forces a reorg Revo
157
+ doesn't need.
158
+ - **...plain sibling directories?** Because you lose tag filtering, coordinated
159
+ branches, coordinated PRs, and — most importantly — a shared `CLAUDE.md`
160
+ that the agent can actually read.
161
+ - **...a bespoke orchestrator?** Because Revo does nothing at runtime. It
162
+ doesn't build, deploy, or test. It just shapes the workspace.
163
+
164
+ ## Installation
165
+
166
+ ### Manual (recommended while pre-release)
167
+
168
+ ```bash
169
+ git clone https://github.com/marcus.salinas/revo.git
170
+ cd revo
171
+ ./build.sh
172
+ cp dist/revo ~/.local/bin/ # or anywhere in PATH
173
+ ```
174
+
175
+ ### Shell Script
176
+
177
+ ```bash
178
+ curl -fsSL https://raw.githubusercontent.com/marcus.salinas/revo/main/install.sh | bash
179
+ ```
180
+
181
+ ### npm
182
+
183
+ ```bash
184
+ npm install -g revo-cli
185
+ ```
186
+
187
+ ## Contributing
188
+
189
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, architecture, and release process.
190
+
191
+ ## Credits
192
+
193
+ Revo is a fork of [Mars](https://github.com/dean0x/mars) by [@dean0x](https://github.com/dean0x).
194
+ The workspace layer is Mars's work; Revo adds the Claude-first commands on top.
195
+
196
+ ## License
197
+
198
+ MIT