@camaradesuk/git-worktree-tools 1.0.5 ā 1.1.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 +7 -0
- package/dist/cli/cleanpr.d.ts +1 -6
- package/dist/cli/cleanpr.d.ts.map +1 -1
- package/dist/cli/cleanpr.js +110 -302
- package/dist/cli/cleanpr.js.map +1 -1
- package/dist/cli/cleanpr.test.d.ts +2 -0
- package/dist/cli/cleanpr.test.d.ts.map +1 -0
- package/dist/cli/cleanpr.test.js +225 -0
- package/dist/cli/cleanpr.test.js.map +1 -0
- package/dist/cli/lswt.d.ts +1 -4
- package/dist/cli/lswt.d.ts.map +1 -1
- package/dist/cli/lswt.js +32 -251
- package/dist/cli/lswt.js.map +1 -1
- package/dist/cli/lswt.test.d.ts +2 -0
- package/dist/cli/lswt.test.d.ts.map +1 -0
- package/dist/cli/lswt.test.js +165 -0
- package/dist/cli/lswt.test.js.map +1 -0
- package/dist/cli/newpr.d.ts +1 -4
- package/dist/cli/newpr.d.ts.map +1 -1
- package/dist/cli/newpr.js +98 -493
- package/dist/cli/newpr.js.map +1 -1
- package/dist/cli/newpr.test.d.ts +2 -0
- package/dist/cli/newpr.test.d.ts.map +1 -0
- package/dist/cli/newpr.test.js +329 -0
- package/dist/cli/newpr.test.js.map +1 -0
- package/dist/cli/wtlink.test.d.ts +2 -0
- package/dist/cli/wtlink.test.d.ts.map +1 -0
- package/dist/cli/wtlink.test.js +148 -0
- package/dist/cli/wtlink.test.js.map +1 -0
- package/dist/e2e/cli.e2e.test.js +44 -1
- package/dist/e2e/cli.e2e.test.js.map +1 -1
- package/dist/lib/cleanpr/args.d.ts +14 -0
- package/dist/lib/cleanpr/args.d.ts.map +1 -0
- package/dist/lib/cleanpr/args.js +82 -0
- package/dist/lib/cleanpr/args.js.map +1 -0
- package/dist/lib/cleanpr/args.test.d.ts +2 -0
- package/dist/lib/cleanpr/args.test.d.ts.map +1 -0
- package/dist/lib/cleanpr/args.test.js +192 -0
- package/dist/lib/cleanpr/args.test.js.map +1 -0
- package/dist/lib/cleanpr/cleanup.d.ts +61 -0
- package/dist/lib/cleanpr/cleanup.d.ts.map +1 -0
- package/dist/lib/cleanpr/cleanup.js +97 -0
- package/dist/lib/cleanpr/cleanup.js.map +1 -0
- package/dist/lib/cleanpr/cleanup.test.d.ts +2 -0
- package/dist/lib/cleanpr/cleanup.test.d.ts.map +1 -0
- package/dist/lib/cleanpr/cleanup.test.js +264 -0
- package/dist/lib/cleanpr/cleanup.test.js.map +1 -0
- package/dist/lib/cleanpr/index.d.ts +10 -0
- package/dist/lib/cleanpr/index.d.ts.map +1 -0
- package/dist/lib/cleanpr/index.js +8 -0
- package/dist/lib/cleanpr/index.js.map +1 -0
- package/dist/lib/cleanpr/types.d.ts +49 -0
- package/dist/lib/cleanpr/types.d.ts.map +1 -0
- package/dist/lib/cleanpr/types.js +5 -0
- package/dist/lib/cleanpr/types.js.map +1 -0
- package/dist/lib/cleanpr/worktree-info.d.ts +27 -0
- package/dist/lib/cleanpr/worktree-info.d.ts.map +1 -0
- package/dist/lib/cleanpr/worktree-info.js +95 -0
- package/dist/lib/cleanpr/worktree-info.js.map +1 -0
- package/dist/lib/cleanpr/worktree-info.test.d.ts +2 -0
- package/dist/lib/cleanpr/worktree-info.test.d.ts.map +1 -0
- package/dist/lib/cleanpr/worktree-info.test.js +160 -0
- package/dist/lib/cleanpr/worktree-info.test.js.map +1 -0
- package/dist/lib/colors.test.js +73 -0
- package/dist/lib/colors.test.js.map +1 -1
- package/dist/lib/config.test.js +79 -2
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +4 -3
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/git.test.js +7 -7
- package/dist/lib/git.test.js.map +1 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +23 -30
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/github.test.js +49 -12
- package/dist/lib/github.test.js.map +1 -1
- package/dist/lib/lswt/args.d.ts +14 -0
- package/dist/lib/lswt/args.d.ts.map +1 -0
- package/dist/lib/lswt/args.js +67 -0
- package/dist/lib/lswt/args.js.map +1 -0
- package/dist/lib/lswt/args.test.d.ts +2 -0
- package/dist/lib/lswt/args.test.d.ts.map +1 -0
- package/dist/lib/lswt/args.test.js +135 -0
- package/dist/lib/lswt/args.test.js.map +1 -0
- package/dist/lib/lswt/formatters.d.ts +29 -0
- package/dist/lib/lswt/formatters.d.ts.map +1 -0
- package/dist/lib/lswt/formatters.js +113 -0
- package/dist/lib/lswt/formatters.js.map +1 -0
- package/dist/lib/lswt/formatters.test.d.ts +2 -0
- package/dist/lib/lswt/formatters.test.d.ts.map +1 -0
- package/dist/lib/lswt/formatters.test.js +233 -0
- package/dist/lib/lswt/formatters.test.js.map +1 -0
- package/dist/lib/lswt/index.d.ts +9 -0
- package/dist/lib/lswt/index.d.ts.map +1 -0
- package/dist/lib/lswt/index.js +9 -0
- package/dist/lib/lswt/index.js.map +1 -0
- package/dist/lib/lswt/types.d.ts +44 -0
- package/dist/lib/lswt/types.d.ts.map +1 -0
- package/dist/lib/lswt/types.js +5 -0
- package/dist/lib/lswt/types.js.map +1 -0
- package/dist/lib/lswt/worktree-info.d.ts +23 -0
- package/dist/lib/lswt/worktree-info.d.ts.map +1 -0
- package/dist/lib/lswt/worktree-info.js +81 -0
- package/dist/lib/lswt/worktree-info.js.map +1 -0
- package/dist/lib/lswt/worktree-info.test.d.ts +2 -0
- package/dist/lib/lswt/worktree-info.test.d.ts.map +1 -0
- package/dist/lib/lswt/worktree-info.test.js +190 -0
- package/dist/lib/lswt/worktree-info.test.js.map +1 -0
- package/dist/lib/newpr/actions.d.ts +56 -0
- package/dist/lib/newpr/actions.d.ts.map +1 -0
- package/dist/lib/newpr/actions.js +130 -0
- package/dist/lib/newpr/actions.js.map +1 -0
- package/dist/lib/newpr/actions.test.d.ts +2 -0
- package/dist/lib/newpr/actions.test.d.ts.map +1 -0
- package/dist/lib/newpr/actions.test.js +254 -0
- package/dist/lib/newpr/actions.test.js.map +1 -0
- package/dist/lib/newpr/args.d.ts +17 -0
- package/dist/lib/newpr/args.d.ts.map +1 -0
- package/dist/lib/newpr/args.js +123 -0
- package/dist/lib/newpr/args.js.map +1 -0
- package/dist/lib/newpr/args.test.d.ts +2 -0
- package/dist/lib/newpr/args.test.d.ts.map +1 -0
- package/dist/lib/newpr/args.test.js +271 -0
- package/dist/lib/newpr/args.test.js.map +1 -0
- package/dist/lib/newpr/index.d.ts +10 -0
- package/dist/lib/newpr/index.d.ts.map +1 -0
- package/dist/lib/newpr/index.js +8 -0
- package/dist/lib/newpr/index.js.map +1 -0
- package/dist/lib/newpr/scenario-handler.d.ts +40 -0
- package/dist/lib/newpr/scenario-handler.d.ts.map +1 -0
- package/dist/lib/newpr/scenario-handler.js +261 -0
- package/dist/lib/newpr/scenario-handler.js.map +1 -0
- package/dist/lib/newpr/scenario-handler.test.d.ts +2 -0
- package/dist/lib/newpr/scenario-handler.test.d.ts.map +1 -0
- package/dist/lib/newpr/scenario-handler.test.js +250 -0
- package/dist/lib/newpr/scenario-handler.test.js.map +1 -0
- package/dist/lib/newpr/types.d.ts +76 -0
- package/dist/lib/newpr/types.d.ts.map +1 -0
- package/dist/lib/newpr/types.js +5 -0
- package/dist/lib/newpr/types.js.map +1 -0
- package/dist/lib/state-detection.d.ts.map +1 -1
- package/dist/lib/state-detection.js +12 -3
- package/dist/lib/state-detection.js.map +1 -1
- package/dist/lib/state-detection.test.js +253 -2
- package/dist/lib/state-detection.test.js.map +1 -1
- package/dist/lib/wtlink/link-configs.d.ts +40 -0
- package/dist/lib/wtlink/link-configs.d.ts.map +1 -1
- package/dist/lib/wtlink/link-configs.js +126 -11
- package/dist/lib/wtlink/link-configs.js.map +1 -1
- package/dist/lib/wtlink/link-configs.test.js +237 -84
- package/dist/lib/wtlink/link-configs.test.js.map +1 -1
- package/dist/lib/wtlink/manage-manifest.d.ts +86 -0
- package/dist/lib/wtlink/manage-manifest.d.ts.map +1 -1
- package/dist/lib/wtlink/manage-manifest.js +16 -15
- package/dist/lib/wtlink/manage-manifest.js.map +1 -1
- package/dist/lib/wtlink/manage-manifest.test.d.ts +2 -0
- package/dist/lib/wtlink/manage-manifest.test.d.ts.map +1 -0
- package/dist/lib/wtlink/manage-manifest.test.js +383 -0
- package/dist/lib/wtlink/manage-manifest.test.js.map +1 -0
- package/dist/lib/wtlink/validate-manifest.d.ts +27 -0
- package/dist/lib/wtlink/validate-manifest.d.ts.map +1 -1
- package/dist/lib/wtlink/validate-manifest.js +103 -28
- package/dist/lib/wtlink/validate-manifest.js.map +1 -1
- package/dist/lib/wtlink/validate-manifest.test.js +170 -65
- package/dist/lib/wtlink/validate-manifest.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { gatherWorktreeInfo, createDefaultDeps } from './worktree-info.js';
|
|
3
|
+
describe('lswt/worktree-info', () => {
|
|
4
|
+
const makeWorktree = (overrides = {}) => ({
|
|
5
|
+
path: '/home/user/repo',
|
|
6
|
+
branch: 'main',
|
|
7
|
+
commit: 'abc123',
|
|
8
|
+
isMain: true,
|
|
9
|
+
isBare: false,
|
|
10
|
+
isLocked: false,
|
|
11
|
+
isPrunable: false,
|
|
12
|
+
...overrides,
|
|
13
|
+
});
|
|
14
|
+
const makeDeps = (overrides = {}) => ({
|
|
15
|
+
listWorktrees: () => [],
|
|
16
|
+
hasUncommittedChanges: () => false,
|
|
17
|
+
getPrState: async () => null,
|
|
18
|
+
...overrides,
|
|
19
|
+
});
|
|
20
|
+
const defaultOptions = {
|
|
21
|
+
showStatus: false,
|
|
22
|
+
json: false,
|
|
23
|
+
verbose: false,
|
|
24
|
+
};
|
|
25
|
+
describe('gatherWorktreeInfo', () => {
|
|
26
|
+
it('returns empty array when no worktrees', async () => {
|
|
27
|
+
const deps = makeDeps({ listWorktrees: () => [] });
|
|
28
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
29
|
+
expect(result).toEqual([]);
|
|
30
|
+
});
|
|
31
|
+
it('identifies main worktree', async () => {
|
|
32
|
+
const worktrees = [makeWorktree({ path: '/home/user/repo', branch: 'main' })];
|
|
33
|
+
const deps = makeDeps({ listWorktrees: () => worktrees });
|
|
34
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
35
|
+
expect(result).toHaveLength(1);
|
|
36
|
+
expect(result[0].type).toBe('main');
|
|
37
|
+
expect(result[0].name).toBe('repo');
|
|
38
|
+
});
|
|
39
|
+
it('identifies PR worktree from path pattern', async () => {
|
|
40
|
+
const worktrees = [
|
|
41
|
+
makeWorktree({ path: '/home/user/repo', branch: 'main' }),
|
|
42
|
+
makeWorktree({ path: '/home/user/repo.pr42', branch: 'feature', isMain: false }),
|
|
43
|
+
];
|
|
44
|
+
const deps = makeDeps({ listWorktrees: () => worktrees });
|
|
45
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
46
|
+
expect(result).toHaveLength(2);
|
|
47
|
+
expect(result[0].type).toBe('main');
|
|
48
|
+
expect(result[1].type).toBe('pr');
|
|
49
|
+
expect(result[1].prNumber).toBe(42);
|
|
50
|
+
});
|
|
51
|
+
it('identifies branch worktree', async () => {
|
|
52
|
+
const worktrees = [
|
|
53
|
+
makeWorktree({ path: '/home/user/repo', branch: 'main' }),
|
|
54
|
+
makeWorktree({ path: '/home/user/feature-branch', branch: 'feature', isMain: false }),
|
|
55
|
+
];
|
|
56
|
+
const deps = makeDeps({ listWorktrees: () => worktrees });
|
|
57
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
58
|
+
expect(result).toHaveLength(2);
|
|
59
|
+
const branchWorktree = result.find((w) => w.name === 'feature-branch');
|
|
60
|
+
expect(branchWorktree?.type).toBe('branch');
|
|
61
|
+
});
|
|
62
|
+
it('identifies detached worktree', async () => {
|
|
63
|
+
const worktrees = [
|
|
64
|
+
makeWorktree({ path: '/home/user/repo', branch: 'main' }),
|
|
65
|
+
makeWorktree({ path: '/home/user/detached-wt', branch: null, isMain: false }),
|
|
66
|
+
];
|
|
67
|
+
const deps = makeDeps({ listWorktrees: () => worktrees });
|
|
68
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
69
|
+
expect(result).toHaveLength(2);
|
|
70
|
+
const detachedWorktree = result.find((w) => w.name === 'detached-wt');
|
|
71
|
+
expect(detachedWorktree?.type).toBe('detached');
|
|
72
|
+
});
|
|
73
|
+
it('includes hasChanges from dependency', async () => {
|
|
74
|
+
const worktrees = [makeWorktree({ path: '/home/user/repo', branch: 'main' })];
|
|
75
|
+
const deps = makeDeps({
|
|
76
|
+
listWorktrees: () => worktrees,
|
|
77
|
+
hasUncommittedChanges: () => true,
|
|
78
|
+
});
|
|
79
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
80
|
+
expect(result[0].hasChanges).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
it('does not fetch PR state when showStatus is false', async () => {
|
|
83
|
+
const worktrees = [
|
|
84
|
+
makeWorktree({ path: '/home/user/repo.pr1', branch: 'feature', isMain: false }),
|
|
85
|
+
];
|
|
86
|
+
const getPrState = vi.fn().mockResolvedValue('OPEN');
|
|
87
|
+
const deps = makeDeps({
|
|
88
|
+
listWorktrees: () => worktrees,
|
|
89
|
+
getPrState,
|
|
90
|
+
});
|
|
91
|
+
await gatherWorktreeInfo('/home/user/other', { ...defaultOptions, showStatus: false }, deps);
|
|
92
|
+
expect(getPrState).not.toHaveBeenCalled();
|
|
93
|
+
});
|
|
94
|
+
it('fetches PR state when showStatus is true', async () => {
|
|
95
|
+
const worktrees = [
|
|
96
|
+
makeWorktree({ path: '/home/user/repo.pr1', branch: 'feature', isMain: false }),
|
|
97
|
+
];
|
|
98
|
+
const getPrState = vi.fn().mockResolvedValue('OPEN');
|
|
99
|
+
const deps = makeDeps({
|
|
100
|
+
listWorktrees: () => worktrees,
|
|
101
|
+
getPrState,
|
|
102
|
+
});
|
|
103
|
+
const result = await gatherWorktreeInfo('/home/user/other', { ...defaultOptions, showStatus: true }, deps);
|
|
104
|
+
expect(getPrState).toHaveBeenCalledWith(1);
|
|
105
|
+
expect(result[0].prState).toBe('OPEN');
|
|
106
|
+
});
|
|
107
|
+
it('handles null PR state', async () => {
|
|
108
|
+
const worktrees = [
|
|
109
|
+
makeWorktree({ path: '/home/user/repo.pr99', branch: 'feature', isMain: false }),
|
|
110
|
+
];
|
|
111
|
+
const deps = makeDeps({
|
|
112
|
+
listWorktrees: () => worktrees,
|
|
113
|
+
getPrState: async () => null,
|
|
114
|
+
});
|
|
115
|
+
const result = await gatherWorktreeInfo('/home/user/other', { ...defaultOptions, showStatus: true }, deps);
|
|
116
|
+
expect(result[0].prState).toBeNull();
|
|
117
|
+
});
|
|
118
|
+
it('returns sorted worktrees (main first, then PRs by number)', async () => {
|
|
119
|
+
const worktrees = [
|
|
120
|
+
makeWorktree({ path: '/home/user/repo.pr10', branch: 'f1', isMain: false }),
|
|
121
|
+
makeWorktree({ path: '/home/user/repo.pr2', branch: 'f2', isMain: false }),
|
|
122
|
+
makeWorktree({ path: '/home/user/repo', branch: 'main' }),
|
|
123
|
+
];
|
|
124
|
+
const deps = makeDeps({ listWorktrees: () => worktrees });
|
|
125
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
126
|
+
expect(result[0].type).toBe('main');
|
|
127
|
+
expect(result[1].prNumber).toBe(2);
|
|
128
|
+
expect(result[2].prNumber).toBe(10);
|
|
129
|
+
});
|
|
130
|
+
it('includes commit from worktree', async () => {
|
|
131
|
+
const worktrees = [makeWorktree({ path: '/home/user/repo', commit: 'deadbeef' })];
|
|
132
|
+
const deps = makeDeps({ listWorktrees: () => worktrees });
|
|
133
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
134
|
+
expect(result[0].commit).toBe('deadbeef');
|
|
135
|
+
});
|
|
136
|
+
it('includes branch from worktree', async () => {
|
|
137
|
+
const worktrees = [makeWorktree({ path: '/home/user/repo', branch: 'develop' })];
|
|
138
|
+
const deps = makeDeps({ listWorktrees: () => worktrees });
|
|
139
|
+
const result = await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
140
|
+
expect(result[0].branch).toBe('develop');
|
|
141
|
+
});
|
|
142
|
+
it('calls hasUncommittedChanges for each worktree', async () => {
|
|
143
|
+
const worktrees = [
|
|
144
|
+
makeWorktree({ path: '/home/user/repo', branch: 'main' }),
|
|
145
|
+
makeWorktree({ path: '/home/user/repo.pr1', branch: 'f1', isMain: false }),
|
|
146
|
+
];
|
|
147
|
+
const hasUncommittedChanges = vi.fn().mockReturnValue(false);
|
|
148
|
+
const deps = makeDeps({
|
|
149
|
+
listWorktrees: () => worktrees,
|
|
150
|
+
hasUncommittedChanges,
|
|
151
|
+
});
|
|
152
|
+
await gatherWorktreeInfo('/home/user/repo', defaultOptions, deps);
|
|
153
|
+
expect(hasUncommittedChanges).toHaveBeenCalledTimes(2);
|
|
154
|
+
expect(hasUncommittedChanges).toHaveBeenCalledWith('/home/user/repo');
|
|
155
|
+
expect(hasUncommittedChanges).toHaveBeenCalledWith('/home/user/repo.pr1');
|
|
156
|
+
});
|
|
157
|
+
it('handles multiple PR state fetches', async () => {
|
|
158
|
+
const worktrees = [
|
|
159
|
+
makeWorktree({ path: '/home/user/repo.pr1', branch: 'f1', isMain: false }),
|
|
160
|
+
makeWorktree({ path: '/home/user/repo.pr2', branch: 'f2', isMain: false }),
|
|
161
|
+
makeWorktree({ path: '/home/user/repo.pr3', branch: 'f3', isMain: false }),
|
|
162
|
+
];
|
|
163
|
+
const getPrState = vi
|
|
164
|
+
.fn()
|
|
165
|
+
.mockResolvedValueOnce('OPEN')
|
|
166
|
+
.mockResolvedValueOnce('MERGED')
|
|
167
|
+
.mockResolvedValueOnce('CLOSED');
|
|
168
|
+
const deps = makeDeps({
|
|
169
|
+
listWorktrees: () => worktrees,
|
|
170
|
+
getPrState,
|
|
171
|
+
});
|
|
172
|
+
const result = await gatherWorktreeInfo('/home/user/other', { ...defaultOptions, showStatus: true }, deps);
|
|
173
|
+
expect(result[0].prState).toBe('OPEN');
|
|
174
|
+
expect(result[1].prState).toBe('MERGED');
|
|
175
|
+
expect(result[2].prState).toBe('CLOSED');
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
describe('createDefaultDeps', () => {
|
|
179
|
+
it('returns object with required methods', () => {
|
|
180
|
+
const deps = createDefaultDeps();
|
|
181
|
+
expect(deps).toHaveProperty('listWorktrees');
|
|
182
|
+
expect(deps).toHaveProperty('hasUncommittedChanges');
|
|
183
|
+
expect(deps).toHaveProperty('getPrState');
|
|
184
|
+
expect(typeof deps.listWorktrees).toBe('function');
|
|
185
|
+
expect(typeof deps.hasUncommittedChanges).toBe('function');
|
|
186
|
+
expect(typeof deps.getPrState).toBe('function');
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=worktree-info.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-info.test.js","sourceRoot":"","sources":["../../../src/lib/lswt/worktree-info.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* newpr actions - git operations with dependency injection
|
|
3
|
+
*
|
|
4
|
+
* Executes state actions based on scenario handler decisions.
|
|
5
|
+
* Uses dependency injection for testability.
|
|
6
|
+
*/
|
|
7
|
+
import type { StateAction, ActionResult } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Dependencies interface for action execution
|
|
10
|
+
*/
|
|
11
|
+
export interface ActionDeps {
|
|
12
|
+
gitAdd: (path: string, cwd?: string) => void;
|
|
13
|
+
gitStash: (options: {
|
|
14
|
+
message?: string;
|
|
15
|
+
keepIndex?: boolean;
|
|
16
|
+
}, cwd?: string) => string | null;
|
|
17
|
+
gitPush: (options: {
|
|
18
|
+
remote: string;
|
|
19
|
+
branch: string;
|
|
20
|
+
setUpstream?: boolean;
|
|
21
|
+
}, cwd?: string) => void;
|
|
22
|
+
gitCommit: (options: {
|
|
23
|
+
message: string;
|
|
24
|
+
allowEmpty?: boolean;
|
|
25
|
+
}, cwd?: string) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Execute a state action and return result
|
|
29
|
+
* Pure function with injected dependencies
|
|
30
|
+
*/
|
|
31
|
+
export declare function executeStateAction(action: StateAction, _description: string, branchName: string, deps: ActionDeps, cwd?: string): ActionResult;
|
|
32
|
+
/**
|
|
33
|
+
* Get the git branch point for an action
|
|
34
|
+
*/
|
|
35
|
+
export declare function getBranchPoint(action: StateAction, baseBranch: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Check if action requires staging all changes
|
|
38
|
+
*/
|
|
39
|
+
export declare function requiresStageAll(action: StateAction): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Check if action involves stashing
|
|
42
|
+
*/
|
|
43
|
+
export declare function involvesStashing(action: StateAction): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Check if action needs to push to origin/main first
|
|
46
|
+
*/
|
|
47
|
+
export declare function needsPushToMain(action: StateAction): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if action commits to current branch before PR
|
|
50
|
+
*/
|
|
51
|
+
export declare function commitsToCurrentBranch(action: StateAction): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Get the action description for logging
|
|
54
|
+
*/
|
|
55
|
+
export declare function getActionDescription(action: StateAction): string;
|
|
56
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/lib/newpr/actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9F,OAAO,EAAE,CACP,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,EAClE,GAAG,CAAC,EAAE,MAAM,KACT,IAAI,CAAC;IACV,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACvF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,YAAY,CAsEd;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAM7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA6BhE"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* newpr actions - git operations with dependency injection
|
|
3
|
+
*
|
|
4
|
+
* Executes state actions based on scenario handler decisions.
|
|
5
|
+
* Uses dependency injection for testability.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Execute a state action and return result
|
|
9
|
+
* Pure function with injected dependencies
|
|
10
|
+
*/
|
|
11
|
+
export function executeStateAction(action, _description, branchName, deps, cwd) {
|
|
12
|
+
let stashRef = null;
|
|
13
|
+
try {
|
|
14
|
+
switch (action.action) {
|
|
15
|
+
case 'empty_commit':
|
|
16
|
+
// No action needed before branch creation
|
|
17
|
+
break;
|
|
18
|
+
case 'commit_staged':
|
|
19
|
+
// Will commit staged changes after creating branch
|
|
20
|
+
break;
|
|
21
|
+
case 'commit_all':
|
|
22
|
+
deps.gitAdd('.', cwd);
|
|
23
|
+
break;
|
|
24
|
+
case 'stash_and_empty':
|
|
25
|
+
stashRef = deps.gitStash({ message: `newpr: auto-stash before creating ${branchName}` }, cwd);
|
|
26
|
+
break;
|
|
27
|
+
case 'use_commits':
|
|
28
|
+
case 'branch_from_detached':
|
|
29
|
+
// Branch from HEAD instead of origin/main - no pre-action needed
|
|
30
|
+
break;
|
|
31
|
+
case 'use_commits_and_commit_all':
|
|
32
|
+
deps.gitAdd('.', cwd);
|
|
33
|
+
break;
|
|
34
|
+
case 'use_commits_and_stash':
|
|
35
|
+
stashRef = deps.gitStash({ message: `newpr: auto-stash before creating ${branchName}` }, cwd);
|
|
36
|
+
break;
|
|
37
|
+
case 'push_then_branch':
|
|
38
|
+
deps.gitPush({ remote: 'origin', branch: 'main' }, cwd);
|
|
39
|
+
break;
|
|
40
|
+
case 'pr_for_branch_commit_all':
|
|
41
|
+
deps.gitAdd('.', cwd);
|
|
42
|
+
deps.gitCommit({ message: 'chore: work in progress\n\nš¤ Committed with newpr' }, cwd);
|
|
43
|
+
break;
|
|
44
|
+
case 'pr_for_branch_stash':
|
|
45
|
+
stashRef = deps.gitStash({ message: 'newpr: auto-stash before creating PR' }, cwd);
|
|
46
|
+
break;
|
|
47
|
+
case 'create_pr_for_branch':
|
|
48
|
+
// No pre-action needed - will delegate to existing branch mode
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
success: true,
|
|
53
|
+
stashRef,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
stashRef,
|
|
61
|
+
message,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get the git branch point for an action
|
|
67
|
+
*/
|
|
68
|
+
export function getBranchPoint(action, baseBranch) {
|
|
69
|
+
return action.branchFrom === 'head' ? 'HEAD' : `origin/${baseBranch}`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if action requires staging all changes
|
|
73
|
+
*/
|
|
74
|
+
export function requiresStageAll(action) {
|
|
75
|
+
return action.action === 'commit_all' || action.action === 'use_commits_and_commit_all';
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if action involves stashing
|
|
79
|
+
*/
|
|
80
|
+
export function involvesStashing(action) {
|
|
81
|
+
return (action.action === 'stash_and_empty' ||
|
|
82
|
+
action.action === 'use_commits_and_stash' ||
|
|
83
|
+
action.action === 'pr_for_branch_stash');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if action needs to push to origin/main first
|
|
87
|
+
*/
|
|
88
|
+
export function needsPushToMain(action) {
|
|
89
|
+
return action.action === 'push_then_branch';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if action commits to current branch before PR
|
|
93
|
+
*/
|
|
94
|
+
export function commitsToCurrentBranch(action) {
|
|
95
|
+
return action.action === 'pr_for_branch_commit_all';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get the action description for logging
|
|
99
|
+
*/
|
|
100
|
+
export function getActionDescription(action) {
|
|
101
|
+
switch (action.action) {
|
|
102
|
+
case 'empty_commit':
|
|
103
|
+
return 'Creating empty initial commit';
|
|
104
|
+
case 'commit_staged':
|
|
105
|
+
return 'Committing staged changes';
|
|
106
|
+
case 'commit_all':
|
|
107
|
+
return 'Staging and committing all changes';
|
|
108
|
+
case 'stash_and_empty':
|
|
109
|
+
return 'Stashing changes and creating empty commit';
|
|
110
|
+
case 'use_commits':
|
|
111
|
+
return 'Using existing commits for PR';
|
|
112
|
+
case 'push_then_branch':
|
|
113
|
+
return 'Pushing to main before creating branch';
|
|
114
|
+
case 'use_commits_and_commit_all':
|
|
115
|
+
return 'Using commits and staging all changes';
|
|
116
|
+
case 'use_commits_and_stash':
|
|
117
|
+
return 'Using commits and stashing uncommitted changes';
|
|
118
|
+
case 'create_pr_for_branch':
|
|
119
|
+
return 'Creating PR for current branch';
|
|
120
|
+
case 'pr_for_branch_commit_all':
|
|
121
|
+
return 'Committing changes to current branch for PR';
|
|
122
|
+
case 'pr_for_branch_stash':
|
|
123
|
+
return 'Stashing changes before creating PR';
|
|
124
|
+
case 'branch_from_detached':
|
|
125
|
+
return 'Creating branch from detached HEAD';
|
|
126
|
+
default:
|
|
127
|
+
return 'Executing action';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/lib/newpr/actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAmB,EACnB,YAAoB,EACpB,UAAkB,EAClB,IAAgB,EAChB,GAAY;IAEZ,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,IAAI,CAAC;QACH,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,cAAc;gBACjB,0CAA0C;gBAC1C,MAAM;YAER,KAAK,eAAe;gBAClB,mDAAmD;gBACnD,MAAM;YAER,KAAK,YAAY;gBACf,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtB,MAAM;YAER,KAAK,iBAAiB;gBACpB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CACtB,EAAE,OAAO,EAAE,qCAAqC,UAAU,EAAE,EAAE,EAC9D,GAAG,CACJ,CAAC;gBACF,MAAM;YAER,KAAK,aAAa,CAAC;YACnB,KAAK,sBAAsB;gBACzB,iEAAiE;gBACjE,MAAM;YAER,KAAK,4BAA4B;gBAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtB,MAAM;YAER,KAAK,uBAAuB;gBAC1B,QAAQ,GAAG,IAAI,CAAC,QAAQ,CACtB,EAAE,OAAO,EAAE,qCAAqC,UAAU,EAAE,EAAE,EAC9D,GAAG,CACJ,CAAC;gBACF,MAAM;YAER,KAAK,kBAAkB;gBACrB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YAER,KAAK,0BAA0B;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,oDAAoD,EAAE,EAAE,GAAG,CAAC,CAAC;gBACvF,MAAM;YAER,KAAK,qBAAqB;gBACxB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnF,MAAM;YAER,KAAK,sBAAsB;gBACzB,+DAA+D;gBAC/D,MAAM;QACV,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ;YACR,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,UAAkB;IACpE,OAAO,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,UAAU,EAAE,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmB;IAClD,OAAO,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,4BAA4B,CAAC;AAC1F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmB;IAClD,OAAO,CACL,MAAM,CAAC,MAAM,KAAK,iBAAiB;QACnC,MAAM,CAAC,MAAM,KAAK,uBAAuB;QACzC,MAAM,CAAC,MAAM,KAAK,qBAAqB,CACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,OAAO,MAAM,CAAC,MAAM,KAAK,kBAAkB,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmB;IACxD,OAAO,MAAM,CAAC,MAAM,KAAK,0BAA0B,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,cAAc;YACjB,OAAO,+BAA+B,CAAC;QACzC,KAAK,eAAe;YAClB,OAAO,2BAA2B,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,oCAAoC,CAAC;QAC9C,KAAK,iBAAiB;YACpB,OAAO,4CAA4C,CAAC;QACtD,KAAK,aAAa;YAChB,OAAO,+BAA+B,CAAC;QACzC,KAAK,kBAAkB;YACrB,OAAO,wCAAwC,CAAC;QAClD,KAAK,4BAA4B;YAC/B,OAAO,uCAAuC,CAAC;QACjD,KAAK,uBAAuB;YAC1B,OAAO,gDAAgD,CAAC;QAC1D,KAAK,sBAAsB;YACzB,OAAO,gCAAgC,CAAC;QAC1C,KAAK,0BAA0B;YAC7B,OAAO,6CAA6C,CAAC;QACvD,KAAK,qBAAqB;YACxB,OAAO,qCAAqC,CAAC;QAC/C,KAAK,sBAAsB;YACzB,OAAO,oCAAoC,CAAC;QAC9C;YACE,OAAO,kBAAkB,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.test.d.ts","sourceRoot":"","sources":["../../../src/lib/newpr/actions.test.ts"],"names":[],"mappings":""}
|