spec-copy-selection 1.0.1 → 1.0.3
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.
|
@@ -9,6 +9,35 @@ const promises_1 = require("node:fs/promises");
|
|
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
10
|
const node_readline_1 = require("node:readline");
|
|
11
11
|
const FILE_SIZE_THRESHOLD = 10 * 1024 * 1024;
|
|
12
|
+
function shouldPrependSeparator(filePath, startLine, linesBeforeStart) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (!filePath.includes('backlog.md')) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
if (startLine === 1) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return ((_a = linesBeforeStart[linesBeforeStart.length - 1]) === null || _a === void 0 ? void 0 : _a.trim()) !== '---';
|
|
21
|
+
}
|
|
22
|
+
async function insertSeparatorToFile(filePath, startLine, endLine, lines) {
|
|
23
|
+
const updatedLines = [
|
|
24
|
+
...lines.slice(0, startLine - 1),
|
|
25
|
+
'',
|
|
26
|
+
'---',
|
|
27
|
+
'',
|
|
28
|
+
...lines.slice(startLine - 1),
|
|
29
|
+
];
|
|
30
|
+
await (0, promises_1.writeFile)(filePath, updatedLines.join('\n'), 'utf-8');
|
|
31
|
+
const totalLinesAfterInsertion = updatedLines.length;
|
|
32
|
+
const newStartLine = startLine + 3;
|
|
33
|
+
const newEndLine = Math.min(endLine + 3, totalLinesAfterInsertion);
|
|
34
|
+
const content = updatedLines.slice(newStartLine - 1, newEndLine).join('\n');
|
|
35
|
+
return {
|
|
36
|
+
content,
|
|
37
|
+
startLine: newStartLine,
|
|
38
|
+
endLine: newEndLine,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
12
41
|
async function readFileRangeSmall(resolvedPath, filePath, startLine, endLine) {
|
|
13
42
|
let fileContent;
|
|
14
43
|
try {
|
|
@@ -33,7 +62,12 @@ async function readFileRangeSmall(resolvedPath, filePath, startLine, endLine) {
|
|
|
33
62
|
}
|
|
34
63
|
const actualEndLine = Math.min(endLine, totalLines);
|
|
35
64
|
const extractedLines = lines.slice(startLine - 1, actualEndLine);
|
|
36
|
-
|
|
65
|
+
const content = extractedLines.join('\n');
|
|
66
|
+
return {
|
|
67
|
+
content,
|
|
68
|
+
startLine,
|
|
69
|
+
endLine: actualEndLine,
|
|
70
|
+
};
|
|
37
71
|
}
|
|
38
72
|
async function readFileRangeLarge(resolvedPath, filePath, startLine, endLine) {
|
|
39
73
|
return new Promise((resolve, reject) => {
|
|
@@ -59,7 +93,12 @@ async function readFileRangeLarge(resolvedPath, filePath, startLine, endLine) {
|
|
|
59
93
|
}
|
|
60
94
|
if (currentLine >= endLine) {
|
|
61
95
|
cleanup();
|
|
62
|
-
|
|
96
|
+
const content = lines.join('\n');
|
|
97
|
+
resolve({
|
|
98
|
+
content,
|
|
99
|
+
startLine,
|
|
100
|
+
endLine: currentLine,
|
|
101
|
+
});
|
|
63
102
|
}
|
|
64
103
|
});
|
|
65
104
|
rl.on('close', () => {
|
|
@@ -69,7 +108,12 @@ async function readFileRangeLarge(resolvedPath, filePath, startLine, endLine) {
|
|
|
69
108
|
reject(new Error(`Invalid range: start line (${startLine}) exceeds file length (${currentLine} lines)`));
|
|
70
109
|
return;
|
|
71
110
|
}
|
|
72
|
-
|
|
111
|
+
const content = lines.join('\n');
|
|
112
|
+
resolve({
|
|
113
|
+
content,
|
|
114
|
+
startLine,
|
|
115
|
+
endLine: currentLine,
|
|
116
|
+
});
|
|
73
117
|
}
|
|
74
118
|
});
|
|
75
119
|
rl.on('error', (error) => {
|
|
@@ -105,6 +149,29 @@ async function readFileRange(filePath, startLine, endLine) {
|
|
|
105
149
|
throw new Error(`Permission denied: ${filePath}`);
|
|
106
150
|
}
|
|
107
151
|
}
|
|
152
|
+
if (resolvedPath.includes('backlog.md') && startLine > 1) {
|
|
153
|
+
let fileContent;
|
|
154
|
+
try {
|
|
155
|
+
fileContent = await (0, promises_1.readFile)(resolvedPath, 'utf-8');
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (error instanceof Error) {
|
|
159
|
+
if (error.code === 'ENOENT') {
|
|
160
|
+
throw new Error(`File not found: ${filePath}`);
|
|
161
|
+
}
|
|
162
|
+
if (error.code === 'EACCES') {
|
|
163
|
+
throw new Error(`Permission denied: ${filePath}`);
|
|
164
|
+
}
|
|
165
|
+
throw new Error(`Failed to read file: ${error.message}`);
|
|
166
|
+
}
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
const lines = fileContent.split('\n');
|
|
170
|
+
const linesBeforeStart = lines.slice(0, startLine - 1);
|
|
171
|
+
if (shouldPrependSeparator(resolvedPath, startLine, linesBeforeStart)) {
|
|
172
|
+
return insertSeparatorToFile(resolvedPath, startLine, endLine, lines);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
108
175
|
if (fileSize >= FILE_SIZE_THRESHOLD) {
|
|
109
176
|
return readFileRangeLarge(resolvedPath, filePath, startLine, endLine);
|
|
110
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readFileRange.js","sourceRoot":"","sources":["../../src/cli/readFileRange.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"readFileRange.js","sourceRoot":"","sources":["../../src/cli/readFileRange.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,18 +11,18 @@ const transform_1 = require("./transform");
|
|
|
11
11
|
async function main() {
|
|
12
12
|
try {
|
|
13
13
|
const args = (0, index_js_1.parseArgs)(process.argv.slice(2));
|
|
14
|
-
const content = await (0, index_js_1.readFileRange)(args.filePath, args.startLine, args.endLine);
|
|
14
|
+
const { content, startLine: updatedStartLine, endLine: updatedEndLine, } = await (0, index_js_1.readFileRange)(args.filePath, args.startLine, args.endLine);
|
|
15
15
|
const resolvedPath = node_path_1.default.resolve(process.cwd(), args.filePath);
|
|
16
16
|
const metadata = {
|
|
17
17
|
filePath: resolvedPath,
|
|
18
18
|
fileName: node_path_1.default.basename(resolvedPath),
|
|
19
19
|
extension: node_path_1.default.extname(resolvedPath),
|
|
20
|
-
lineRange: `${
|
|
20
|
+
lineRange: `${updatedStartLine}-${updatedEndLine}`,
|
|
21
21
|
};
|
|
22
22
|
const transform = (0, transform_1.compose)(transform_1.formatOutput, transform_1.stripFrontmatter);
|
|
23
23
|
const transformed = transform(content, metadata);
|
|
24
24
|
await clipboardy_1.default.write(transformed);
|
|
25
|
-
console.log(`✓ Copied lines ${
|
|
25
|
+
console.log(`✓ Copied lines ${updatedStartLine}-${updatedEndLine} from ${metadata.fileName} to clipboard`);
|
|
26
26
|
}
|
|
27
27
|
catch (error) {
|
|
28
28
|
console.error('Error:', error instanceof Error ? error.message : String(error));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,0DAA6B;AAC7B,4DAAmC;AACnC,6CAA0D;AAE1D,2CAAsE;AAEtE,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QAEH,MAAM,IAAI,GAAG,IAAA,oBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAG9C,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,0DAA6B;AAC7B,4DAAmC;AACnC,6CAA0D;AAE1D,2CAAsE;AAEtE,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QAEH,MAAM,IAAI,GAAG,IAAA,oBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAG9C,MAAM,EACJ,OAAO,EACP,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,cAAc,GACxB,GAAG,MAAM,IAAA,wBAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAGrE,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAiB;YAC7B,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,mBAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACrC,SAAS,EAAE,mBAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YACrC,SAAS,EAAE,GAAG,gBAAgB,IAAI,cAAc,EAAE;SACnD,CAAC;QAGF,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,wBAAY,EAAE,4BAAgB,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAGjD,MAAM,oBAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAGnC,OAAO,CAAC,GAAG,CACT,kBAAkB,gBAAgB,IAAI,cAAc,SAAS,QAAQ,CAAC,QAAQ,eAAe,CAC9F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -12,7 +12,7 @@ const formatOutput = (content, metadata) => {
|
|
|
12
12
|
const match = relativePath.match(backlogPattern);
|
|
13
13
|
if (match) {
|
|
14
14
|
const featureName = match[1];
|
|
15
|
-
return `spec: ${featureName}\n${content}
|
|
15
|
+
return `spec: ${featureName}\n${content}\n\n(note: this request was extracted from ${relativePath}:${lineRange})`;
|
|
16
16
|
}
|
|
17
17
|
return `${relativePath}:${lineRange}`;
|
|
18
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatOutput.js","sourceRoot":"","sources":["../../../src/transform/strategies/formatOutput.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAQtB,MAAM,YAAY,GAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAGzC,MAAM,YAAY,GAAG,mBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAGhF,MAAM,cAAc,GAAG,8BAA8B,CAAC;IACtD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAEjD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,SAAS,WAAW,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"formatOutput.js","sourceRoot":"","sources":["../../../src/transform/strategies/formatOutput.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAQtB,MAAM,YAAY,GAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAGzC,MAAM,YAAY,GAAG,mBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAGhF,MAAM,cAAc,GAAG,8BAA8B,CAAC;IACtD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAEjD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,SAAS,WAAW,KAAK,OAAO,8CAA8C,YAAY,IAAI,SAAS,GAAG,CAAC;IACpH,CAAC;IAGD,OAAO,GAAG,YAAY,IAAI,SAAS,EAAE,CAAC;AACxC,CAAC,CAAC;AAjBW,QAAA,YAAY,gBAiBvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spec-copy-selection",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "A CLI utility for copying text to clipboard",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"clipboardy": "^5.1.0"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
|
-
"dev": "bun run src/index.ts specs/cli-file-operations/backlog.md:
|
|
39
|
+
"dev": "bun run src/index.ts specs/cli-file-operations/backlog.md:69-70",
|
|
40
40
|
"build": "tsc",
|
|
41
41
|
"prepublishOnly": "bun run check && bun run build",
|
|
42
42
|
"lint": "biome lint .",
|