scottkosman 1.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/LICENSE +21 -0
- package/README.md +171 -0
- package/assets/README.md +25 -0
- package/assets/scott.jpg +0 -0
- package/dist/commands/help.d.ts +3 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +36 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/info.d.ts +3 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +35 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +56 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/welcome.d.ts +2 -0
- package/dist/utils/welcome.d.ts.map +1 -0
- package/dist/utils/welcome.js +127 -0
- package/dist/utils/welcome.js.map +1 -0
- package/package.json +73 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Scott Kosman
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Scott Kosman CLI
|
|
2
|
+
|
|
3
|
+
A modern, interactive command-line interface built with TypeScript that showcases Scott Kosman's professional information and provides quick access to external links.
|
|
4
|
+
|
|
5
|
+
## š Features
|
|
6
|
+
|
|
7
|
+
- **Interactive Welcome Experience**: Beautiful ASCII art with gradient styling and terminal image display
|
|
8
|
+
- **Professional Bio**: Displays Scott's current role and background information
|
|
9
|
+
- **Quick Links Menu**: Selectable list of external URLs that open in your default browser
|
|
10
|
+
- **Persistent Menu**: Loop back to the menu after opening links - no need to restart
|
|
11
|
+
- **Modern CLI Architecture**: Built with TypeScript, Commander.js, and modern Node.js practices
|
|
12
|
+
- **Professional Branding**: Custom styling with chalk, figlet, and gradient effects
|
|
13
|
+
|
|
14
|
+
## š¦ Installation
|
|
15
|
+
|
|
16
|
+
### Global Installation (Recommended)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install -g scottkosman
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Run with npx (No Installation Required)
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx scottkosman
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Local Development
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Clone the repository
|
|
32
|
+
git clone https://github.com/humantorch/scottkosman-cli.git
|
|
33
|
+
cd scottkosman-cli
|
|
34
|
+
|
|
35
|
+
# Install dependencies
|
|
36
|
+
npm install
|
|
37
|
+
|
|
38
|
+
# Build the project
|
|
39
|
+
npm run build
|
|
40
|
+
|
|
41
|
+
# Run in development mode
|
|
42
|
+
npm run dev
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## šÆ Usage
|
|
46
|
+
|
|
47
|
+
### Default Experience
|
|
48
|
+
|
|
49
|
+
Simply run the CLI without any arguments to get the full interactive experience:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
scottkosman
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
This will display:
|
|
56
|
+
- Scott's profile image
|
|
57
|
+
- ASCII art title with gradient effects
|
|
58
|
+
- Professional bio and background information
|
|
59
|
+
- Interactive menu of external links (loops until you choose to exit)
|
|
60
|
+
|
|
61
|
+
### Available Commands
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Show help information
|
|
65
|
+
scottkosman --help
|
|
66
|
+
|
|
67
|
+
# Display version
|
|
68
|
+
scottkosman --version
|
|
69
|
+
|
|
70
|
+
# Show enhanced help
|
|
71
|
+
scottkosman help
|
|
72
|
+
|
|
73
|
+
# Display CLI information
|
|
74
|
+
scottkosman info
|
|
75
|
+
|
|
76
|
+
# Initialize CLI (if needed)
|
|
77
|
+
scottkosman init
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## š Quick Links
|
|
81
|
+
|
|
82
|
+
The CLI provides easy access to:
|
|
83
|
+
|
|
84
|
+
- š **Blog/Website**: Visit my personal website
|
|
85
|
+
- šš»āāļø **How To Scott**: My "Manager README", useful info if you currently do or want to work with/for me
|
|
86
|
+
- š **GitHub Profile**: If you're reading this you probably already know what GitHub is
|
|
87
|
+
- š¢ **LinkedIn Profile**: Join my Professional Networkā¢
|
|
88
|
+
- šø **Instagram**: See what I had for lunch
|
|
89
|
+
- š§ **Email Me**: Email? In 2025? I do check this, I promise
|
|
90
|
+
- š **1Password**: Where I work
|
|
91
|
+
|
|
92
|
+
## šØāš¼ About Scott
|
|
93
|
+
|
|
94
|
+
Toronto-based Engineering Manager at 1Password, 20+ year vet of the technology, marketing, and digital strategy world. A recovering front-end developer who pivoted to management back in 2014, I now enjoy leading teams building the next generation of stuff you do on this "internet" thing. He/him.
|
|
95
|
+
|
|
96
|
+
## š ļø Development
|
|
97
|
+
|
|
98
|
+
### Prerequisites
|
|
99
|
+
|
|
100
|
+
- Node.js 18.0.0 or higher
|
|
101
|
+
- npm or yarn
|
|
102
|
+
|
|
103
|
+
### Scripts
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Build the project
|
|
107
|
+
npm run build
|
|
108
|
+
|
|
109
|
+
# Run in development mode
|
|
110
|
+
npm run dev
|
|
111
|
+
|
|
112
|
+
# Start the built version
|
|
113
|
+
npm start
|
|
114
|
+
|
|
115
|
+
# Clean build artifacts
|
|
116
|
+
npm run clean
|
|
117
|
+
|
|
118
|
+
# Run tests
|
|
119
|
+
npm test
|
|
120
|
+
|
|
121
|
+
# Lint code
|
|
122
|
+
npm run lint
|
|
123
|
+
|
|
124
|
+
# Format code
|
|
125
|
+
npm run format
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Project Structure
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
scottkosman-cli/
|
|
132
|
+
āāā src/
|
|
133
|
+
ā āāā commands/ # CLI commands
|
|
134
|
+
ā āāā utils/ # Utility functions
|
|
135
|
+
ā āāā types/ # TypeScript type definitions
|
|
136
|
+
ā āāā index.ts # Main entry point
|
|
137
|
+
āāā assets/ # Static assets (images, etc.)
|
|
138
|
+
āāā dist/ # Built JavaScript files
|
|
139
|
+
āāā package.json
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## šØ Technologies Used
|
|
143
|
+
|
|
144
|
+
- **TypeScript**: Type-safe JavaScript development
|
|
145
|
+
- **Commander.js**: CLI framework
|
|
146
|
+
- **Chalk**: Terminal styling and colors
|
|
147
|
+
- **Inquirer**: Interactive command-line interfaces
|
|
148
|
+
- **Figlet**: ASCII art text
|
|
149
|
+
- **Gradient-string**: Beautiful gradient effects
|
|
150
|
+
- **Boxen**: Terminal boxes and borders
|
|
151
|
+
- **Terminal-image**: Display images in terminal
|
|
152
|
+
- **Open**: Open URLs in default browser
|
|
153
|
+
|
|
154
|
+
## š License
|
|
155
|
+
|
|
156
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
|
157
|
+
|
|
158
|
+
## š¤ Contributing
|
|
159
|
+
|
|
160
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
161
|
+
|
|
162
|
+
## š Contact
|
|
163
|
+
|
|
164
|
+
- **Website**: [scottkosman.com](https://scottkosman.com)
|
|
165
|
+
- **Email**: kosman.scott@gmail.com
|
|
166
|
+
- **GitHub**: [@humantorch](https://github.com/humantorch)
|
|
167
|
+
- **LinkedIn**: [Scott Kosman](https://linkedin.com/in/scottkosman)
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
Made with ā¤ļø by Scott Kosman
|
package/assets/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Assets Directory
|
|
2
|
+
|
|
3
|
+
This directory contains images and other assets used by the Scott Kosman CLI.
|
|
4
|
+
|
|
5
|
+
## Image Requirements
|
|
6
|
+
|
|
7
|
+
- **Format**: PNG or JPG recommended
|
|
8
|
+
- **Size**: Keep images reasonably sized (under 1MB) for fast loading
|
|
9
|
+
- **Aspect Ratio**: Consider terminal display constraints
|
|
10
|
+
|
|
11
|
+
## Current Images
|
|
12
|
+
|
|
13
|
+
- `scott.jpg` - Main CLI logo/image (30% width display)
|
|
14
|
+
|
|
15
|
+
## Adding New Images
|
|
16
|
+
|
|
17
|
+
1. Place your image file in this directory
|
|
18
|
+
2. Update the path in `src/utils/welcome.ts` if using a different filename
|
|
19
|
+
3. The CLI will automatically display the image if it exists
|
|
20
|
+
|
|
21
|
+
## Notes
|
|
22
|
+
|
|
23
|
+
- Images are displayed using `terminal-image` package
|
|
24
|
+
- If an image fails to load, the CLI continues without it
|
|
25
|
+
- Terminal compatibility may vary by platform
|
package/assets/scott.jpg
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BlD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.helpCommand = helpCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const boxen_1 = __importDefault(require("boxen"));
|
|
9
|
+
function helpCommand(program) {
|
|
10
|
+
program
|
|
11
|
+
.command('help')
|
|
12
|
+
.description('Show enhanced help information')
|
|
13
|
+
.action(() => {
|
|
14
|
+
const help = (0, boxen_1.default)(`${chalk_1.default.bold.cyan('Scott Kosman CLI Help')}\n\n` +
|
|
15
|
+
`${chalk_1.default.gray('Available Commands:')}\n\n` +
|
|
16
|
+
`${chalk_1.default.yellow('init')} ${chalk_1.default.gray('Initialize and set up the CLI')}\n` +
|
|
17
|
+
`${chalk_1.default.yellow('info')} ${chalk_1.default.gray('Display CLI and system information')}\n` +
|
|
18
|
+
`${chalk_1.default.yellow('help')} ${chalk_1.default.gray('Show this help message')}\n\n` +
|
|
19
|
+
`${chalk_1.default.gray('Global Options:')}\n` +
|
|
20
|
+
`${chalk_1.default.yellow('-v, --version')} ${chalk_1.default.gray('Show version number')}\n` +
|
|
21
|
+
`${chalk_1.default.yellow('-d, --debug')} ${chalk_1.default.gray('Enable debug mode')}\n\n` +
|
|
22
|
+
`${chalk_1.default.gray('Examples:')}\n` +
|
|
23
|
+
`${chalk_1.default.blue('scottkosman init')} ${chalk_1.default.gray('Set up your environment')}\n` +
|
|
24
|
+
`${chalk_1.default.blue('scottkosman info')} ${chalk_1.default.gray('Show system information')}\n` +
|
|
25
|
+
`${chalk_1.default.blue('scottkosman --help')} ${chalk_1.default.gray('Show standard help')}\n\n` +
|
|
26
|
+
`${chalk_1.default.gray('For more information, visit:')}\n` +
|
|
27
|
+
`${chalk_1.default.blue('https://github.com/humantorch/scottkosman-cli')}`, {
|
|
28
|
+
padding: 1,
|
|
29
|
+
margin: 1,
|
|
30
|
+
borderStyle: 'round',
|
|
31
|
+
borderColor: 'cyan',
|
|
32
|
+
});
|
|
33
|
+
console.log(help);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":";;;;;AAIA,kCA8BC;AAjCD,kDAA0B;AAC1B,kDAA0B;AAE1B,SAAgB,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,IAAA,eAAK,EAChB,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM;YACjD,GAAG,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM;YAC1C,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI;YAC9E,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,IAAI;YACnF,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM;YACzE,GAAG,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI;YACpC,GAAG,eAAK,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI;YAC1E,GAAG,eAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM;YAC1E,GAAG,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YAC9B,GAAG,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI;YAClF,GAAG,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI;YAClF,GAAG,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM;YAC/E,GAAG,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI;YACjD,GAAG,eAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,EAAE,EAChE;YACE,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,MAAM;SACpB,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BlD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.infoCommand = infoCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const boxen_1 = __importDefault(require("boxen"));
|
|
9
|
+
const package_json_1 = require("../../package.json");
|
|
10
|
+
function infoCommand(program) {
|
|
11
|
+
program
|
|
12
|
+
.command('info')
|
|
13
|
+
.description('Display information about the Scott Kosman CLI')
|
|
14
|
+
.action(() => {
|
|
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.white(package_json_1.version)}\n` +
|
|
17
|
+
`${chalk_1.default.gray('Node.js:')} ${chalk_1.default.white(process.version)}\n` +
|
|
18
|
+
`${chalk_1.default.gray('Platform:')} ${chalk_1.default.white(process.platform)}\n` +
|
|
19
|
+
`${chalk_1.default.gray('Architecture:')} ${chalk_1.default.white(process.arch)}\n\n` +
|
|
20
|
+
`${chalk_1.default.gray('Built with modern tools:')}\n` +
|
|
21
|
+
`${chalk_1.default.blue('⢠TypeScript')}\n` +
|
|
22
|
+
`${chalk_1.default.blue('⢠Commander.js')}\n` +
|
|
23
|
+
`${chalk_1.default.blue('⢠Chalk for styling')}\n` +
|
|
24
|
+
`${chalk_1.default.blue('⢠Inquirer for prompts')}\n` +
|
|
25
|
+
`${chalk_1.default.blue('⢠Ora for spinners')}\n\n` +
|
|
26
|
+
`${chalk_1.default.yellow('GitHub:')} https://github.com/humantorch/scottkosman-cli`, {
|
|
27
|
+
padding: 1,
|
|
28
|
+
margin: 1,
|
|
29
|
+
borderStyle: 'round',
|
|
30
|
+
borderColor: 'cyan',
|
|
31
|
+
});
|
|
32
|
+
console.log(info);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":";;;;;AAKA,kCA4BC;AAhCD,kDAA0B;AAC1B,kDAA0B;AAC1B,qDAA6C;AAE7C,SAAgB,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,IAAA,eAAK,EAChB,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM;YAC5C,GAAG,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,sBAAO,CAAC,IAAI;YACrD,GAAG,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;YAC7D,GAAG,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;YAC/D,GAAG,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;YACjE,GAAG,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI;YAC7C,GAAG,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI;YACjC,GAAG,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI;YACnC,GAAG,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI;YACxC,GAAG,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI;YAC3C,GAAG,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM;YACzC,GAAG,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,gDAAgD,EAC1E;YACE,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,MAAM;SACpB,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmDlD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.initCommand = initCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const welcome_1 = require("../utils/welcome");
|
|
11
|
+
function initCommand(program) {
|
|
12
|
+
program
|
|
13
|
+
.command('init')
|
|
14
|
+
.description('Initialize and set up the Scott Kosman CLI')
|
|
15
|
+
.action(async () => {
|
|
16
|
+
await (0, welcome_1.showWelcome)();
|
|
17
|
+
console.log(chalk_1.default.blue('š Initializing Scott Kosman CLI...\n'));
|
|
18
|
+
const spinner = (0, ora_1.default)('Setting up your environment...').start();
|
|
19
|
+
try {
|
|
20
|
+
// Simulate some setup work
|
|
21
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
22
|
+
spinner.succeed('Environment setup complete!');
|
|
23
|
+
const answers = await inquirer_1.default.prompt([
|
|
24
|
+
{
|
|
25
|
+
type: 'input',
|
|
26
|
+
name: 'name',
|
|
27
|
+
message: 'What\'s your name?',
|
|
28
|
+
default: 'Developer',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
type: 'list',
|
|
32
|
+
name: 'theme',
|
|
33
|
+
message: 'Choose your preferred theme:',
|
|
34
|
+
choices: ['Light', 'Dark', 'Auto'],
|
|
35
|
+
default: 'Auto',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
type: 'confirm',
|
|
39
|
+
name: 'notifications',
|
|
40
|
+
message: 'Enable notifications?',
|
|
41
|
+
default: true,
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
console.log(chalk_1.default.green('\nā
Setup complete!'));
|
|
45
|
+
console.log(chalk_1.default.gray(`Welcome, ${answers.name}!`));
|
|
46
|
+
console.log(chalk_1.default.gray(`Theme: ${answers.theme}`));
|
|
47
|
+
console.log(chalk_1.default.gray(`Notifications: ${answers.notifications ? 'Enabled' : 'Disabled'}`));
|
|
48
|
+
console.log(chalk_1.default.yellow('\nš” Tip: Run "scottkosman --help" to see all available commands'));
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
spinner.fail('Setup failed');
|
|
52
|
+
console.error(chalk_1.default.red('Error during setup:'), error);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAMA,kCAmDC;AAxDD,kDAA0B;AAC1B,wDAAgC;AAChC,8CAAsB;AACtB,8CAA+C;AAE/C,SAAgB,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAA,qBAAW,GAAE,CAAC;QAEpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,2BAA2B;YAC3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAExD,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACpC;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,oBAAoB;oBAC7B,OAAO,EAAE,WAAW;iBACrB;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,8BAA8B;oBACvC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClC,OAAO,EAAE,MAAM;iBAChB;gBACD;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAE5F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kEAAkE,CAAC,CAAC,CAAC;QAEhG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const package_json_1 = require("../package.json");
|
|
10
|
+
const welcome_1 = require("./utils/welcome");
|
|
11
|
+
const init_1 = require("./commands/init");
|
|
12
|
+
const info_1 = require("./commands/info");
|
|
13
|
+
const help_1 = require("./commands/help");
|
|
14
|
+
const program = new commander_1.Command();
|
|
15
|
+
// Set up the CLI
|
|
16
|
+
program
|
|
17
|
+
.name('scottkosman')
|
|
18
|
+
.description('Scott Kosman CLI - A modern command-line interface')
|
|
19
|
+
.version(package_json_1.version, '-v, --version')
|
|
20
|
+
.option('-d, --debug', 'Enable debug mode');
|
|
21
|
+
// Add commands
|
|
22
|
+
(0, init_1.initCommand)(program);
|
|
23
|
+
(0, info_1.infoCommand)(program);
|
|
24
|
+
(0, help_1.helpCommand)(program);
|
|
25
|
+
// Default action when no command is provided
|
|
26
|
+
program.action(async () => {
|
|
27
|
+
await (0, welcome_1.showWelcome)();
|
|
28
|
+
});
|
|
29
|
+
// Handle errors gracefully
|
|
30
|
+
program.exitOverride();
|
|
31
|
+
try {
|
|
32
|
+
program.parse();
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
if (err instanceof Error) {
|
|
36
|
+
console.error(chalk_1.default.red('Error:'), err.message);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.error(chalk_1.default.red('An unexpected error occurred'));
|
|
40
|
+
}
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,kDAA0C;AAC1C,6CAA8C;AAC9C,0CAA8C;AAC9C,0CAA8C;AAC9C,0CAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,iBAAiB;AACjB,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,sBAAO,EAAE,eAAe,CAAC;KACjC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AAE9C,eAAe;AACf,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC;AACrB,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC;AACrB,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC;AAErB,6CAA6C;AAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;IACxB,MAAM,IAAA,qBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,2BAA2B;AAC3B,OAAO,CAAC,YAAY,EAAE,CAAC;AAEvB,IAAI,CAAC;IACH,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/utils/welcome.ts"],"names":[],"mappings":"AAqDA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAkFjD"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.showWelcome = showWelcome;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const figlet_1 = __importDefault(require("figlet"));
|
|
9
|
+
const gradient_string_1 = __importDefault(require("gradient-string"));
|
|
10
|
+
const terminal_image_1 = __importDefault(require("terminal-image"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
14
|
+
const open_1 = __importDefault(require("open"));
|
|
15
|
+
const menuItems = [
|
|
16
|
+
{
|
|
17
|
+
name: 'š Blog/Website',
|
|
18
|
+
value: 'https://scottkosman.com',
|
|
19
|
+
description: 'Visit my personal website'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'šš»āāļø How To Scott',
|
|
23
|
+
value: 'https://scottkosman.com/post/readme/',
|
|
24
|
+
description: 'My "Manager README", useful info if you currently do or want to work with/for me'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'š GitHub Profile',
|
|
28
|
+
value: 'https://github.com/humantorch',
|
|
29
|
+
description: 'If you\'re reading this you probably already know what GitHub is'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'š¢ LinkedIn Profile',
|
|
33
|
+
value: 'https://linkedin.com/in/scottkosman',
|
|
34
|
+
description: 'Join my Professional Networkā¢'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'šø Instagram',
|
|
38
|
+
value: 'https://instagram.com/humantorch',
|
|
39
|
+
description: 'See what I had for lunch'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'š§ Email Me',
|
|
43
|
+
value: 'mailto:kosman.scott@gmail.com',
|
|
44
|
+
description: 'Email? In 2025? I do check this, I promise.'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'š 1Password',
|
|
48
|
+
value: 'https://1password.com',
|
|
49
|
+
description: 'Where I work'
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
async function showWelcome() {
|
|
53
|
+
// Clear the console
|
|
54
|
+
console.clear();
|
|
55
|
+
// Display image (if available)
|
|
56
|
+
const imagePath = path_1.default.join(__dirname, '../../assets/scott.jpg');
|
|
57
|
+
if (fs_1.default.existsSync(imagePath)) {
|
|
58
|
+
try {
|
|
59
|
+
const imageBuffer = fs_1.default.readFileSync(imagePath);
|
|
60
|
+
const image = await terminal_image_1.default.buffer(imageBuffer, { width: '10%', height: 'auto' });
|
|
61
|
+
console.log(image.trim());
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
// Ignore image errors, continue
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Create ASCII art title
|
|
68
|
+
const title = figlet_1.default.textSync('Scott Kosman', {
|
|
69
|
+
font: 'Standard',
|
|
70
|
+
horizontalLayout: 'default',
|
|
71
|
+
verticalLayout: 'default',
|
|
72
|
+
});
|
|
73
|
+
// Apply gradient to the title
|
|
74
|
+
const gradientTitle = (0, gradient_string_1.default)(['#ff6b6b', '#4ecdc4', '#45b7d1'])(title);
|
|
75
|
+
// Display everything
|
|
76
|
+
console.log(gradientTitle);
|
|
77
|
+
// Create subtitle
|
|
78
|
+
const subtitle = chalk_1.default.bold('Toronto-based Engineering Manager at 1Password, 20+ year vet of the technology,\nmarketing, and digital strategy world. A recovering front-end developer who pivoted\nto management back in 2014, I now enjoy leading teams building the next generation\nof stuff you do on this "internet" thing. He/him.');
|
|
79
|
+
// Display everything
|
|
80
|
+
console.log(subtitle);
|
|
81
|
+
console.log();
|
|
82
|
+
// Show interactive menu
|
|
83
|
+
try {
|
|
84
|
+
console.log(chalk_1.default.cyan('š Quick Links - Select a link to open:\n'));
|
|
85
|
+
while (true) {
|
|
86
|
+
const { selectedUrl } = await inquirer_1.default.prompt([
|
|
87
|
+
{
|
|
88
|
+
type: 'list',
|
|
89
|
+
name: 'selectedUrl',
|
|
90
|
+
message: 'Choose an option:',
|
|
91
|
+
choices: [
|
|
92
|
+
...menuItems.map(item => ({
|
|
93
|
+
name: `${item.name}${item.description ? ` - ${item.description}` : ''}`,
|
|
94
|
+
value: item.value
|
|
95
|
+
})),
|
|
96
|
+
new inquirer_1.default.Separator(),
|
|
97
|
+
{
|
|
98
|
+
name: 'ā Exit',
|
|
99
|
+
value: 'exit'
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
pageSize: 10
|
|
103
|
+
}
|
|
104
|
+
]);
|
|
105
|
+
if (selectedUrl !== 'exit') {
|
|
106
|
+
console.log(chalk_1.default.green(`\nš Opening: ${selectedUrl}`));
|
|
107
|
+
// Open the URL in the default browser
|
|
108
|
+
await (0, open_1.default)(selectedUrl);
|
|
109
|
+
console.log(chalk_1.default.gray('URL opened in your default browser!'));
|
|
110
|
+
console.log(chalk_1.default.cyan('\nš Quick Links - Select another link or exit:\n'));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log(chalk_1.default.gray('\nš Thanks for using Scott Kosman CLI!'));
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
if (error instanceof Error) {
|
|
120
|
+
console.error(chalk_1.default.red('Error opening URL:'), error.message);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.error(chalk_1.default.red('An unexpected error occurred'));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=welcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/utils/welcome.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "scottkosman",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A modern, interactive command-line interface for Scott Kosman with quick access to external links",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"scottkosman": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"assets"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"postbuild": "chmod +x dist/index.js",
|
|
16
|
+
"dev": "tsx src/index.ts",
|
|
17
|
+
"start": "node dist/index.js",
|
|
18
|
+
"clean": "rm -rf dist",
|
|
19
|
+
"prebuild": "npm run clean",
|
|
20
|
+
"prepublishOnly": "npm run build",
|
|
21
|
+
"test": "jest",
|
|
22
|
+
"test:watch": "jest --watch",
|
|
23
|
+
"lint": "eslint src --ext .ts",
|
|
24
|
+
"lint:fix": "eslint src --ext .ts --fix",
|
|
25
|
+
"format": "prettier --write src/**/*.ts",
|
|
26
|
+
"prepare": "npm run build"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"cli",
|
|
30
|
+
"command-line",
|
|
31
|
+
"terminal",
|
|
32
|
+
"scott-kosman",
|
|
33
|
+
"personal-branding",
|
|
34
|
+
"interactive"
|
|
35
|
+
],
|
|
36
|
+
"author": "Scott Kosman",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"boxen": "^7.1.1",
|
|
40
|
+
"chalk": "^5.3.0",
|
|
41
|
+
"commander": "^11.1.0",
|
|
42
|
+
"figlet": "^1.7.0",
|
|
43
|
+
"gradient-string": "^2.0.2",
|
|
44
|
+
"inquirer": "^9.2.12",
|
|
45
|
+
"open": "^10.1.2",
|
|
46
|
+
"ora": "^7.0.1",
|
|
47
|
+
"terminal-image": "^3.1.0"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/figlet": "^1.5.8",
|
|
51
|
+
"@types/inquirer": "^9.0.7",
|
|
52
|
+
"@types/jest": "^29.5.8",
|
|
53
|
+
"@types/node": "^20.10.0",
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "^6.13.0",
|
|
55
|
+
"@typescript-eslint/parser": "^6.13.0",
|
|
56
|
+
"eslint": "^8.54.0",
|
|
57
|
+
"jest": "^29.7.0",
|
|
58
|
+
"prettier": "^3.1.0",
|
|
59
|
+
"tsx": "^4.6.0",
|
|
60
|
+
"typescript": "^5.3.0"
|
|
61
|
+
},
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=18.0.0"
|
|
64
|
+
},
|
|
65
|
+
"repository": {
|
|
66
|
+
"type": "git",
|
|
67
|
+
"url": "https://github.com/humantorch/scottkosman-cli.git"
|
|
68
|
+
},
|
|
69
|
+
"bugs": {
|
|
70
|
+
"url": "https://github.com/humantorch/scottkosman-cli/issues"
|
|
71
|
+
},
|
|
72
|
+
"homepage": "https://github.com/humantorch/scottkosman-cli#readme"
|
|
73
|
+
}
|