scottkosman 1.1.2 → 1.1.4
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 +12 -0
- package/dist/commands/info.js +4 -4
- package/dist/utils/menuItems.d.ts +7 -0
- package/dist/utils/menuItems.d.ts.map +1 -0
- package/dist/utils/menuItems.js +51 -0
- package/dist/utils/menuItems.js.map +1 -0
- package/dist/utils/welcome.d.ts.map +1 -1
- package/dist/utils/welcome.js +8 -58
- package/dist/utils/welcome.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -127,6 +127,18 @@ npm run lint
|
|
|
127
127
|
npm run format
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
+
### Running Tests
|
|
131
|
+
|
|
132
|
+
This project uses [Jest](https://jestjs.io/) and [ts-jest](https://kulshekhar.github.io/ts-jest/) for testing.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npm test
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- Tests are located in `src/**/*.test.ts`
|
|
139
|
+
- Menu logic and data are tested in isolation for reliability
|
|
140
|
+
- To add more tests, create additional `*.test.ts` files
|
|
141
|
+
|
|
130
142
|
### Publishing
|
|
131
143
|
|
|
132
144
|
The project includes automated publishing scripts:
|
package/dist/commands/info.js
CHANGED
|
@@ -13,10 +13,10 @@ function infoCommand(program) {
|
|
|
13
13
|
.description('Display information about the Scott Kosman CLI')
|
|
14
14
|
.action(() => {
|
|
15
15
|
const info = (0, boxen_1.default)(`${chalk_1.default.bold.cyan('Scott Kosman CLI')}\n\n` +
|
|
16
|
-
`${chalk_1.default.gray('Version:')} ${chalk_1.default.
|
|
17
|
-
`${chalk_1.default.gray('Node.js:')} ${chalk_1.default.
|
|
18
|
-
`${chalk_1.default.gray('Platform:')} ${chalk_1.default.
|
|
19
|
-
`${chalk_1.default.gray('Architecture:')} ${chalk_1.default.
|
|
16
|
+
`${chalk_1.default.gray('Version:')} ${chalk_1.default.black(package_json_1.version)}\n` +
|
|
17
|
+
`${chalk_1.default.gray('Node.js:')} ${chalk_1.default.black(process.version)}\n` +
|
|
18
|
+
`${chalk_1.default.gray('Platform:')} ${chalk_1.default.black(process.platform)}\n` +
|
|
19
|
+
`${chalk_1.default.gray('Architecture:')} ${chalk_1.default.black(process.arch)}\n\n` +
|
|
20
20
|
`${chalk_1.default.gray('Built with modern tools:')}\n` +
|
|
21
21
|
`${chalk_1.default.blue('• TypeScript')}\n` +
|
|
22
22
|
`${chalk_1.default.blue('• Commander.js')}\n` +
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menuItems.d.ts","sourceRoot":"","sources":["../../src/utils/menuItems.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,QAAQ,EA8C/B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.menuItems = void 0;
|
|
4
|
+
exports.menuItems = [
|
|
5
|
+
{
|
|
6
|
+
name: '💻 scottkosman.com',
|
|
7
|
+
value: 'https://scottkosman.com',
|
|
8
|
+
description: 'Visit my personal website'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: '🙋🏻♂️ How To Scott',
|
|
12
|
+
value: 'https://scottkosman.com/post/readme/',
|
|
13
|
+
description: 'My "Manager README", useful info if you currently do or want to work with/for me'
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: '🌐 GitHub Profile',
|
|
17
|
+
value: 'https://github.com/humantorch',
|
|
18
|
+
description: 'If you\'re reading this you probably already know what GitHub is'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: '🏢 LinkedIn Profile',
|
|
22
|
+
value: 'https://linkedin.com/in/scottkosman',
|
|
23
|
+
description: 'Join my Professional Network™'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: '🔑 1Password',
|
|
27
|
+
value: 'https://1password.com',
|
|
28
|
+
description: 'Where I work'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: '📜 Current Resume',
|
|
32
|
+
value: 'https://docs.google.com/document/d/1gcEzsNHWAllGH9mt6bfjie900B-rQNiatwdHiRj_Yog/edit?tab=t.0#heading=h.f5t1zjbkvcg2',
|
|
33
|
+
description: 'Check out what I\'ve done in the past'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: '📸 Instagram',
|
|
37
|
+
value: 'https://instagram.com/humantorch',
|
|
38
|
+
description: 'See what I had for lunch'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: '🔧 This CLI Repository',
|
|
42
|
+
value: 'https://github.com/humantorch/scottkosman-cli',
|
|
43
|
+
description: 'See how this CLI was built (TypeScript, Commander.js, etc.)'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '📧 Email Me',
|
|
47
|
+
value: 'mailto:kosman.scott@gmail.com',
|
|
48
|
+
description: 'Email? In 2025? I do check this, I promise.'
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
//# sourceMappingURL=menuItems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menuItems.js","sourceRoot":"","sources":["../../src/utils/menuItems.ts"],"names":[],"mappings":";;;AAMa,QAAA,SAAS,GAAe;IACnC;QACE,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EAAE,kFAAkF;KAChG;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,kEAAkE;KAChF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EAAE,+BAA+B;KAC7C;IACD;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,cAAc;KAC5B;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,qHAAqH;QAC5H,WAAW,EAAE,uCAAuC;KACrD;IACD;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,kCAAkC;QACzC,WAAW,EAAE,0BAA0B;KACxC;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,+CAA+C;QACtD,WAAW,EAAE,6DAA6D;KAC3E;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,6CAA6C;KAC3D;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/utils/welcome.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/utils/welcome.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA8FjD"}
|
package/dist/utils/welcome.js
CHANGED
|
@@ -13,55 +13,9 @@ const path_1 = __importDefault(require("path"));
|
|
|
13
13
|
const fs_1 = __importDefault(require("fs"));
|
|
14
14
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
15
15
|
const open_1 = __importDefault(require("open"));
|
|
16
|
-
const
|
|
17
|
-
{
|
|
18
|
-
name: '💻 scottkosman.com',
|
|
19
|
-
value: 'https://scottkosman.com',
|
|
20
|
-
description: 'Visit my personal website'
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: '🙋🏻♂️ How To Scott',
|
|
24
|
-
value: 'https://scottkosman.com/post/readme/',
|
|
25
|
-
description: 'My "Manager README", useful info if you currently do or want to work with/for me'
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
name: '🌐 GitHub Profile',
|
|
29
|
-
value: 'https://github.com/humantorch',
|
|
30
|
-
description: 'If you\'re reading this you probably already know what GitHub is'
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: '🏢 LinkedIn Profile',
|
|
34
|
-
value: 'https://linkedin.com/in/scottkosman',
|
|
35
|
-
description: 'Join my Professional Network™'
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: '🔑 1Password',
|
|
39
|
-
value: 'https://1password.com',
|
|
40
|
-
description: 'Where I work'
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: '📜 Current Resume',
|
|
44
|
-
value: 'https://docs.google.com/document/d/1gcEzsNHWAllGH9mt6bfjie900B-rQNiatwdHiRj_Yog/edit?tab=t.0#heading=h.f5t1zjbkvcg2',
|
|
45
|
-
description: 'Check out what I\'ve done in the past'
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: '📸 Instagram',
|
|
49
|
-
value: 'https://instagram.com/humantorch',
|
|
50
|
-
description: 'See what I had for lunch'
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: '🔧 This CLI Repository',
|
|
54
|
-
value: 'https://github.com/humantorch/scottkosman-cli',
|
|
55
|
-
description: 'See how this CLI was built (TypeScript, Commander.js, etc.)'
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: '📧 Email Me',
|
|
59
|
-
value: 'mailto:kosman.scott@gmail.com',
|
|
60
|
-
description: 'Email? In 2025? I do check this, I promise.'
|
|
61
|
-
},
|
|
62
|
-
];
|
|
16
|
+
const menuItems_js_1 = require("./menuItems.js");
|
|
63
17
|
async function showWelcome() {
|
|
64
|
-
// Clear
|
|
18
|
+
// Clear and display everything ONCE
|
|
65
19
|
console.clear();
|
|
66
20
|
// Display image (if available)
|
|
67
21
|
const imagePath = path_1.default.join(__dirname, '../../assets/scott.png');
|
|
@@ -108,8 +62,8 @@ async function showWelcome() {
|
|
|
108
62
|
// console.log(info); // Uncomment this line to show the info box
|
|
109
63
|
console.log();
|
|
110
64
|
// Show interactive menu
|
|
65
|
+
console.log(chalk_1.default.cyan('🔗 Quick Links - Select a link to open:\n'));
|
|
111
66
|
try {
|
|
112
|
-
console.log(chalk_1.default.cyan('🔗 Quick Links - Select a link to open:\n'));
|
|
113
67
|
while (true) {
|
|
114
68
|
const { selectedUrl } = await inquirer_1.default.prompt([
|
|
115
69
|
{
|
|
@@ -117,7 +71,7 @@ async function showWelcome() {
|
|
|
117
71
|
name: 'selectedUrl',
|
|
118
72
|
message: 'Choose an option:',
|
|
119
73
|
choices: [
|
|
120
|
-
...menuItems.map(item => ({
|
|
74
|
+
...menuItems_js_1.menuItems.map(item => ({
|
|
121
75
|
name: `${item.name}${item.description ? ` - ${item.description}` : ''}`,
|
|
122
76
|
value: item.value
|
|
123
77
|
})),
|
|
@@ -130,17 +84,13 @@ async function showWelcome() {
|
|
|
130
84
|
pageSize: 10
|
|
131
85
|
}
|
|
132
86
|
]);
|
|
133
|
-
if (selectedUrl
|
|
134
|
-
console.log(chalk_1.default.green(`\n🚀 Opening: ${selectedUrl}`));
|
|
135
|
-
// Open the URL in the default browser
|
|
136
|
-
await (0, open_1.default)(selectedUrl);
|
|
137
|
-
console.log(chalk_1.default.gray('URL opened in your default browser!'));
|
|
138
|
-
console.log(chalk_1.default.cyan('\n🔗 Quick Links - Select another link or exit:\n'));
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
87
|
+
if (selectedUrl === 'exit') {
|
|
141
88
|
console.log(chalk_1.default.gray('\n👋 Thanks for using Scott Kosman CLI!'));
|
|
142
89
|
break;
|
|
143
90
|
}
|
|
91
|
+
console.log(chalk_1.default.green(`\n🚀 Opening: ${selectedUrl}`));
|
|
92
|
+
await (0, open_1.default)(selectedUrl);
|
|
93
|
+
console.log(chalk_1.default.gray('URL opened in your default browser!'));
|
|
144
94
|
}
|
|
145
95
|
}
|
|
146
96
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/utils/welcome.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/utils/welcome.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scottkosman",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "A modern, interactive command-line interface for Scott Kosman with quick access to external links",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -53,13 +53,14 @@
|
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/figlet": "^1.5.8",
|
|
55
55
|
"@types/inquirer": "^9.0.7",
|
|
56
|
-
"@types/jest": "^29.5.
|
|
56
|
+
"@types/jest": "^29.5.14",
|
|
57
57
|
"@types/node": "^20.10.0",
|
|
58
58
|
"@typescript-eslint/eslint-plugin": "^6.13.0",
|
|
59
59
|
"@typescript-eslint/parser": "^6.13.0",
|
|
60
60
|
"eslint": "^8.54.0",
|
|
61
61
|
"jest": "^29.7.0",
|
|
62
62
|
"prettier": "^3.1.0",
|
|
63
|
+
"ts-jest": "^29.4.0",
|
|
63
64
|
"tsx": "^4.6.0",
|
|
64
65
|
"typescript": "^5.3.0"
|
|
65
66
|
},
|