gitgrip 0.2.4 → 0.3.1
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.
- package/README.md +98 -1
- package/dist/commands/pr/create.d.ts.map +1 -1
- package/dist/commands/pr/create.js +29 -8
- package/dist/commands/pr/create.js.map +1 -1
- package/dist/commands/pr/merge.d.ts.map +1 -1
- package/dist/commands/pr/merge.js +40 -33
- package/dist/commands/pr/merge.js.map +1 -1
- package/dist/commands/pr/status.d.ts.map +1 -1
- package/dist/commands/pr/status.js +15 -11
- package/dist/commands/pr/status.js.map +1 -1
- package/dist/commands/repo.d.ts +14 -0
- package/dist/commands/repo.d.ts.map +1 -0
- package/dist/commands/repo.js +106 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/git.d.ts +4 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +28 -2
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/github.d.ts +28 -4
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +65 -126
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/linker.d.ts +19 -4
- package/dist/lib/linker.d.ts.map +1 -1
- package/dist/lib/linker.js +107 -16
- package/dist/lib/linker.js.map +1 -1
- package/dist/lib/manifest.d.ts +25 -1
- package/dist/lib/manifest.d.ts.map +1 -1
- package/dist/lib/manifest.js +73 -5
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/platform/azure-devops.d.ts +83 -0
- package/dist/lib/platform/azure-devops.d.ts.map +1 -0
- package/dist/lib/platform/azure-devops.js +378 -0
- package/dist/lib/platform/azure-devops.js.map +1 -0
- package/dist/lib/platform/github.d.ts +82 -0
- package/dist/lib/platform/github.d.ts.map +1 -0
- package/dist/lib/platform/github.js +285 -0
- package/dist/lib/platform/github.js.map +1 -0
- package/dist/lib/platform/gitlab.d.ts +82 -0
- package/dist/lib/platform/gitlab.d.ts.map +1 -0
- package/dist/lib/platform/gitlab.js +331 -0
- package/dist/lib/platform/gitlab.js.map +1 -0
- package/dist/lib/platform/index.d.ts +60 -0
- package/dist/lib/platform/index.d.ts.map +1 -0
- package/dist/lib/platform/index.js +132 -0
- package/dist/lib/platform/index.js.map +1 -0
- package/dist/lib/platform/types.d.ts +162 -0
- package/dist/lib/platform/types.d.ts.map +1 -0
- package/dist/lib/platform/types.js +5 -0
- package/dist/lib/platform/types.js.map +1 -0
- package/dist/types.d.ts +39 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ Inspired by Android's [repo tool](https://source.android.com/docs/setup/create/r
|
|
|
21
21
|
## Features
|
|
22
22
|
|
|
23
23
|
- **Manifest-based configuration** - Define all your repos in a single YAML file
|
|
24
|
+
- **Multi-platform support** - Works with GitHub, GitLab, and Azure DevOps (even mixed in one workspace)
|
|
24
25
|
- **Synchronized branches** - Create and checkout branches across all repos at once
|
|
25
26
|
- **Linked PRs** - Create pull requests that reference each other across repos
|
|
26
27
|
- **Atomic merges** - All-or-nothing merge strategy ensures repos stay in sync
|
|
@@ -28,6 +29,15 @@ Inspired by Android's [repo tool](https://source.android.com/docs/setup/create/r
|
|
|
28
29
|
|
|
29
30
|
## Installation
|
|
30
31
|
|
|
32
|
+
### Homebrew (macOS/Linux)
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
brew tap laynepenney/tap
|
|
36
|
+
brew install gitgrip
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### npm
|
|
40
|
+
|
|
31
41
|
```bash
|
|
32
42
|
npm install -g gitgrip
|
|
33
43
|
```
|
|
@@ -106,6 +116,7 @@ gr sync
|
|
|
106
116
|
| `gr pr create` | Create linked PRs |
|
|
107
117
|
| `gr pr status` | Show PR status |
|
|
108
118
|
| `gr pr merge` | Merge all linked PRs |
|
|
119
|
+
| `gr repo add <url>` | Add a new repository to workspace |
|
|
109
120
|
| `gr forall -c "cmd"` | Run command in each repo |
|
|
110
121
|
|
|
111
122
|
### Command Details
|
|
@@ -158,6 +169,19 @@ Merge all linked PRs atomically.
|
|
|
158
169
|
| `--no-delete-branch` | Keep branches after merge |
|
|
159
170
|
| `-f, --force` | Merge even if checks pending |
|
|
160
171
|
|
|
172
|
+
#### `gr repo add <url>`
|
|
173
|
+
|
|
174
|
+
Add a new repository to the workspace. Parses the URL, updates the manifest, and optionally clones the repo.
|
|
175
|
+
|
|
176
|
+
| Option | Description |
|
|
177
|
+
|--------|-------------|
|
|
178
|
+
| `--path <path>` | Local path (default: `./<repo-name>`) |
|
|
179
|
+
| `--name <name>` | Name in manifest (default: from URL) |
|
|
180
|
+
| `--branch <branch>` | Default branch (default: `main`) |
|
|
181
|
+
| `--no-clone` | Only update manifest, skip cloning |
|
|
182
|
+
|
|
183
|
+
If the workspace is on a feature branch, the new repo will be checked out to that branch automatically.
|
|
184
|
+
|
|
161
185
|
#### `gr forall -c "<command>"`
|
|
162
186
|
|
|
163
187
|
Run a command in each repository (like AOSP's `repo forall`).
|
|
@@ -200,6 +224,76 @@ settings:
|
|
|
200
224
|
- **all-or-nothing** - All linked PRs must be approved before any can merge
|
|
201
225
|
- **independent** - PRs can be merged independently
|
|
202
226
|
|
|
227
|
+
## Multi-Platform Support
|
|
228
|
+
|
|
229
|
+
gitgrip supports multiple hosting platforms. The platform is auto-detected from the repository URL.
|
|
230
|
+
|
|
231
|
+
### Supported Platforms
|
|
232
|
+
|
|
233
|
+
| Platform | URL Patterns |
|
|
234
|
+
|----------|--------------|
|
|
235
|
+
| GitHub | `git@github.com:org/repo.git`, `https://github.com/org/repo.git` |
|
|
236
|
+
| GitLab | `git@gitlab.com:group/repo.git`, `https://gitlab.com/group/repo.git` |
|
|
237
|
+
| Azure DevOps | `git@ssh.dev.azure.com:v3/org/project/repo`, `https://dev.azure.com/org/project/_git/repo` |
|
|
238
|
+
|
|
239
|
+
### Authentication
|
|
240
|
+
|
|
241
|
+
Each platform requires its own authentication:
|
|
242
|
+
|
|
243
|
+
**GitHub:**
|
|
244
|
+
```bash
|
|
245
|
+
export GITHUB_TOKEN=your-token
|
|
246
|
+
# or
|
|
247
|
+
gh auth login
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**GitLab:**
|
|
251
|
+
```bash
|
|
252
|
+
export GITLAB_TOKEN=your-token
|
|
253
|
+
# or
|
|
254
|
+
glab auth login
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**Azure DevOps:**
|
|
258
|
+
```bash
|
|
259
|
+
export AZURE_DEVOPS_TOKEN=your-pat
|
|
260
|
+
# or
|
|
261
|
+
az login
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Mixed-Platform Workspaces
|
|
265
|
+
|
|
266
|
+
A single manifest can contain repos from different platforms:
|
|
267
|
+
|
|
268
|
+
```yaml
|
|
269
|
+
repos:
|
|
270
|
+
frontend:
|
|
271
|
+
url: git@github.com:org/frontend.git
|
|
272
|
+
path: ./frontend
|
|
273
|
+
|
|
274
|
+
backend:
|
|
275
|
+
url: git@gitlab.com:org/backend.git
|
|
276
|
+
path: ./backend
|
|
277
|
+
|
|
278
|
+
infra:
|
|
279
|
+
url: https://dev.azure.com/org/project/_git/infra
|
|
280
|
+
path: ./infra
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Self-Hosted Instances
|
|
284
|
+
|
|
285
|
+
For GitHub Enterprise, GitLab self-hosted, or Azure DevOps Server, add a `platform` config:
|
|
286
|
+
|
|
287
|
+
```yaml
|
|
288
|
+
repos:
|
|
289
|
+
internal:
|
|
290
|
+
url: git@gitlab.company.com:team/repo.git
|
|
291
|
+
path: ./internal
|
|
292
|
+
platform:
|
|
293
|
+
type: gitlab
|
|
294
|
+
baseUrl: https://gitlab.company.com
|
|
295
|
+
```
|
|
296
|
+
|
|
203
297
|
## Shorthand
|
|
204
298
|
|
|
205
299
|
Use `gr` as the primary command:
|
|
@@ -216,7 +310,10 @@ The long form `gitgrip` also works.
|
|
|
216
310
|
|
|
217
311
|
- Node.js >= 18.0.0
|
|
218
312
|
- Git
|
|
219
|
-
-
|
|
313
|
+
- Platform CLI (optional, for token auth fallback):
|
|
314
|
+
- GitHub: `gh` CLI
|
|
315
|
+
- GitLab: `glab` CLI
|
|
316
|
+
- Azure DevOps: `az` CLI
|
|
220
317
|
|
|
221
318
|
## License
|
|
222
319
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/pr/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/pr/create.ts"],"names":[],"mappings":"AAgBA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgQzE"}
|
|
@@ -3,7 +3,8 @@ import ora from 'ora';
|
|
|
3
3
|
import inquirer from 'inquirer';
|
|
4
4
|
import { loadManifest, getAllRepoInfo, loadState, saveState, getManifestRepoInfo } from '../../lib/manifest.js';
|
|
5
5
|
import { pathExists, getCurrentBranch, hasCommitsAhead, pushBranch, remoteBranchExists, isGitRepo, } from '../../lib/git.js';
|
|
6
|
-
import {
|
|
6
|
+
import { getPlatformAdapter } from '../../lib/platform/index.js';
|
|
7
|
+
import { generateManifestPRBody, getLinkedPRInfo } from '../../lib/linker.js';
|
|
7
8
|
/**
|
|
8
9
|
* Create linked PRs across all repositories with changes
|
|
9
10
|
*/
|
|
@@ -75,10 +76,12 @@ export async function createPR(options = {}) {
|
|
|
75
76
|
const totalChanges = withChanges.length + (manifestHasChanges ? 1 : 0);
|
|
76
77
|
console.log(`Found changes in ${totalChanges} repos:`);
|
|
77
78
|
for (const { repo } of withChanges) {
|
|
78
|
-
|
|
79
|
+
const platformLabel = repo.platformType !== 'github' ? ` (${repo.platformType})` : '';
|
|
80
|
+
console.log(` ${chalk.green('•')} ${repo.name}${chalk.dim(platformLabel)}`);
|
|
79
81
|
}
|
|
80
82
|
if (manifestHasChanges && manifestInfo) {
|
|
81
|
-
|
|
83
|
+
const platformLabel = manifestInfo.platformType !== 'github' ? ` (${manifestInfo.platformType})` : '';
|
|
84
|
+
console.log(` ${chalk.green('•')} ${manifestInfo.name}${chalk.dim(platformLabel)}`);
|
|
82
85
|
}
|
|
83
86
|
console.log('');
|
|
84
87
|
// Check if any need to be pushed first (including manifest)
|
|
@@ -151,15 +154,30 @@ export async function createPR(options = {}) {
|
|
|
151
154
|
draft: options.draft,
|
|
152
155
|
base: options.base,
|
|
153
156
|
};
|
|
154
|
-
// Create PRs in each repo
|
|
155
|
-
const linkedPRs =
|
|
157
|
+
// Create PRs in each repo using their respective platforms
|
|
158
|
+
const linkedPRs = [];
|
|
159
|
+
for (const repo of reposForPR) {
|
|
160
|
+
const platform = getPlatformAdapter(repo.platformType, repo.platform);
|
|
161
|
+
// Check if PR already exists
|
|
162
|
+
const existing = await platform.findPRByBranch(repo.owner, repo.repo, branchName);
|
|
163
|
+
if (existing) {
|
|
164
|
+
const info = await getLinkedPRInfo(repo, existing.number);
|
|
165
|
+
linkedPRs.push(info);
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
// Create PR
|
|
169
|
+
const pr = await platform.createPullRequest(repo.owner, repo.repo, branchName, prOptions.base ?? repo.default_branch, prOptions.title, prOptions.body ?? '', prOptions.draft);
|
|
170
|
+
const info = await getLinkedPRInfo(repo, pr.number);
|
|
171
|
+
linkedPRs.push(info);
|
|
172
|
+
}
|
|
156
173
|
// Create manifest PR if manifest has changes
|
|
157
174
|
let manifestPR = null;
|
|
158
175
|
if (manifestHasChanges && manifestInfo) {
|
|
159
176
|
try {
|
|
177
|
+
const manifestPlatform = getPlatformAdapter(manifestInfo.platformType, manifestInfo.platform);
|
|
160
178
|
// Generate manifest PR body with linked PR table
|
|
161
179
|
const manifestBody = generateManifestPRBody(title, linkedPRs, body);
|
|
162
|
-
const manifestPRResult = await createPullRequest(manifestInfo.owner, manifestInfo.repo, branchName, manifestInfo.default_branch, title, manifestBody, options.draft);
|
|
180
|
+
const manifestPRResult = await manifestPlatform.createPullRequest(manifestInfo.owner, manifestInfo.repo, branchName, manifestInfo.default_branch, title, manifestBody, options.draft);
|
|
163
181
|
manifestPR = {
|
|
164
182
|
repoName: manifestInfo.name,
|
|
165
183
|
owner: manifestInfo.owner,
|
|
@@ -170,6 +188,7 @@ export async function createPR(options = {}) {
|
|
|
170
188
|
approved: false,
|
|
171
189
|
checksPass: true,
|
|
172
190
|
mergeable: true,
|
|
191
|
+
platformType: manifestInfo.platformType,
|
|
173
192
|
};
|
|
174
193
|
}
|
|
175
194
|
catch (error) {
|
|
@@ -181,10 +200,12 @@ export async function createPR(options = {}) {
|
|
|
181
200
|
// Display results
|
|
182
201
|
console.log(chalk.green('Created PRs:'));
|
|
183
202
|
for (const pr of linkedPRs) {
|
|
184
|
-
|
|
203
|
+
const platformLabel = pr.platformType && pr.platformType !== 'github' ? ` (${pr.platformType})` : '';
|
|
204
|
+
console.log(` ${pr.repoName}${chalk.dim(platformLabel)}: ${chalk.cyan(pr.url)}`);
|
|
185
205
|
}
|
|
186
206
|
if (manifestPR) {
|
|
187
|
-
|
|
207
|
+
const platformLabel = manifestPR.platformType && manifestPR.platformType !== 'github' ? ` (${manifestPR.platformType})` : '';
|
|
208
|
+
console.log(` ${manifestPR.repoName}${chalk.dim(platformLabel)}: ${chalk.cyan(manifestPR.url)}`);
|
|
188
209
|
}
|
|
189
210
|
// Generate a summary for the user
|
|
190
211
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/pr/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/pr/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/commands/pr/merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/commands/pr/merge.ts"],"names":[],"mappings":"AASA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkMxE"}
|
|
@@ -3,7 +3,8 @@ import ora from 'ora';
|
|
|
3
3
|
import inquirer from 'inquirer';
|
|
4
4
|
import { loadManifest, getAllRepoInfo, getManifestRepoInfo } from '../../lib/manifest.js';
|
|
5
5
|
import { pathExists, getCurrentBranch, isGitRepo } from '../../lib/git.js';
|
|
6
|
-
import {
|
|
6
|
+
import { getPlatformAdapter } from '../../lib/platform/index.js';
|
|
7
|
+
import { getLinkedPRInfo } from '../../lib/linker.js';
|
|
7
8
|
/**
|
|
8
9
|
* Merge all PRs for current branch
|
|
9
10
|
*/
|
|
@@ -30,29 +31,31 @@ export async function mergePRs(options = {}) {
|
|
|
30
31
|
if (branch === repo.default_branch) {
|
|
31
32
|
return null;
|
|
32
33
|
}
|
|
33
|
-
const
|
|
34
|
+
const platform = getPlatformAdapter(repo.platformType, repo.platform);
|
|
35
|
+
const pr = await platform.findPRByBranch(repo.owner, repo.repo, branch);
|
|
34
36
|
if (!pr) {
|
|
35
37
|
return null;
|
|
36
38
|
}
|
|
37
|
-
const prInfo = await getLinkedPRInfo(repo
|
|
38
|
-
return { ...prInfo, branch };
|
|
39
|
+
const prInfo = await getLinkedPRInfo(repo, pr.number);
|
|
40
|
+
return { pr: { ...prInfo, branch }, repo };
|
|
39
41
|
}));
|
|
40
42
|
// Check for manifest PR too
|
|
41
43
|
const manifestInfo = getManifestRepoInfo(manifest, rootDir);
|
|
42
|
-
let
|
|
44
|
+
let manifestPREntry = null;
|
|
43
45
|
if (manifestInfo && await isGitRepo(manifestInfo.absolutePath)) {
|
|
44
46
|
const manifestBranch = await getCurrentBranch(manifestInfo.absolutePath);
|
|
45
47
|
if (manifestBranch !== manifestInfo.default_branch) {
|
|
46
|
-
const
|
|
48
|
+
const platform = getPlatformAdapter(manifestInfo.platformType, manifestInfo.platform);
|
|
49
|
+
const pr = await platform.findPRByBranch(manifestInfo.owner, manifestInfo.repo, manifestBranch);
|
|
47
50
|
if (pr) {
|
|
48
|
-
const prInfo = await getLinkedPRInfo(manifestInfo
|
|
49
|
-
|
|
51
|
+
const prInfo = await getLinkedPRInfo(manifestInfo, pr.number);
|
|
52
|
+
manifestPREntry = { pr: { ...prInfo, branch: manifestBranch }, repo: manifestInfo };
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
|
-
const prsToMerge = prResults.filter((
|
|
54
|
-
if (
|
|
55
|
-
prsToMerge.push(
|
|
56
|
+
const prsToMerge = prResults.filter((entry) => entry !== null);
|
|
57
|
+
if (manifestPREntry) {
|
|
58
|
+
prsToMerge.push(manifestPREntry);
|
|
56
59
|
}
|
|
57
60
|
spinner.stop();
|
|
58
61
|
if (prsToMerge.length === 0) {
|
|
@@ -60,24 +63,25 @@ export async function mergePRs(options = {}) {
|
|
|
60
63
|
return;
|
|
61
64
|
}
|
|
62
65
|
// Determine the branch name for display
|
|
63
|
-
const branches = [...new Set(prsToMerge.map(
|
|
66
|
+
const branches = [...new Set(prsToMerge.map(entry => entry.pr.branch))];
|
|
64
67
|
const branchDisplay = branches.length === 1 ? branches[0] : `${branches.length} branches`;
|
|
65
68
|
console.log(chalk.blue(`Merging PRs for branch: ${chalk.cyan(branchDisplay)}\n`));
|
|
66
69
|
// Check if all PRs are ready
|
|
67
|
-
const notReady = prsToMerge.filter((
|
|
70
|
+
const notReady = prsToMerge.filter((entry) => entry.pr.state !== 'open' || !entry.pr.approved || !entry.pr.checksPass || !entry.pr.mergeable);
|
|
68
71
|
if (notReady.length > 0 && !options.force) {
|
|
69
72
|
console.log(chalk.yellow('Some PRs are not ready to merge:\n'));
|
|
70
|
-
for (const
|
|
73
|
+
for (const entry of notReady) {
|
|
71
74
|
const issues = [];
|
|
72
|
-
if (pr.state !== 'open')
|
|
73
|
-
issues.push(`state: ${pr.state}`);
|
|
74
|
-
if (!pr.approved)
|
|
75
|
+
if (entry.pr.state !== 'open')
|
|
76
|
+
issues.push(`state: ${entry.pr.state}`);
|
|
77
|
+
if (!entry.pr.approved)
|
|
75
78
|
issues.push('not approved');
|
|
76
|
-
if (!pr.checksPass)
|
|
79
|
+
if (!entry.pr.checksPass)
|
|
77
80
|
issues.push('checks not passing');
|
|
78
|
-
if (!pr.mergeable)
|
|
81
|
+
if (!entry.pr.mergeable)
|
|
79
82
|
issues.push('not mergeable');
|
|
80
|
-
|
|
83
|
+
const platformLabel = entry.pr.platformType && entry.pr.platformType !== 'github' ? ` (${entry.pr.platformType})` : '';
|
|
84
|
+
console.log(` ${entry.pr.repoName}${chalk.dim(platformLabel)} #${entry.pr.number}: ${chalk.dim(issues.join(', '))}`);
|
|
81
85
|
}
|
|
82
86
|
console.log('');
|
|
83
87
|
console.log(chalk.dim('Use --force to merge anyway (not recommended).'));
|
|
@@ -85,9 +89,10 @@ export async function mergePRs(options = {}) {
|
|
|
85
89
|
}
|
|
86
90
|
// Show what will be merged
|
|
87
91
|
console.log('PRs to merge:');
|
|
88
|
-
for (const
|
|
89
|
-
const statusIcon = pr.approved && pr.checksPass ? chalk.green('✓') : chalk.yellow('⚠');
|
|
90
|
-
|
|
92
|
+
for (const entry of prsToMerge) {
|
|
93
|
+
const statusIcon = entry.pr.approved && entry.pr.checksPass ? chalk.green('✓') : chalk.yellow('⚠');
|
|
94
|
+
const platformLabel = entry.pr.platformType && entry.pr.platformType !== 'github' ? ` (${entry.pr.platformType})` : '';
|
|
95
|
+
console.log(` ${statusIcon} ${entry.pr.repoName}${chalk.dim(platformLabel)} #${entry.pr.number}`);
|
|
91
96
|
}
|
|
92
97
|
console.log('');
|
|
93
98
|
// Confirm unless --force
|
|
@@ -112,17 +117,19 @@ export async function mergePRs(options = {}) {
|
|
|
112
117
|
deleteBranch: options.deleteBranch ?? true,
|
|
113
118
|
};
|
|
114
119
|
const results = [];
|
|
115
|
-
for (const
|
|
116
|
-
const
|
|
120
|
+
for (const entry of prsToMerge) {
|
|
121
|
+
const platformLabel = entry.pr.platformType && entry.pr.platformType !== 'github' ? ` (${entry.pr.platformType})` : '';
|
|
122
|
+
const prSpinner = ora(`Merging ${entry.pr.repoName}${platformLabel} #${entry.pr.number}...`).start();
|
|
117
123
|
try {
|
|
118
|
-
const
|
|
124
|
+
const platform = getPlatformAdapter(entry.repo.platformType, entry.repo.platform);
|
|
125
|
+
const success = await platform.mergePullRequest(entry.pr.owner, entry.pr.repo, entry.pr.number, mergeOptions);
|
|
119
126
|
if (success) {
|
|
120
|
-
prSpinner.succeed(`${pr.repoName} #${pr.number}: merged`);
|
|
121
|
-
results.push({
|
|
127
|
+
prSpinner.succeed(`${entry.pr.repoName}${platformLabel} #${entry.pr.number}: merged`);
|
|
128
|
+
results.push({ entry, success: true });
|
|
122
129
|
}
|
|
123
130
|
else {
|
|
124
|
-
prSpinner.fail(`${pr.repoName} #${pr.number}: merge failed`);
|
|
125
|
-
results.push({
|
|
131
|
+
prSpinner.fail(`${entry.pr.repoName}${platformLabel} #${entry.pr.number}: merge failed`);
|
|
132
|
+
results.push({ entry, success: false, error: 'Merge API call failed' });
|
|
126
133
|
// Stop on first failure for all-or-nothing
|
|
127
134
|
if (manifest.settings.merge_strategy === 'all-or-nothing') {
|
|
128
135
|
console.log('');
|
|
@@ -133,8 +140,8 @@ export async function mergePRs(options = {}) {
|
|
|
133
140
|
}
|
|
134
141
|
catch (error) {
|
|
135
142
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
136
|
-
prSpinner.fail(`${pr.repoName} #${pr.number}: ${errorMsg}`);
|
|
137
|
-
results.push({
|
|
143
|
+
prSpinner.fail(`${entry.pr.repoName}${platformLabel} #${entry.pr.number}: ${errorMsg}`);
|
|
144
|
+
results.push({ entry, success: false, error: errorMsg });
|
|
138
145
|
if (manifest.settings.merge_strategy === 'all-or-nothing') {
|
|
139
146
|
console.log('');
|
|
140
147
|
console.log(chalk.red('Stopping due to merge failure (all-or-nothing merge strategy).'));
|
|
@@ -156,7 +163,7 @@ export async function mergePRs(options = {}) {
|
|
|
156
163
|
else {
|
|
157
164
|
console.log(chalk.yellow(`Merged ${succeeded}/${prsToMerge.length} PRs. ${failed} failed.`));
|
|
158
165
|
for (const result of results.filter((r) => !r.success)) {
|
|
159
|
-
console.log(chalk.red(` ✗ ${result.pr.repoName}: ${result.error}`));
|
|
166
|
+
console.log(chalk.red(` ✗ ${result.entry.pr.repoName}: ${result.error}`));
|
|
160
167
|
}
|
|
161
168
|
}
|
|
162
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/commands/pr/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/commands/pr/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/pr/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/pr/status.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6JzE"}
|
|
@@ -2,7 +2,8 @@ import chalk from 'chalk';
|
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import { loadManifest, getAllRepoInfo, getManifestRepoInfo } from '../../lib/manifest.js';
|
|
4
4
|
import { pathExists, getCurrentBranch, isGitRepo } from '../../lib/git.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getPlatformAdapter } from '../../lib/platform/index.js';
|
|
6
|
+
import { getLinkedPRInfo } from '../../lib/linker.js';
|
|
6
7
|
/**
|
|
7
8
|
* Show status of PRs for current branch
|
|
8
9
|
*/
|
|
@@ -29,13 +30,14 @@ export async function prStatus(options = {}) {
|
|
|
29
30
|
if (branch === repo.default_branch) {
|
|
30
31
|
return null;
|
|
31
32
|
}
|
|
32
|
-
// Find PR for this repo's current branch
|
|
33
|
-
const
|
|
33
|
+
// Find PR for this repo's current branch using the appropriate platform
|
|
34
|
+
const platform = getPlatformAdapter(repo.platformType, repo.platform);
|
|
35
|
+
const pr = await platform.findPRByBranch(repo.owner, repo.repo, branch);
|
|
34
36
|
if (!pr) {
|
|
35
37
|
return null;
|
|
36
38
|
}
|
|
37
39
|
// Get full PR info
|
|
38
|
-
const prInfo = await getLinkedPRInfo(repo
|
|
40
|
+
const prInfo = await getLinkedPRInfo(repo, pr.number);
|
|
39
41
|
return { ...prInfo, branch };
|
|
40
42
|
}));
|
|
41
43
|
// Check for manifest PR too
|
|
@@ -44,9 +46,10 @@ export async function prStatus(options = {}) {
|
|
|
44
46
|
if (manifestInfo && await isGitRepo(manifestInfo.absolutePath)) {
|
|
45
47
|
const manifestBranch = await getCurrentBranch(manifestInfo.absolutePath);
|
|
46
48
|
if (manifestBranch !== manifestInfo.default_branch) {
|
|
47
|
-
const
|
|
49
|
+
const platform = getPlatformAdapter(manifestInfo.platformType, manifestInfo.platform);
|
|
50
|
+
const pr = await platform.findPRByBranch(manifestInfo.owner, manifestInfo.repo, manifestBranch);
|
|
48
51
|
if (pr) {
|
|
49
|
-
const prInfo = await getLinkedPRInfo(manifestInfo
|
|
52
|
+
const prInfo = await getLinkedPRInfo(manifestInfo, pr.number);
|
|
50
53
|
manifestPR = { ...prInfo, branch: manifestBranch };
|
|
51
54
|
}
|
|
52
55
|
}
|
|
@@ -70,8 +73,8 @@ export async function prStatus(options = {}) {
|
|
|
70
73
|
return;
|
|
71
74
|
}
|
|
72
75
|
// Display as table
|
|
73
|
-
console.log(chalk.dim(' Repo PR Status Approved Checks Mergeable'));
|
|
74
|
-
console.log(chalk.dim(' ' + '-'.repeat(
|
|
76
|
+
console.log(chalk.dim(' Repo PR Status Approved Checks Mergeable Platform'));
|
|
77
|
+
console.log(chalk.dim(' ' + '-'.repeat(88)));
|
|
75
78
|
for (const pr of foundPRs) {
|
|
76
79
|
const repoName = pr.repoName.padEnd(20);
|
|
77
80
|
const prNum = `#${pr.number}`.padEnd(8);
|
|
@@ -98,9 +101,10 @@ export async function prStatus(options = {}) {
|
|
|
98
101
|
? chalk.green('✓'.padEnd(10))
|
|
99
102
|
: chalk.yellow('pending'.padEnd(10));
|
|
100
103
|
const mergeable = pr.mergeable
|
|
101
|
-
? chalk.green('✓')
|
|
102
|
-
: chalk.red('✗');
|
|
103
|
-
|
|
104
|
+
? chalk.green('✓'.padEnd(10))
|
|
105
|
+
: chalk.red('✗'.padEnd(10));
|
|
106
|
+
const platformType = (pr.platformType ?? 'github').padEnd(10);
|
|
107
|
+
console.log(` ${repoName} ${prNum} ${statusText} ${approved} ${checks} ${mergeable} ${chalk.dim(platformType)}`);
|
|
104
108
|
}
|
|
105
109
|
// Summary
|
|
106
110
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/pr/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/pr/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface RepoAddOptions {
|
|
2
|
+
path?: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
branch?: string;
|
|
5
|
+
noClone?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Add a repository to the workspace
|
|
9
|
+
*
|
|
10
|
+
* @param url - Git URL (SSH or HTTPS) of the repository to add
|
|
11
|
+
* @param options - Options for adding the repo
|
|
12
|
+
*/
|
|
13
|
+
export declare function repoAdd(url: string, options?: RepoAddOptions): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/commands/repo.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkGtF"}
|