gitgrip 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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/actions/cross-repo-sync/action.yml +55 -0
  4. package/assets/banner.svg +73 -0
  5. package/assets/icon.svg +30 -0
  6. package/assets/logo-dark.svg +36 -0
  7. package/assets/logo.svg +36 -0
  8. package/dist/commands/add.d.ts +9 -0
  9. package/dist/commands/add.d.ts.map +1 -0
  10. package/dist/commands/add.js +80 -0
  11. package/dist/commands/add.js.map +1 -0
  12. package/dist/commands/bench.d.ts +12 -0
  13. package/dist/commands/bench.d.ts.map +1 -0
  14. package/dist/commands/bench.js +136 -0
  15. package/dist/commands/bench.js.map +1 -0
  16. package/dist/commands/branch.d.ts +15 -0
  17. package/dist/commands/branch.d.ts.map +1 -0
  18. package/dist/commands/branch.js +159 -0
  19. package/dist/commands/branch.js.map +1 -0
  20. package/dist/commands/checkout.d.ts +10 -0
  21. package/dist/commands/checkout.d.ts.map +1 -0
  22. package/dist/commands/checkout.js +85 -0
  23. package/dist/commands/checkout.js.map +1 -0
  24. package/dist/commands/commit.d.ts +10 -0
  25. package/dist/commands/commit.d.ts.map +1 -0
  26. package/dist/commands/commit.js +94 -0
  27. package/dist/commands/commit.js.map +1 -0
  28. package/dist/commands/diff.d.ts +11 -0
  29. package/dist/commands/diff.d.ts.map +1 -0
  30. package/dist/commands/diff.js +105 -0
  31. package/dist/commands/diff.js.map +1 -0
  32. package/dist/commands/env.d.ts +8 -0
  33. package/dist/commands/env.d.ts.map +1 -0
  34. package/dist/commands/env.js +35 -0
  35. package/dist/commands/env.js.map +1 -0
  36. package/dist/commands/forall.d.ts +13 -0
  37. package/dist/commands/forall.d.ts.map +1 -0
  38. package/dist/commands/forall.js +116 -0
  39. package/dist/commands/forall.js.map +1 -0
  40. package/dist/commands/init.d.ts +15 -0
  41. package/dist/commands/init.d.ts.map +1 -0
  42. package/dist/commands/init.js +106 -0
  43. package/dist/commands/init.js.map +1 -0
  44. package/dist/commands/link.d.ts +11 -0
  45. package/dist/commands/link.d.ts.map +1 -0
  46. package/dist/commands/link.js +205 -0
  47. package/dist/commands/link.js.map +1 -0
  48. package/dist/commands/migrate.d.ts +17 -0
  49. package/dist/commands/migrate.d.ts.map +1 -0
  50. package/dist/commands/migrate.js +180 -0
  51. package/dist/commands/migrate.js.map +1 -0
  52. package/dist/commands/pr/create.d.ts +13 -0
  53. package/dist/commands/pr/create.d.ts.map +1 -0
  54. package/dist/commands/pr/create.js +202 -0
  55. package/dist/commands/pr/create.js.map +1 -0
  56. package/dist/commands/pr/index.d.ts +4 -0
  57. package/dist/commands/pr/index.d.ts.map +1 -0
  58. package/dist/commands/pr/index.js +4 -0
  59. package/dist/commands/pr/index.js.map +1 -0
  60. package/dist/commands/pr/merge.d.ts +11 -0
  61. package/dist/commands/pr/merge.d.ts.map +1 -0
  62. package/dist/commands/pr/merge.js +168 -0
  63. package/dist/commands/pr/merge.js.map +1 -0
  64. package/dist/commands/pr/status.d.ts +9 -0
  65. package/dist/commands/pr/status.d.ts.map +1 -0
  66. package/dist/commands/pr/status.js +139 -0
  67. package/dist/commands/pr/status.js.map +1 -0
  68. package/dist/commands/push.d.ts +10 -0
  69. package/dist/commands/push.d.ts.map +1 -0
  70. package/dist/commands/push.js +101 -0
  71. package/dist/commands/push.js.map +1 -0
  72. package/dist/commands/run.d.ts +8 -0
  73. package/dist/commands/run.d.ts.map +1 -0
  74. package/dist/commands/run.js +75 -0
  75. package/dist/commands/run.js.map +1 -0
  76. package/dist/commands/status.d.ts +9 -0
  77. package/dist/commands/status.d.ts.map +1 -0
  78. package/dist/commands/status.js +201 -0
  79. package/dist/commands/status.js.map +1 -0
  80. package/dist/commands/sync.d.ts +13 -0
  81. package/dist/commands/sync.d.ts.map +1 -0
  82. package/dist/commands/sync.js +183 -0
  83. package/dist/commands/sync.js.map +1 -0
  84. package/dist/index.d.ts +3 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +352 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/lib/__bench__/files.bench.d.ts +2 -0
  89. package/dist/lib/__bench__/files.bench.d.ts.map +1 -0
  90. package/dist/lib/__bench__/files.bench.js +52 -0
  91. package/dist/lib/__bench__/files.bench.js.map +1 -0
  92. package/dist/lib/__bench__/manifest.bench.d.ts +2 -0
  93. package/dist/lib/__bench__/manifest.bench.d.ts.map +1 -0
  94. package/dist/lib/__bench__/manifest.bench.js +74 -0
  95. package/dist/lib/__bench__/manifest.bench.js.map +1 -0
  96. package/dist/lib/files.d.ts +84 -0
  97. package/dist/lib/files.d.ts.map +1 -0
  98. package/dist/lib/files.js +492 -0
  99. package/dist/lib/files.js.map +1 -0
  100. package/dist/lib/git.d.ts +125 -0
  101. package/dist/lib/git.d.ts.map +1 -0
  102. package/dist/lib/git.js +370 -0
  103. package/dist/lib/git.js.map +1 -0
  104. package/dist/lib/github.d.ts +92 -0
  105. package/dist/lib/github.d.ts.map +1 -0
  106. package/dist/lib/github.js +284 -0
  107. package/dist/lib/github.js.map +1 -0
  108. package/dist/lib/hooks.d.ts +19 -0
  109. package/dist/lib/hooks.d.ts.map +1 -0
  110. package/dist/lib/hooks.js +63 -0
  111. package/dist/lib/hooks.js.map +1 -0
  112. package/dist/lib/linker.d.ts +56 -0
  113. package/dist/lib/linker.d.ts.map +1 -0
  114. package/dist/lib/linker.js +185 -0
  115. package/dist/lib/linker.js.map +1 -0
  116. package/dist/lib/manifest.d.ts +73 -0
  117. package/dist/lib/manifest.d.ts.map +1 -0
  118. package/dist/lib/manifest.js +400 -0
  119. package/dist/lib/manifest.js.map +1 -0
  120. package/dist/lib/scripts.d.ts +26 -0
  121. package/dist/lib/scripts.d.ts.map +1 -0
  122. package/dist/lib/scripts.js +123 -0
  123. package/dist/lib/scripts.js.map +1 -0
  124. package/dist/lib/timing.d.ts +100 -0
  125. package/dist/lib/timing.d.ts.map +1 -0
  126. package/dist/lib/timing.js +293 -0
  127. package/dist/lib/timing.js.map +1 -0
  128. package/dist/types.d.ts +312 -0
  129. package/dist/types.d.ts.map +1 -0
  130. package/dist/types.js +2 -0
  131. package/dist/types.js.map +1 -0
  132. package/package.json +60 -0
@@ -0,0 +1,370 @@
1
+ import { simpleGit } from 'simple-git';
2
+ import { access } from 'fs/promises';
3
+ /**
4
+ * Get a SimpleGit instance for a repository
5
+ */
6
+ export function getGitInstance(repoPath) {
7
+ return simpleGit(repoPath);
8
+ }
9
+ /**
10
+ * Check if a directory is a git repository
11
+ */
12
+ export async function isGitRepo(path) {
13
+ try {
14
+ const git = getGitInstance(path);
15
+ await git.revparse(['--git-dir']);
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ /**
23
+ * Check if a path exists
24
+ */
25
+ export async function pathExists(path) {
26
+ try {
27
+ await access(path);
28
+ return true;
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ /**
35
+ * Clone a repository
36
+ */
37
+ export async function cloneRepo(url, path, branch) {
38
+ const git = simpleGit();
39
+ const options = branch ? ['--branch', branch] : [];
40
+ await git.clone(url, path, options);
41
+ }
42
+ /**
43
+ * Get the current branch name
44
+ */
45
+ export async function getCurrentBranch(repoPath) {
46
+ const git = getGitInstance(repoPath);
47
+ const branch = await git.revparse(['--abbrev-ref', 'HEAD']);
48
+ return branch.trim();
49
+ }
50
+ /**
51
+ * Get repository status
52
+ */
53
+ export async function getRepoStatus(repo) {
54
+ const exists = await pathExists(repo.absolutePath);
55
+ if (!exists) {
56
+ return {
57
+ name: repo.name,
58
+ branch: '',
59
+ clean: true,
60
+ staged: 0,
61
+ modified: 0,
62
+ untracked: 0,
63
+ ahead: 0,
64
+ behind: 0,
65
+ exists: false,
66
+ };
67
+ }
68
+ const git = getGitInstance(repo.absolutePath);
69
+ const status = await git.status();
70
+ return {
71
+ name: repo.name,
72
+ branch: status.current ?? 'unknown',
73
+ clean: status.isClean(),
74
+ staged: status.staged.length,
75
+ modified: status.modified.length,
76
+ untracked: status.not_added.length,
77
+ ahead: status.ahead,
78
+ behind: status.behind,
79
+ exists: true,
80
+ };
81
+ }
82
+ /**
83
+ * Get status for all repositories
84
+ */
85
+ export async function getAllRepoStatus(repos) {
86
+ const results = await Promise.all(repos.map((repo) => getRepoStatus(repo)));
87
+ return results;
88
+ }
89
+ /**
90
+ * Create a branch in a repository
91
+ */
92
+ export async function createBranch(repoPath, branchName) {
93
+ const git = getGitInstance(repoPath);
94
+ await git.checkoutLocalBranch(branchName);
95
+ }
96
+ /**
97
+ * Checkout a branch in a repository
98
+ */
99
+ export async function checkoutBranch(repoPath, branchName) {
100
+ const git = getGitInstance(repoPath);
101
+ await git.checkout(branchName);
102
+ }
103
+ /**
104
+ * Check if a branch exists locally
105
+ */
106
+ export async function branchExists(repoPath, branchName) {
107
+ const git = getGitInstance(repoPath);
108
+ try {
109
+ const branches = await git.branchLocal();
110
+ return branches.all.includes(branchName);
111
+ }
112
+ catch {
113
+ return false;
114
+ }
115
+ }
116
+ /**
117
+ * Check if a branch exists on remote
118
+ */
119
+ export async function remoteBranchExists(repoPath, branchName, remote = 'origin') {
120
+ const git = getGitInstance(repoPath);
121
+ try {
122
+ const result = await git.listRemote(['--heads', remote, branchName]);
123
+ return result.trim().length > 0;
124
+ }
125
+ catch {
126
+ return false;
127
+ }
128
+ }
129
+ /**
130
+ * Pull latest changes from remote
131
+ */
132
+ export async function pullLatest(repoPath, remote = 'origin') {
133
+ const git = getGitInstance(repoPath);
134
+ await git.pull(remote);
135
+ }
136
+ /**
137
+ * Fetch from remote
138
+ */
139
+ export async function fetchRemote(repoPath, remote = 'origin') {
140
+ const git = getGitInstance(repoPath);
141
+ await git.fetch(remote);
142
+ }
143
+ /**
144
+ * Push branch to remote
145
+ */
146
+ export async function pushBranch(repoPath, branchName, remote = 'origin', setUpstream = false) {
147
+ const git = getGitInstance(repoPath);
148
+ const options = setUpstream ? ['-u', remote, branchName] : [remote, branchName];
149
+ await git.push(options);
150
+ }
151
+ /**
152
+ * Get list of changed files (staged and unstaged)
153
+ */
154
+ export async function getChangedFiles(repoPath) {
155
+ const git = getGitInstance(repoPath);
156
+ const status = await git.status();
157
+ return [...status.staged, ...status.modified, ...status.not_added];
158
+ }
159
+ /**
160
+ * Check if there are uncommitted changes
161
+ */
162
+ export async function hasUncommittedChanges(repoPath) {
163
+ const git = getGitInstance(repoPath);
164
+ const status = await git.status();
165
+ return !status.isClean();
166
+ }
167
+ /**
168
+ * Get commits between current branch and base branch
169
+ */
170
+ export async function getCommitsBetween(repoPath, baseBranch, headBranch) {
171
+ const git = getGitInstance(repoPath);
172
+ const head = headBranch ?? (await getCurrentBranch(repoPath));
173
+ try {
174
+ const log = await git.log({ from: baseBranch, to: head });
175
+ return log.all.map((commit) => commit.hash);
176
+ }
177
+ catch {
178
+ return [];
179
+ }
180
+ }
181
+ /**
182
+ * Check if branch has commits not in base
183
+ */
184
+ export async function hasCommitsAhead(repoPath, baseBranch) {
185
+ const commits = await getCommitsBetween(repoPath, baseBranch);
186
+ return commits.length > 0;
187
+ }
188
+ /**
189
+ * Run an operation across multiple repos
190
+ */
191
+ export async function runOnAllRepos(repos, operation) {
192
+ const results = await Promise.all(repos.map(async (repo) => {
193
+ try {
194
+ const data = await operation(repo);
195
+ return {
196
+ repoName: repo.name,
197
+ success: true,
198
+ data,
199
+ };
200
+ }
201
+ catch (error) {
202
+ return {
203
+ repoName: repo.name,
204
+ success: false,
205
+ error: error instanceof Error ? error.message : String(error),
206
+ };
207
+ }
208
+ }));
209
+ return results;
210
+ }
211
+ /**
212
+ * Create branch in all repos
213
+ */
214
+ export async function createBranchInAllRepos(repos, branchName) {
215
+ return runOnAllRepos(repos, async (repo) => {
216
+ if (!(await pathExists(repo.absolutePath))) {
217
+ throw new Error('Repository not cloned');
218
+ }
219
+ await createBranch(repo.absolutePath, branchName);
220
+ });
221
+ }
222
+ /**
223
+ * Checkout branch in all repos
224
+ */
225
+ export async function checkoutBranchInAllRepos(repos, branchName) {
226
+ return runOnAllRepos(repos, async (repo) => {
227
+ if (!(await pathExists(repo.absolutePath))) {
228
+ throw new Error('Repository not cloned');
229
+ }
230
+ await checkoutBranch(repo.absolutePath, branchName);
231
+ });
232
+ }
233
+ /**
234
+ * Pull latest in all repos
235
+ */
236
+ export async function pullAllRepos(repos) {
237
+ return runOnAllRepos(repos, async (repo) => {
238
+ if (!(await pathExists(repo.absolutePath))) {
239
+ throw new Error('Repository not cloned');
240
+ }
241
+ await pullLatest(repo.absolutePath);
242
+ });
243
+ }
244
+ /**
245
+ * Push branch in all repos that have it
246
+ */
247
+ export async function pushAllRepos(repos, branchName, setUpstream = false) {
248
+ return runOnAllRepos(repos, async (repo) => {
249
+ if (!(await pathExists(repo.absolutePath))) {
250
+ throw new Error('Repository not cloned');
251
+ }
252
+ const currentBranch = await getCurrentBranch(repo.absolutePath);
253
+ if (currentBranch !== branchName) {
254
+ throw new Error(`Not on branch ${branchName}`);
255
+ }
256
+ await pushBranch(repo.absolutePath, branchName, 'origin', setUpstream);
257
+ });
258
+ }
259
+ /**
260
+ * Get the URL of a remote
261
+ */
262
+ export async function getRemoteUrl(repoPath, remote = 'origin') {
263
+ const git = getGitInstance(repoPath);
264
+ try {
265
+ const remotes = await git.getRemotes(true);
266
+ const found = remotes.find((r) => r.name === remote);
267
+ return found?.refs?.fetch ?? null;
268
+ }
269
+ catch {
270
+ return null;
271
+ }
272
+ }
273
+ /**
274
+ * Set the URL of a remote (creates it if it doesn't exist)
275
+ */
276
+ export async function setRemoteUrl(repoPath, url, remote = 'origin') {
277
+ const git = getGitInstance(repoPath);
278
+ const existingUrl = await getRemoteUrl(repoPath, remote);
279
+ if (existingUrl === null) {
280
+ await git.addRemote(remote, url);
281
+ }
282
+ else if (existingUrl !== url) {
283
+ await git.remote(['set-url', remote, url]);
284
+ }
285
+ }
286
+ /**
287
+ * Set upstream tracking for the current branch
288
+ */
289
+ export async function setUpstreamBranch(repoPath, remote = 'origin') {
290
+ const git = getGitInstance(repoPath);
291
+ const branch = await getCurrentBranch(repoPath);
292
+ await git.branch(['--set-upstream-to', `${remote}/${branch}`, branch]);
293
+ }
294
+ /**
295
+ * Get the upstream tracking branch for a local branch
296
+ * Returns null if no upstream is configured
297
+ */
298
+ export async function getUpstreamBranch(repoPath, branch) {
299
+ const git = getGitInstance(repoPath);
300
+ const localBranch = branch ?? (await getCurrentBranch(repoPath));
301
+ try {
302
+ const result = await git.raw(['config', '--get', `branch.${localBranch}.merge`]);
303
+ // Result is like "refs/heads/feature-branch"
304
+ const ref = result.trim();
305
+ if (ref.startsWith('refs/heads/')) {
306
+ return ref.replace('refs/heads/', '');
307
+ }
308
+ return ref || null;
309
+ }
310
+ catch {
311
+ return null;
312
+ }
313
+ }
314
+ /**
315
+ * Check if the upstream branch for current branch still exists on remote
316
+ */
317
+ export async function upstreamBranchExists(repoPath, remote = 'origin') {
318
+ const upstreamBranch = await getUpstreamBranch(repoPath);
319
+ if (!upstreamBranch) {
320
+ return false;
321
+ }
322
+ return remoteBranchExists(repoPath, upstreamBranch, remote);
323
+ }
324
+ /**
325
+ * Safely pull latest, handling the case where upstream branch was deleted
326
+ * Returns true if pull succeeded, false if had to recover (checkout default branch)
327
+ */
328
+ export async function safePullLatest(repoPath, defaultBranch = 'main', remote = 'origin') {
329
+ const git = getGitInstance(repoPath);
330
+ const currentBranch = await getCurrentBranch(repoPath);
331
+ // If we're on the default branch, just pull
332
+ if (currentBranch === defaultBranch) {
333
+ try {
334
+ await git.pull(remote);
335
+ return { pulled: true, recovered: false };
336
+ }
337
+ catch (error) {
338
+ const errorMsg = error instanceof Error ? error.message : String(error);
339
+ return { pulled: false, recovered: false, message: errorMsg };
340
+ }
341
+ }
342
+ // Check if upstream branch still exists
343
+ const upstreamExists = await upstreamBranchExists(repoPath, remote);
344
+ if (!upstreamExists) {
345
+ // Upstream was deleted (likely after PR merge), recover by checking out default branch
346
+ try {
347
+ await git.checkout(defaultBranch);
348
+ await git.pull(remote);
349
+ return {
350
+ pulled: true,
351
+ recovered: true,
352
+ message: `Switched from '${currentBranch}' to '${defaultBranch}' (upstream branch was deleted)`
353
+ };
354
+ }
355
+ catch (error) {
356
+ const errorMsg = error instanceof Error ? error.message : String(error);
357
+ return { pulled: false, recovered: false, message: errorMsg };
358
+ }
359
+ }
360
+ // Upstream exists, normal pull
361
+ try {
362
+ await git.pull(remote);
363
+ return { pulled: true, recovered: false };
364
+ }
365
+ catch (error) {
366
+ const errorMsg = error instanceof Error ? error.message : String(error);
367
+ return { pulled: false, recovered: false, message: errorMsg };
368
+ }
369
+ }
370
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { Octokit } from '@octokit/rest';
2
+ import type { LinkedPR, RepoInfo, PRCreateOptions, PRMergeOptions } from '../types.js';
3
+ /**
4
+ * Get GitHub token from environment or gh CLI
5
+ */
6
+ export declare function getGitHubToken(): string;
7
+ /**
8
+ * Get or create Octokit instance
9
+ */
10
+ export declare function getOctokit(): Octokit;
11
+ /**
12
+ * Create a pull request
13
+ */
14
+ export declare function createPullRequest(owner: string, repo: string, head: string, base: string, title: string, body: string, draft?: boolean): Promise<{
15
+ number: number;
16
+ url: string;
17
+ }>;
18
+ /**
19
+ * Update a pull request body
20
+ */
21
+ export declare function updatePullRequestBody(owner: string, repo: string, pullNumber: number, body: string): Promise<void>;
22
+ /**
23
+ * Get pull request details
24
+ */
25
+ export declare function getPullRequest(owner: string, repo: string, pullNumber: number): Promise<{
26
+ number: number;
27
+ url: string;
28
+ title: string;
29
+ body: string;
30
+ state: 'open' | 'closed';
31
+ merged: boolean;
32
+ mergeable: boolean | null;
33
+ head: {
34
+ ref: string;
35
+ sha: string;
36
+ };
37
+ base: {
38
+ ref: string;
39
+ };
40
+ }>;
41
+ /**
42
+ * Get reviews for a pull request
43
+ */
44
+ export declare function getPullRequestReviews(owner: string, repo: string, pullNumber: number): Promise<{
45
+ state: string;
46
+ user: string;
47
+ }[]>;
48
+ /**
49
+ * Check if a PR is approved
50
+ */
51
+ export declare function isPullRequestApproved(owner: string, repo: string, pullNumber: number): Promise<boolean>;
52
+ /**
53
+ * Get combined status checks for a PR
54
+ */
55
+ export declare function getStatusChecks(owner: string, repo: string, ref: string): Promise<{
56
+ state: 'success' | 'failure' | 'pending';
57
+ statuses: {
58
+ context: string;
59
+ state: string;
60
+ }[];
61
+ }>;
62
+ /**
63
+ * Merge a pull request
64
+ */
65
+ export declare function mergePullRequest(owner: string, repo: string, pullNumber: number, options?: PRMergeOptions): Promise<boolean>;
66
+ /**
67
+ * Get full linked PR information
68
+ */
69
+ export declare function getLinkedPRInfo(owner: string, repo: string, pullNumber: number, repoName: string): Promise<LinkedPR>;
70
+ /**
71
+ * Find PRs with a specific branch name
72
+ */
73
+ export declare function findPRByBranch(owner: string, repo: string, branch: string): Promise<{
74
+ number: number;
75
+ url: string;
76
+ } | null>;
77
+ /**
78
+ * Create PRs for all repos with changes
79
+ */
80
+ export declare function createLinkedPRs(repos: RepoInfo[], branchName: string, options: PRCreateOptions, manifestPRNumber?: number): Promise<LinkedPR[]>;
81
+ /**
82
+ * Generate manifest PR body with linked PR table
83
+ */
84
+ export declare function generateManifestPRBody(title: string, linkedPRs: LinkedPR[], additionalBody?: string): string;
85
+ /**
86
+ * Parse linked PRs from manifest PR body
87
+ */
88
+ export declare function parseLinkedPRsFromBody(body: string): {
89
+ repoName: string;
90
+ number: number;
91
+ }[];
92
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/lib/github.ts"],"names":[],"mappings":"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"}