proj-track 1.0.0 → 2.0.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.
- package/README.md +27 -7
- package/dist/commands/gitignore.d.ts +13 -0
- package/dist/commands/gitignore.d.ts.map +1 -0
- package/dist/commands/gitignore.js +51 -0
- package/dist/commands/gitignore.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +9 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +49 -8
- package/dist/commands/list.js.map +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/ui/banner.d.ts +3 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +77 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/utils/file-handler.d.ts.map +1 -1
- package/dist/utils/file-handler.js +4 -1
- package/dist/utils/file-handler.js.map +1 -1
- package/dist/utils/shell-installer.d.ts.map +1 -1
- package/dist/utils/shell-installer.js +26 -0
- package/dist/utils/shell-installer.js.map +1 -1
- package/package.json +2 -1
- package/src/hooks/bash-hook.sh +8 -0
- package/src/hooks/zsh-hook.sh +18 -0
package/README.md
CHANGED
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="license" />
|
|
14
14
|
<img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="node" />
|
|
15
15
|
<img src="https://img.shields.io/badge/TypeScript-5.x-blue" alt="typescript" />
|
|
16
|
-
<img src="https://img.shields.io/badge/tests-
|
|
17
|
-
<a href="https://codecov.io/gh/Ali-Raza-Arain/proj-track"><img src="https://codecov.io/gh/Ali-Raza-Arain/proj-track/branch/main/graph/badge.svg" alt="codecov" /></a>
|
|
16
|
+
<img src="https://img.shields.io/badge/tests-57%20passed-green" alt="tests" />
|
|
17
|
+
<a href="https://codecov.io/gh/Ali-Raza-Arain/proj-track"><img src="https://codecov.io/gh/Ali-Raza-Arain/proj-track/branch/main/graph/badge.svg?style=for-the-badge" alt="codecov" /></a>
|
|
18
|
+
<!-- <img src="https://img.shields.io/npm/dt/proj-track?style=flat&color=blue&label=downloads" alt="downloads" /> -->
|
|
18
19
|
</p>
|
|
19
20
|
|
|
20
21
|
---
|
|
@@ -117,6 +118,7 @@ That's it. No `track "command"` needed. Everything is captured silently in the b
|
|
|
117
118
|
| `proj-track pause` | `tpause` | Pause auto-capture |
|
|
118
119
|
| `proj-track resume` | `tresume` | Resume auto-capture |
|
|
119
120
|
| `proj-track remove` | `tremove` | Remove tracking (saves history as `.txt`) |
|
|
121
|
+
| `proj-track gitignore` | — | Add proj-track files to `.gitignore` |
|
|
120
122
|
| `proj-track install` | — | Install shell hook to `.bashrc`/`.zshrc` |
|
|
121
123
|
| `proj-track uninstall` | — | Remove shell hook |
|
|
122
124
|
|
|
@@ -191,7 +193,7 @@ All data is stored locally in `.proj-track.json` in each project directory:
|
|
|
191
193
|
"projectName": "my-project",
|
|
192
194
|
"commands": [
|
|
193
195
|
{
|
|
194
|
-
"id":
|
|
196
|
+
"id": 1,
|
|
195
197
|
"command": "docker-compose up -d",
|
|
196
198
|
"timestamp": "3/19/2026, 8:00:00 PM"
|
|
197
199
|
}
|
|
@@ -230,7 +232,12 @@ npm test
|
|
|
230
232
|
|
|
231
233
|
## Contributing
|
|
232
234
|
|
|
233
|
-
|
|
235
|
+
We welcome contributions! Please read the [Contributing Guide](CONTRIBUTING.md) before submitting a PR.
|
|
236
|
+
|
|
237
|
+
- [Code of Conduct](CODE_OF_CONDUCT.md)
|
|
238
|
+
- [Security Policy](SECURITY.md)
|
|
239
|
+
|
|
240
|
+
Look for issues labeled [`good first issue`](https://github.com/Ali-Raza-Arain/proj-track/labels/good%20first%20issue) to get started.
|
|
234
241
|
|
|
235
242
|
---
|
|
236
243
|
|
|
@@ -242,9 +249,22 @@ To report vulnerabilities, please see our [Security Policy](SECURITY.md).
|
|
|
242
249
|
|
|
243
250
|
## Support
|
|
244
251
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
252
|
+
If this package helps you, consider supporting its development:
|
|
253
|
+
|
|
254
|
+
<a href="https://github.com/sponsors/Ali-Raza-Arain">
|
|
255
|
+
<img src="https://img.shields.io/badge/Sponsor_on_GitHub-EA4AAA?style=for-the-badge&logo=github-sponsors&logoColor=white" alt="GitHub Sponsors" />
|
|
256
|
+
</a>
|
|
257
|
+
<a href="https://buymeacoffee.com/alirazaarain">
|
|
258
|
+
<img src="https://img.shields.io/badge/Buy_Me_a_Coffee-FFDD00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black" alt="Buy Me a Coffee" />
|
|
259
|
+
</a>
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Contributors
|
|
264
|
+
|
|
265
|
+
<a href="https://github.com/ali-raza-arain/proj-track/graphs/contributors">
|
|
266
|
+
<img src="https://contrib.rocks/image?repo=ali-raza-arain/proj-track" />
|
|
267
|
+
</a>
|
|
248
268
|
|
|
249
269
|
---
|
|
250
270
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Add proj-track files to .gitignore.
|
|
3
|
+
* Creates the file if it doesn't exist, appends only missing entries.
|
|
4
|
+
*/
|
|
5
|
+
export declare function addToGitignore(dir?: string): {
|
|
6
|
+
added: string[];
|
|
7
|
+
alreadyPresent: string[];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Standalone gitignore command — adds proj-track files to .gitignore.
|
|
11
|
+
*/
|
|
12
|
+
export declare function gitignoreCommand(): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=gitignore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/commands/gitignore.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CA0B1F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWtD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
const PROJ_TRACK_FILES = [
|
|
5
|
+
'.proj-track.json',
|
|
6
|
+
'.proj-track.json.paused',
|
|
7
|
+
'.proj-track.txt',
|
|
8
|
+
'.proj-track-disabled',
|
|
9
|
+
];
|
|
10
|
+
const HEADER = '# proj-track';
|
|
11
|
+
/**
|
|
12
|
+
* Add proj-track files to .gitignore.
|
|
13
|
+
* Creates the file if it doesn't exist, appends only missing entries.
|
|
14
|
+
*/
|
|
15
|
+
export function addToGitignore(dir) {
|
|
16
|
+
const targetDir = dir || process.cwd();
|
|
17
|
+
const gitignorePath = path.join(targetDir, '.gitignore');
|
|
18
|
+
const existing = fs.existsSync(gitignorePath)
|
|
19
|
+
? fs.readFileSync(gitignorePath, 'utf-8')
|
|
20
|
+
: '';
|
|
21
|
+
const lines = existing.split('\n');
|
|
22
|
+
const added = [];
|
|
23
|
+
const alreadyPresent = [];
|
|
24
|
+
for (const file of PROJ_TRACK_FILES) {
|
|
25
|
+
if (lines.some(line => line.trim() === file)) {
|
|
26
|
+
alreadyPresent.push(file);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
added.push(file);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (added.length > 0) {
|
|
33
|
+
const newEntries = `\n${HEADER}\n${added.join('\n')}\n`;
|
|
34
|
+
fs.appendFileSync(gitignorePath, newEntries, 'utf-8');
|
|
35
|
+
}
|
|
36
|
+
return { added, alreadyPresent };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Standalone gitignore command — adds proj-track files to .gitignore.
|
|
40
|
+
*/
|
|
41
|
+
export async function gitignoreCommand() {
|
|
42
|
+
const { added, alreadyPresent } = addToGitignore();
|
|
43
|
+
if (added.length > 0) {
|
|
44
|
+
console.log(chalk.green('✓ Added proj-track files to .gitignore:'));
|
|
45
|
+
added.forEach(f => console.log(chalk.dim(` ${f}`)));
|
|
46
|
+
}
|
|
47
|
+
if (alreadyPresent.length === PROJ_TRACK_FILES.length) {
|
|
48
|
+
console.log(chalk.yellow('All proj-track files are already in .gitignore.'));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=gitignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/commands/gitignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,gBAAgB,GAAG;IACvB,kBAAkB;IAClB,yBAAyB;IACzB,iBAAiB;IACjB,sBAAsB;CACvB,CAAC;AAEF,MAAM,MAAM,GAAG,cAAc,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;QACzC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,KAAK,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAEnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA8DjD"}
|
package/dist/commands/init.js
CHANGED
|
@@ -3,6 +3,7 @@ import path from 'node:path';
|
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { readHistory, writeHistory } from '../utils/file-handler.js';
|
|
5
5
|
import { installShellFunction, isShellFunctionInstalled } from '../utils/shell-installer.js';
|
|
6
|
+
import { addToGitignore } from './gitignore.js';
|
|
6
7
|
/**
|
|
7
8
|
* Initialize proj-track in the current project.
|
|
8
9
|
* Creates .proj-track.json and installs auto-capture hook if needed.
|
|
@@ -32,6 +33,14 @@ export async function initCommand() {
|
|
|
32
33
|
// Create initial history file
|
|
33
34
|
const history = readHistory();
|
|
34
35
|
writeHistory(history);
|
|
36
|
+
// Auto-add to .gitignore if it exists
|
|
37
|
+
const gitignorePath = path.join(process.cwd(), '.gitignore');
|
|
38
|
+
if (fs.existsSync(gitignorePath)) {
|
|
39
|
+
const { added } = addToGitignore();
|
|
40
|
+
if (added.length > 0) {
|
|
41
|
+
console.log(chalk.green('✓ Added proj-track files to .gitignore'));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
35
44
|
console.log(chalk.green('✓ proj-track initialized in this project.'));
|
|
36
45
|
console.log(chalk.dim(` Created ${configPath}`));
|
|
37
46
|
// Install shell hook if not already installed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAsDjD"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
+
import Table from 'cli-table3';
|
|
2
3
|
import { readHistory } from '../utils/file-handler.js';
|
|
3
4
|
import { isProjectDirectory, isTrackingPaused } from '../utils/project-detector.js';
|
|
5
|
+
const CMD_MAX_LEN = 50;
|
|
6
|
+
function formatTimestamp(ts) {
|
|
7
|
+
try {
|
|
8
|
+
const date = new Date(ts);
|
|
9
|
+
if (isNaN(date.getTime()))
|
|
10
|
+
return ts;
|
|
11
|
+
const mon = String(date.getMonth() + 1).padStart(2, '0');
|
|
12
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
13
|
+
const hr = String(date.getHours()).padStart(2, '0');
|
|
14
|
+
const min = String(date.getMinutes()).padStart(2, '0');
|
|
15
|
+
return `${mon}/${day} ${hr}:${min}`;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return ts;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function truncate(str, max) {
|
|
22
|
+
return str.length > max ? str.slice(0, max) + '...' : str;
|
|
23
|
+
}
|
|
4
24
|
/**
|
|
5
25
|
* List all tracked commands for the current project.
|
|
6
26
|
*/
|
|
@@ -15,20 +35,41 @@ export async function listCommand() {
|
|
|
15
35
|
}
|
|
16
36
|
const history = readHistory();
|
|
17
37
|
if (history.commands.length === 0) {
|
|
18
|
-
console.log(
|
|
19
|
-
console.log(chalk.dim('
|
|
38
|
+
console.log('');
|
|
39
|
+
console.log(chalk.dim(' No commands tracked yet.'));
|
|
40
|
+
console.log(chalk.dim(' Commands are auto-captured as you work. Try running some commands!'));
|
|
41
|
+
console.log('');
|
|
20
42
|
return;
|
|
21
43
|
}
|
|
22
44
|
console.log('');
|
|
23
45
|
console.log(chalk.bold(` Tracked Commands (${history.commands.length})`));
|
|
24
|
-
console.log(
|
|
25
|
-
|
|
46
|
+
console.log('');
|
|
47
|
+
const table = new Table({
|
|
48
|
+
head: [
|
|
49
|
+
chalk.cyan('ID'),
|
|
50
|
+
chalk.dim('Time'),
|
|
51
|
+
chalk.white('Command'),
|
|
52
|
+
],
|
|
53
|
+
style: { head: [], border: ['dim'], 'padding-left': 1, 'padding-right': 1 },
|
|
54
|
+
chars: {
|
|
55
|
+
'top': '─', 'top-mid': '┬', 'top-left': '┌', 'top-right': '┐',
|
|
56
|
+
'bottom': '─', 'bottom-mid': '┴', 'bottom-left': '└', 'bottom-right': '┘',
|
|
57
|
+
'left': '│', 'left-mid': '├', 'mid': '─', 'mid-mid': '┼',
|
|
58
|
+
'right': '│', 'right-mid': '┤', 'middle': '│',
|
|
59
|
+
},
|
|
60
|
+
colAligns: ['right', 'left', 'left'],
|
|
61
|
+
});
|
|
26
62
|
for (const entry of history.commands) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
63
|
+
table.push([
|
|
64
|
+
chalk.cyan(String(entry.id)),
|
|
65
|
+
// chalk.dim(formatTimestamp(entry.timestamp)),
|
|
66
|
+
chalk.dim(entry.timestamp),
|
|
67
|
+
chalk.white(truncate(entry.command, CMD_MAX_LEN)),
|
|
68
|
+
]);
|
|
31
69
|
}
|
|
70
|
+
console.log(table.toString());
|
|
71
|
+
console.log('');
|
|
72
|
+
console.log(chalk.dim(` Run a command: proj-track run <id>`));
|
|
32
73
|
console.log('');
|
|
33
74
|
}
|
|
34
75
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEpF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC,CAAC;QAChG,OAAO;IACT,CAAC;IAED,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
+
import { createRequire } from 'module';
|
|
3
4
|
import { initCommand } from './commands/init.js';
|
|
4
5
|
import { listCommand } from './commands/list.js';
|
|
5
6
|
import { runCommand } from './commands/run.js';
|
|
@@ -7,13 +8,29 @@ import { clearCommand } from './commands/clear.js';
|
|
|
7
8
|
import { pauseCommand } from './commands/pause.js';
|
|
8
9
|
import { resumeCommand } from './commands/resume.js';
|
|
9
10
|
import { removeCommand } from './commands/remove.js';
|
|
11
|
+
import { gitignoreCommand } from './commands/gitignore.js';
|
|
10
12
|
import { installShellFunction, uninstallShellFunction } from './utils/shell-installer.js';
|
|
13
|
+
import { getFullHelp } from './ui/banner.js';
|
|
11
14
|
import chalk from 'chalk';
|
|
15
|
+
const require = createRequire(import.meta.url);
|
|
16
|
+
const { version } = require('../package.json');
|
|
12
17
|
const program = new Command();
|
|
13
18
|
program
|
|
14
19
|
.name('proj-track')
|
|
15
20
|
.description('Track CLI command history per-project with zero terminal interference')
|
|
16
|
-
.version('
|
|
21
|
+
.version(version, '-V, --version')
|
|
22
|
+
.helpOption(false)
|
|
23
|
+
.addHelpCommand(false);
|
|
24
|
+
// Custom --help flag
|
|
25
|
+
program.option('-h, --help', 'Display help for command');
|
|
26
|
+
program.on('option:help', () => {
|
|
27
|
+
console.log(getFullHelp(version));
|
|
28
|
+
process.exit(0);
|
|
29
|
+
});
|
|
30
|
+
// Show custom help when no args
|
|
31
|
+
program.action(() => {
|
|
32
|
+
console.log(getFullHelp(version));
|
|
33
|
+
});
|
|
17
34
|
program
|
|
18
35
|
.command('init')
|
|
19
36
|
.description('Initialize proj-track in the current project')
|
|
@@ -42,6 +59,10 @@ program
|
|
|
42
59
|
.command('remove')
|
|
43
60
|
.description('Remove proj-track from the current project (saves history as .txt)')
|
|
44
61
|
.action(removeCommand);
|
|
62
|
+
program
|
|
63
|
+
.command('gitignore')
|
|
64
|
+
.description('Add proj-track files to .gitignore')
|
|
65
|
+
.action(gitignoreCommand);
|
|
45
66
|
program
|
|
46
67
|
.command('install')
|
|
47
68
|
.description('Install the shell function to .bashrc/.zshrc')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,uEAAuE,CAAC;KACpF,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA8BjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAyDnD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export function getBanner(version) {
|
|
3
|
+
const w = 55;
|
|
4
|
+
const hr = '─'.repeat(w + 2);
|
|
5
|
+
const center = (raw, styled) => {
|
|
6
|
+
const totalPadding = w - raw.length;
|
|
7
|
+
const leftPadding = Math.floor(totalPadding / 2);
|
|
8
|
+
const rightPadding = Math.ceil(totalPadding / 2);
|
|
9
|
+
return ' '.repeat(leftPadding) + styled + ' '.repeat(Math.max(0, rightPadding));
|
|
10
|
+
};
|
|
11
|
+
const line = (raw, styled) => ` ${chalk.cyan('│')} ${center(raw, styled)} ${chalk.cyan('│')}`;
|
|
12
|
+
const title = `proj-track v${version}`;
|
|
13
|
+
const tagline = 'Auto-capture CLI history per-project';
|
|
14
|
+
const features = '✓ Zero interference ✓ VS Code ready ✓ TypeScript';
|
|
15
|
+
const box = [
|
|
16
|
+
'',
|
|
17
|
+
` ${chalk.cyan('┌' + hr + '┐')}`,
|
|
18
|
+
` ${chalk.cyan('│')} ${' '.repeat(w)} ${chalk.cyan('│')}`,
|
|
19
|
+
line(title, `${chalk.bold.white('proj-track')} ${chalk.dim(`v${version}`)}`),
|
|
20
|
+
line(tagline, chalk.dim(tagline)),
|
|
21
|
+
line(features, `${chalk.green('✓')} Zero interference ${chalk.green('✓')} VS Code ready ${chalk.green('✓')} TypeScript`),
|
|
22
|
+
` ${chalk.cyan('│')} ${' '.repeat(w)} ${chalk.cyan('│')}`,
|
|
23
|
+
` ${chalk.cyan('└' + hr + '┘')}`,
|
|
24
|
+
].join('\n');
|
|
25
|
+
return box;
|
|
26
|
+
}
|
|
27
|
+
export function getFullHelp(version) {
|
|
28
|
+
const banner = getBanner(version);
|
|
29
|
+
const s = (label, desc) => ` ${chalk.cyan(label.padEnd(18))}${chalk.dim(desc)}`;
|
|
30
|
+
const example = (cmd, comment) => ` ${chalk.green('$')} ${chalk.white(cmd.padEnd(30))}${chalk.dim(`# ${comment}`)}`;
|
|
31
|
+
const link = (label, url) => ` ${chalk.bold(label.padEnd(11))}${chalk.cyan(url)}`;
|
|
32
|
+
const sections = [
|
|
33
|
+
banner,
|
|
34
|
+
'',
|
|
35
|
+
`${chalk.bold('Usage:')} proj-track ${chalk.dim('[options] [command]')}`,
|
|
36
|
+
'',
|
|
37
|
+
chalk.dim('Track CLI command history per-project with zero terminal interference.'),
|
|
38
|
+
chalk.dim('Commands are auto-captured when you press Enter — no manual typing needed.'),
|
|
39
|
+
'',
|
|
40
|
+
chalk.bold('Options:'),
|
|
41
|
+
` ${chalk.cyan('-V, --version'.padEnd(18))}${chalk.dim('Output the version number')}`,
|
|
42
|
+
` ${chalk.cyan('-h, --help'.padEnd(18))}${chalk.dim('Display help for command')}`,
|
|
43
|
+
'',
|
|
44
|
+
chalk.bold('Commands:'),
|
|
45
|
+
` ${chalk.yellow('Setup')}`,
|
|
46
|
+
s('init', 'Initialize proj-track in current project'),
|
|
47
|
+
s('install', 'Install shell hook to .bashrc/.zshrc'),
|
|
48
|
+
s('uninstall', 'Remove shell hook from .bashrc/.zshrc'),
|
|
49
|
+
'',
|
|
50
|
+
` ${chalk.yellow('View & Run')}`,
|
|
51
|
+
s('list', 'List tracked commands'),
|
|
52
|
+
s('run <id>', 'Re-run a tracked command by ID'),
|
|
53
|
+
s('clear', 'Clear command history'),
|
|
54
|
+
'',
|
|
55
|
+
` ${chalk.yellow('Manage')}`,
|
|
56
|
+
s('pause', 'Pause tracking in current project'),
|
|
57
|
+
s('resume', 'Resume tracking in current project'),
|
|
58
|
+
s('remove', 'Remove proj-track (saves history as .txt)'),
|
|
59
|
+
s('gitignore', 'Add proj-track files to .gitignore'),
|
|
60
|
+
'',
|
|
61
|
+
chalk.bold('Quick Start:'),
|
|
62
|
+
example('proj-track init', 'Initialize in current project'),
|
|
63
|
+
example('proj-track list', 'View tracked commands'),
|
|
64
|
+
example('proj-track run 2', 'Re-run command #2'),
|
|
65
|
+
example('proj-track pause', 'Temporarily stop tracking'),
|
|
66
|
+
'',
|
|
67
|
+
chalk.bold('Links:'),
|
|
68
|
+
link('Docs', 'https://ali-raza-arain.github.io/proj-track/'),
|
|
69
|
+
link('npm', 'https://npmjs.com/package/proj-track'),
|
|
70
|
+
link('Issues', 'https://github.com/ali-raza-arain/proj-track/issues'),
|
|
71
|
+
'',
|
|
72
|
+
chalk.dim(`Made with ${chalk.red('❤')} by Ali Raza`),
|
|
73
|
+
'',
|
|
74
|
+
];
|
|
75
|
+
return sections.join('\n');
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-handler.d.ts","sourceRoot":"","sources":["../../src/utils/file-handler.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AASD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAuBjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"file-handler.d.ts","sourceRoot":"","sources":["../../src/utils/file-handler.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AASD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAuBjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CA2BjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAe/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGlF"}
|
|
@@ -51,8 +51,11 @@ export function appendCommand(command, dir) {
|
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
const lastId = history.commands.length > 0
|
|
55
|
+
? history.commands[history.commands.length - 1].id
|
|
56
|
+
: 0;
|
|
54
57
|
history.commands.push({
|
|
55
|
-
id:
|
|
58
|
+
id: lastId + 1,
|
|
56
59
|
command,
|
|
57
60
|
timestamp: new Date().toLocaleString(),
|
|
58
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-handler.js","sourceRoot":"","sources":["../../src/utils/file-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAa7B,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACxC,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChD,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACxC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACpE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;SAC5D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChD,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,GAAY;IACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAAY;IACzD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAEjC,8CAA8C;IAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QACtE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;IACH,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"file-handler.js","sourceRoot":"","sources":["../../src/utils/file-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAa7B,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACxC,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChD,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACxC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACpE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;SAC5D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChD,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,GAAY;IACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAAY;IACzD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAEjC,8CAA8C;IAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QACtE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;QAClD,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,EAAE,EAAE,MAAM,GAAG,CAAC;QACd,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE;KACvC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QAC3C,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;IACtB,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,MAAM,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACvE,CAAC,CAAC,4BAA4B,CAAC;IAEjC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU,EAAE,GAAY;IACtD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-installer.d.ts","sourceRoot":"","sources":["../../src/utils/shell-installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shell-installer.d.ts","sourceRoot":"","sources":["../../src/utils/shell-installer.ts"],"names":[],"mappings":"AAyOA;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAgB/C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAejD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAGlD"}
|
|
@@ -86,6 +86,14 @@ else
|
|
|
86
86
|
PROMPT_COMMAND='__proj_track_capture'
|
|
87
87
|
fi
|
|
88
88
|
|
|
89
|
+
# Tab completion
|
|
90
|
+
_proj_track_completions() {
|
|
91
|
+
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
92
|
+
local commands="init list run clear pause resume remove gitignore install uninstall"
|
|
93
|
+
COMPREPLY=($(compgen -W "$commands" -- "$cur"))
|
|
94
|
+
}
|
|
95
|
+
complete -F _proj_track_completions proj-track
|
|
96
|
+
|
|
89
97
|
alias thistory='proj-track list 2>/dev/null'
|
|
90
98
|
alias trun='proj-track run'
|
|
91
99
|
alias tclear='proj-track clear'
|
|
@@ -129,6 +137,24 @@ __proj_track_preexec() {
|
|
|
129
137
|
autoload -Uz add-zsh-hook
|
|
130
138
|
add-zsh-hook preexec __proj_track_preexec
|
|
131
139
|
|
|
140
|
+
# Tab completion
|
|
141
|
+
_proj_track_completions() {
|
|
142
|
+
local commands=(
|
|
143
|
+
'init:Initialize proj-track in the current project'
|
|
144
|
+
'list:List tracked commands'
|
|
145
|
+
'run:Re-run a tracked command by its ID'
|
|
146
|
+
'clear:Clear command history'
|
|
147
|
+
'pause:Pause tracking in the current project'
|
|
148
|
+
'resume:Resume tracking in the current project'
|
|
149
|
+
'remove:Remove proj-track from the current project'
|
|
150
|
+
'gitignore:Add proj-track files to .gitignore'
|
|
151
|
+
'install:Install the shell function to .bashrc/.zshrc'
|
|
152
|
+
'uninstall:Remove the shell function from .bashrc/.zshrc'
|
|
153
|
+
)
|
|
154
|
+
_describe 'command' commands
|
|
155
|
+
}
|
|
156
|
+
compdef _proj_track_completions proj-track 2>/dev/null
|
|
157
|
+
|
|
132
158
|
alias thistory='proj-track list 2>/dev/null'
|
|
133
159
|
alias trun='proj-track run'
|
|
134
160
|
alias tclear='proj-track clear'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-installer.js","sourceRoot":"","sources":["../../src/utils/shell-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,YAAY,GAAG,iCAAiC,CAAC;AACvD,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAEnD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;GAEG;AACH,SAAS,WAAW;IAClB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAExC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAqB;IAC3C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC;IAEzD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,GAAG,YAAY
|
|
1
|
+
{"version":3,"file":"shell-installer.js","sourceRoot":"","sources":["../../src/utils/shell-installer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "proj-track",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Auto-capture CLI command history per-project with zero terminal interference.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"license": "MIT",
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"chalk": "^5.3.0",
|
|
60
|
+
"cli-table3": "^0.6.5",
|
|
60
61
|
"commander": "^12.1.0"
|
|
61
62
|
},
|
|
62
63
|
"devDependencies": {
|
package/src/hooks/bash-hook.sh
CHANGED
|
@@ -56,6 +56,14 @@ else
|
|
|
56
56
|
PROMPT_COMMAND='__proj_track_capture'
|
|
57
57
|
fi
|
|
58
58
|
|
|
59
|
+
# Tab completion
|
|
60
|
+
_proj_track_completions() {
|
|
61
|
+
local cur="${COMP_WORDS[COMP_CWORD]}"
|
|
62
|
+
local commands="init list run clear pause resume remove gitignore install uninstall"
|
|
63
|
+
COMPREPLY=($(compgen -W "$commands" -- "$cur"))
|
|
64
|
+
}
|
|
65
|
+
complete -F _proj_track_completions proj-track
|
|
66
|
+
|
|
59
67
|
# Convenience aliases (manual commands still available)
|
|
60
68
|
alias thistory='proj-track list 2>/dev/null'
|
|
61
69
|
alias trun='proj-track run'
|
package/src/hooks/zsh-hook.sh
CHANGED
|
@@ -43,6 +43,24 @@ __proj_track_preexec() {
|
|
|
43
43
|
autoload -Uz add-zsh-hook
|
|
44
44
|
add-zsh-hook preexec __proj_track_preexec
|
|
45
45
|
|
|
46
|
+
# Tab completion
|
|
47
|
+
_proj_track_completions() {
|
|
48
|
+
local commands=(
|
|
49
|
+
'init:Initialize proj-track in the current project'
|
|
50
|
+
'list:List tracked commands'
|
|
51
|
+
'run:Re-run a tracked command by its ID'
|
|
52
|
+
'clear:Clear command history'
|
|
53
|
+
'pause:Pause tracking in the current project'
|
|
54
|
+
'resume:Resume tracking in the current project'
|
|
55
|
+
'remove:Remove proj-track from the current project'
|
|
56
|
+
'gitignore:Add proj-track files to .gitignore'
|
|
57
|
+
'install:Install the shell function to .bashrc/.zshrc'
|
|
58
|
+
'uninstall:Remove the shell function from .bashrc/.zshrc'
|
|
59
|
+
)
|
|
60
|
+
_describe 'command' commands
|
|
61
|
+
}
|
|
62
|
+
compdef _proj_track_completions proj-track 2>/dev/null
|
|
63
|
+
|
|
46
64
|
# Convenience aliases
|
|
47
65
|
alias thistory='proj-track list 2>/dev/null'
|
|
48
66
|
alias trun='proj-track run'
|