git-easy-worktree 1.1.1 → 1.1.2
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 -8
- package/dist/index.js +7 -19
- package/dist/index.js.map +1 -1
- package/package.json +1 -3
- package/dist/tui.d.ts +0 -9
- package/dist/tui.d.ts.map +0 -1
- package/dist/tui.js +0 -191
- package/dist/tui.js.map +0 -1
package/README.md
CHANGED
|
@@ -18,12 +18,9 @@ npm link
|
|
|
18
18
|
## Usage
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
git-wt
|
|
21
|
+
git-wt <repo-url> <branch-name> [options]
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
> In an interactive terminal, `git-wt` always launches the full-screen TUI.
|
|
25
|
-
> Optional `repo-url` and `branch-name` are used as prefilled values.
|
|
26
|
-
|
|
27
24
|
### Options
|
|
28
25
|
|
|
29
26
|
- `-d, --dir <directory>`: Base directory for worktrees (default: current directory)
|
|
@@ -31,11 +28,13 @@ git-wt [repo-url] [branch-name] [options]
|
|
|
31
28
|
### Example
|
|
32
29
|
|
|
33
30
|
```bash
|
|
34
|
-
#
|
|
35
|
-
git-wt
|
|
36
|
-
|
|
37
|
-
# Launch TUI with prefilled repository and branch
|
|
31
|
+
# Create a worktree for the 'master' branch of Hello-World
|
|
38
32
|
git-wt https://github.com/octocat/Hello-World.git master
|
|
33
|
+
|
|
34
|
+
# Resulting structure:
|
|
35
|
+
# ./Hello-World/
|
|
36
|
+
# .bare/ (Bare repository)
|
|
37
|
+
# master/ (Worktree)
|
|
39
38
|
```
|
|
40
39
|
|
|
41
40
|
## Development
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,6 @@ import boxen from 'boxen';
|
|
|
9
9
|
import figlet from 'figlet';
|
|
10
10
|
import gradient from 'gradient-string';
|
|
11
11
|
import { createRequire } from 'node:module';
|
|
12
|
-
import { collectInputsWithTui } from './tui.js';
|
|
13
12
|
const require = createRequire(import.meta.url);
|
|
14
13
|
const { version } = require('../package.json');
|
|
15
14
|
const MISSING_BRANCH_PATTERNS = ['invalid reference', 'not a valid object name'];
|
|
@@ -32,25 +31,14 @@ const resolveRepoName = (url) => {
|
|
|
32
31
|
}
|
|
33
32
|
return repoName;
|
|
34
33
|
};
|
|
35
|
-
const resolveInputs =
|
|
34
|
+
const resolveInputs = (urlArg, branchArg, dirArg) => {
|
|
36
35
|
const url = urlArg?.trim();
|
|
37
36
|
const branch = branchArg?.trim();
|
|
38
37
|
const dir = dirArg.trim() || process.cwd();
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
if (url) {
|
|
42
|
-
initialValues.url = url;
|
|
43
|
-
}
|
|
44
|
-
if (branch) {
|
|
45
|
-
initialValues.branch = branch;
|
|
46
|
-
}
|
|
47
|
-
return collectInputsWithTui(initialValues);
|
|
48
|
-
}
|
|
49
|
-
// Non-interactive environments cannot render TUI, so keep a script-friendly fallback.
|
|
50
|
-
if (url && branch) {
|
|
51
|
-
return { url, branch, dir };
|
|
38
|
+
if (!url || !branch) {
|
|
39
|
+
throw new Error('Usage: git-wt <repo-url> <branch-name> [options]');
|
|
52
40
|
}
|
|
53
|
-
|
|
41
|
+
return { url, branch, dir };
|
|
54
42
|
};
|
|
55
43
|
const ensureBareRepository = async (url, bareRepoPath, spinner) => {
|
|
56
44
|
const git = simpleGit();
|
|
@@ -113,13 +101,13 @@ const run = async () => {
|
|
|
113
101
|
.name('git-wt')
|
|
114
102
|
.description('A CLI tool to create git worktrees from a repository URL and branch name')
|
|
115
103
|
.version(version)
|
|
116
|
-
.argument('
|
|
117
|
-
.argument('
|
|
104
|
+
.argument('<url>', 'Git repository URL')
|
|
105
|
+
.argument('<branch>', 'Branch name to checkout')
|
|
118
106
|
.option('-d, --dir <directory>', 'Base directory for worktrees', process.cwd())
|
|
119
107
|
.action(async (urlArg, branchArg, options) => {
|
|
120
108
|
const spinner = ora();
|
|
121
109
|
try {
|
|
122
|
-
const { url, branch, dir } =
|
|
110
|
+
const { url, branch, dir } = resolveInputs(urlArg, branchArg, options.dir);
|
|
123
111
|
const repoName = resolveRepoName(url);
|
|
124
112
|
const baseDir = path.resolve(dir);
|
|
125
113
|
const repoDir = path.join(baseDir, repoName);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "git-easy-worktree",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "CLI tool to create git worktrees from URL",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
"author": "",
|
|
29
29
|
"license": "ISC",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"blessed": "^0.1.81",
|
|
32
31
|
"boxen": "^8.0.1",
|
|
33
32
|
"chalk": "^4.1.2",
|
|
34
33
|
"commander": "^14.0.3",
|
|
@@ -39,7 +38,6 @@
|
|
|
39
38
|
"simple-git": "^3.30.0"
|
|
40
39
|
},
|
|
41
40
|
"devDependencies": {
|
|
42
|
-
"@types/blessed": "^0.1.25",
|
|
43
41
|
"@types/figlet": "^1.7.0",
|
|
44
42
|
"@types/fs-extra": "^11.0.4",
|
|
45
43
|
"@types/gradient-string": "^1.1.6",
|
package/dist/tui.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
type WorkspaceInputs = {
|
|
2
|
-
url: string;
|
|
3
|
-
branch: string;
|
|
4
|
-
dir: string;
|
|
5
|
-
};
|
|
6
|
-
type PartialInputs = Partial<WorkspaceInputs>;
|
|
7
|
-
export declare const collectInputsWithTui: (initial: PartialInputs) => Promise<WorkspaceInputs>;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=tui.d.ts.map
|
package/dist/tui.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAoD9C,eAAO,MAAM,oBAAoB,GAAI,SAAS,aAAa,KAAG,OAAO,CAAC,eAAe,CAkLjF,CAAC"}
|
package/dist/tui.js
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import blessed from 'blessed';
|
|
2
|
-
const createLabeledInput = (screen, parent, label, top, value) => {
|
|
3
|
-
blessed.text({
|
|
4
|
-
parent,
|
|
5
|
-
top,
|
|
6
|
-
left: 2,
|
|
7
|
-
width: 16,
|
|
8
|
-
height: 1,
|
|
9
|
-
content: label,
|
|
10
|
-
style: {
|
|
11
|
-
fg: 'cyan',
|
|
12
|
-
},
|
|
13
|
-
});
|
|
14
|
-
const input = blessed.textbox({
|
|
15
|
-
parent,
|
|
16
|
-
inputOnFocus: true,
|
|
17
|
-
mouse: true,
|
|
18
|
-
keys: true,
|
|
19
|
-
top,
|
|
20
|
-
left: 20,
|
|
21
|
-
right: 2,
|
|
22
|
-
height: 3,
|
|
23
|
-
border: 'line',
|
|
24
|
-
value,
|
|
25
|
-
style: {
|
|
26
|
-
fg: 'white',
|
|
27
|
-
border: { fg: 'gray' },
|
|
28
|
-
focus: { border: { fg: 'green' } },
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
input.on('focus', () => {
|
|
32
|
-
screen.render();
|
|
33
|
-
});
|
|
34
|
-
return input;
|
|
35
|
-
};
|
|
36
|
-
const toInitialValue = (value) => value?.trim() ?? '';
|
|
37
|
-
export const collectInputsWithTui = (initial) => new Promise((resolve, reject) => {
|
|
38
|
-
const screen = blessed.screen({
|
|
39
|
-
smartCSR: true,
|
|
40
|
-
title: 'Git Easy WT',
|
|
41
|
-
fullUnicode: true,
|
|
42
|
-
});
|
|
43
|
-
const root = blessed.box({
|
|
44
|
-
parent: screen,
|
|
45
|
-
top: 'center',
|
|
46
|
-
left: 'center',
|
|
47
|
-
width: '90%',
|
|
48
|
-
height: '90%',
|
|
49
|
-
border: 'line',
|
|
50
|
-
style: {
|
|
51
|
-
border: { fg: 'blue' },
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
blessed.box({
|
|
55
|
-
parent: root,
|
|
56
|
-
top: 1,
|
|
57
|
-
left: 2,
|
|
58
|
-
right: 2,
|
|
59
|
-
height: 2,
|
|
60
|
-
tags: true,
|
|
61
|
-
content: '{bold}Git Easy Worktree TUI{/bold} | Fill values and press Enter to continue',
|
|
62
|
-
style: {
|
|
63
|
-
fg: 'white',
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
const form = blessed.form({
|
|
67
|
-
parent: root,
|
|
68
|
-
top: 4,
|
|
69
|
-
left: 1,
|
|
70
|
-
right: 1,
|
|
71
|
-
bottom: 4,
|
|
72
|
-
keys: true,
|
|
73
|
-
mouse: true,
|
|
74
|
-
});
|
|
75
|
-
const urlInput = createLabeledInput(screen, form, 'Repository URL', 0, toInitialValue(initial.url));
|
|
76
|
-
const branchInput = createLabeledInput(screen, form, 'Branch', 4, toInitialValue(initial.branch));
|
|
77
|
-
const dirInput = createLabeledInput(screen, form, 'Base Dir', 8, toInitialValue(initial.dir || process.cwd()));
|
|
78
|
-
const message = blessed.box({
|
|
79
|
-
parent: root,
|
|
80
|
-
left: 2,
|
|
81
|
-
right: 2,
|
|
82
|
-
bottom: 2,
|
|
83
|
-
height: 1,
|
|
84
|
-
tags: true,
|
|
85
|
-
content: '{gray-fg}Tab/Shift+Tab switch focus · Enter submit · Esc cancel{/gray-fg}',
|
|
86
|
-
});
|
|
87
|
-
const submitButton = blessed.button({
|
|
88
|
-
parent: form,
|
|
89
|
-
mouse: true,
|
|
90
|
-
keys: true,
|
|
91
|
-
shrink: true,
|
|
92
|
-
top: 13,
|
|
93
|
-
left: 20,
|
|
94
|
-
padding: { left: 2, right: 2 },
|
|
95
|
-
name: 'submit',
|
|
96
|
-
content: 'Submit',
|
|
97
|
-
style: {
|
|
98
|
-
fg: 'black',
|
|
99
|
-
bg: 'green',
|
|
100
|
-
focus: { bg: 'white', fg: 'black' },
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
const cancelButton = blessed.button({
|
|
104
|
-
parent: form,
|
|
105
|
-
mouse: true,
|
|
106
|
-
keys: true,
|
|
107
|
-
shrink: true,
|
|
108
|
-
top: 13,
|
|
109
|
-
left: 34,
|
|
110
|
-
padding: { left: 2, right: 2 },
|
|
111
|
-
name: 'cancel',
|
|
112
|
-
content: 'Cancel',
|
|
113
|
-
style: {
|
|
114
|
-
fg: 'white',
|
|
115
|
-
bg: 'red',
|
|
116
|
-
focus: { bg: 'white', fg: 'black' },
|
|
117
|
-
},
|
|
118
|
-
});
|
|
119
|
-
const focusables = [urlInput, branchInput, dirInput, submitButton, cancelButton];
|
|
120
|
-
let focusIndex = 0;
|
|
121
|
-
let settled = false;
|
|
122
|
-
const focusAt = (index) => {
|
|
123
|
-
const normalized = (index + focusables.length) % focusables.length;
|
|
124
|
-
const target = focusables[normalized];
|
|
125
|
-
if (!target) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
focusIndex = normalized;
|
|
129
|
-
target.focus();
|
|
130
|
-
screen.render();
|
|
131
|
-
};
|
|
132
|
-
const setError = (content) => {
|
|
133
|
-
message.setContent(`{red-fg}${content}{/red-fg}`);
|
|
134
|
-
screen.render();
|
|
135
|
-
};
|
|
136
|
-
const cleanup = () => {
|
|
137
|
-
screen.destroy();
|
|
138
|
-
};
|
|
139
|
-
const settle = (handler) => {
|
|
140
|
-
if (settled) {
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
settled = true;
|
|
144
|
-
cleanup();
|
|
145
|
-
handler();
|
|
146
|
-
};
|
|
147
|
-
const cancel = () => {
|
|
148
|
-
settle(() => reject(new Error('Cancelled by user.')));
|
|
149
|
-
};
|
|
150
|
-
const submit = () => {
|
|
151
|
-
const url = urlInput.getValue().trim();
|
|
152
|
-
const branch = branchInput.getValue().trim();
|
|
153
|
-
const dir = dirInput.getValue().trim();
|
|
154
|
-
if (!url) {
|
|
155
|
-
setError('Repository URL is required.');
|
|
156
|
-
focusAt(0);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
if (!branch) {
|
|
160
|
-
setError('Branch is required.');
|
|
161
|
-
focusAt(1);
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
if (!dir) {
|
|
165
|
-
setError('Base directory is required.');
|
|
166
|
-
focusAt(2);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
settle(() => resolve({ url, branch, dir }));
|
|
170
|
-
};
|
|
171
|
-
screen.key(['tab'], () => focusAt(focusIndex + 1));
|
|
172
|
-
screen.key(['S-tab'], () => focusAt(focusIndex - 1));
|
|
173
|
-
screen.key(['escape', 'q', 'C-c'], cancel);
|
|
174
|
-
screen.key(['C-s'], submit);
|
|
175
|
-
// With inputOnFocus=true, Textbox handles Enter internally. Hook into its
|
|
176
|
-
// submit event instead of keypress to avoid racing blessed's _done cleanup.
|
|
177
|
-
urlInput.on('submit', () => {
|
|
178
|
-
setImmediate(() => focusAt(1));
|
|
179
|
-
});
|
|
180
|
-
branchInput.on('submit', () => {
|
|
181
|
-
setImmediate(() => focusAt(2));
|
|
182
|
-
});
|
|
183
|
-
dirInput.on('submit', () => {
|
|
184
|
-
setImmediate(submit);
|
|
185
|
-
});
|
|
186
|
-
submitButton.on('press', submit);
|
|
187
|
-
cancelButton.on('press', cancel);
|
|
188
|
-
form.on('submit', submit);
|
|
189
|
-
focusAt(0);
|
|
190
|
-
});
|
|
191
|
-
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|