@rahulxf/about-me 1.0.0 → 1.2.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 +16 -8
- package/index.js +96 -9
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
# @rahulxf/about-me
|
|
2
2
|
|
|
3
|
-
A small `npx` package that prints
|
|
3
|
+
A small `npx` package that prints a clean intro plus links, with optional detailed modes.
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
npx @rahulxf/about-me
|
|
9
|
+
npx @rahulxf/about-me --more
|
|
10
|
+
npx @rahulxf/about-me --resume
|
|
11
|
+
npx @rahulxf/about-me --tip
|
|
9
12
|
```
|
|
10
13
|
|
|
11
14
|
## What it shows
|
|
12
15
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
- a clean default intro and main links
|
|
17
|
+
- an extended `--more` mode for work, OSS, projects, and guidance
|
|
18
|
+
- live `llm.txt` resume from `rahulxf.com`
|
|
19
|
+
|
|
20
|
+
## Flags
|
|
21
|
+
|
|
22
|
+
- `--more` prints more details about work, OSS, projects, and GSoC/LFX guidance
|
|
23
|
+
- `--resume` fetches and prints [`llm.txt`](https://www.rahulxf.com/llm.txt)
|
|
24
|
+
- `--tip` prints one random OSS / GSoC / LFX tip
|
|
25
|
+
- `--help` shows the CLI help text
|
|
18
26
|
|
|
19
27
|
## Main links
|
|
20
28
|
|
|
21
29
|
- Website: [rahulxf.com](https://rahulxf.com)
|
|
22
|
-
-
|
|
23
|
-
- Projects: [rahulxf.com/projects](https://rahulxf.com/projects)
|
|
30
|
+
- GitHub: [github.com/manzil-infinity180](https://github.com/manzil-infinity180)
|
|
24
31
|
- Blog: [rahulxf.com/blog](https://rahulxf.com/blog)
|
|
32
|
+
- OSS / GSoC page: [rahulxf.com/oss](https://rahulxf.com/oss)
|
|
25
33
|
|
|
26
34
|
## Inspiration
|
|
27
35
|
|
package/index.js
CHANGED
|
@@ -12,6 +12,8 @@ const C = {
|
|
|
12
12
|
gray: "\x1b[90m",
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
const args = new Set(process.argv.slice(2));
|
|
16
|
+
|
|
15
17
|
const color = (tone, text) => `${tone}${text}${C.reset}`;
|
|
16
18
|
const pad = (label, width = 18) => label.padEnd(width, " ");
|
|
17
19
|
const row = (label, value) => `${color(C.yellow, pad(label))} ${value}`;
|
|
@@ -26,8 +28,6 @@ const links = {
|
|
|
26
28
|
youtube: "https://www.youtube.com/@rahulxfd",
|
|
27
29
|
blog: "https://rahulxf.com/blog",
|
|
28
30
|
oss: "https://rahulxf.com/oss",
|
|
29
|
-
projects: "https://rahulxf.com/projects",
|
|
30
|
-
log: "https://rahulxf.com/log",
|
|
31
31
|
aflock: "https://github.com/aflock-ai/aflock",
|
|
32
32
|
rookery: "https://github.com/aflock-ai/rookery",
|
|
33
33
|
witness: "https://github.com/in-toto/witness",
|
|
@@ -38,9 +38,17 @@ const links = {
|
|
|
38
38
|
"https://drive.google.com/file/d/1ZGq7FUavp9ACvwkaxtZEQE35A-1KVj09/view?usp=drivesdk",
|
|
39
39
|
gsocPlaylist: "https://www.youtube.com/playlist?list=PL7CEUHGZqtd99Iafp-H9DeBIMaLbEC70c",
|
|
40
40
|
cncfMentoring: "https://github.com/cncf/mentoring",
|
|
41
|
+
llm: "https://www.rahulxf.com/llm.txt",
|
|
41
42
|
};
|
|
42
43
|
|
|
43
|
-
const
|
|
44
|
+
const tips = [
|
|
45
|
+
"Start early. Open source programs reward visible consistency more than last-minute excitement.",
|
|
46
|
+
"A few strong PRs and clear communication usually matter more than many shallow contributions.",
|
|
47
|
+
"Use AI for exploration and debugging, but do not send slop PRs without understanding the codebase.",
|
|
48
|
+
"Read old issue threads and past PRs before touching unfamiliar code. That context saves time.",
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const buildDefaultOutput = () => [
|
|
44
52
|
color(C.bold + C.green, "Rahul Vishwakarma / rahulxf"),
|
|
45
53
|
color(
|
|
46
54
|
C.gray,
|
|
@@ -52,12 +60,27 @@ const output = [
|
|
|
52
60
|
row("GitHub", links.github),
|
|
53
61
|
row("Blog", links.blog),
|
|
54
62
|
row("OSS / GSoC", links.oss),
|
|
55
|
-
row("Projects", links.projects),
|
|
56
|
-
row("Log", links.log),
|
|
57
63
|
row("YouTube", links.youtube),
|
|
58
64
|
row("X", links.x),
|
|
59
65
|
row("LinkedIn", links.linkedin),
|
|
60
66
|
|
|
67
|
+
section("Now"),
|
|
68
|
+
bullet("Working across in-toto, aflock, rookery, Kubernetes, and software supply chain security."),
|
|
69
|
+
bullet("GitHub is love."),
|
|
70
|
+
|
|
71
|
+
section("Run again"),
|
|
72
|
+
color(C.blue, "npx @rahulxf/about-me"),
|
|
73
|
+
color(C.blue, "npx @rahulxf/about-me --more"),
|
|
74
|
+
color(C.blue, "npx @rahulxf/about-me --resume"),
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
const buildMoreOutput = () => [
|
|
78
|
+
color(C.bold + C.green, "Rahul Vishwakarma / rahulxf"),
|
|
79
|
+
color(
|
|
80
|
+
C.gray,
|
|
81
|
+
"Extended view with more work, projects, milestones, and OSS / GSoC / LFX details.",
|
|
82
|
+
),
|
|
83
|
+
|
|
61
84
|
section("Current focus"),
|
|
62
85
|
bullet("Software supply chain security through in-toto, attestations, and SBOM-adjacent workflows."),
|
|
63
86
|
bullet("Contributing to Witness & Archivista, aflock, and Kubernetes-related projects."),
|
|
@@ -82,16 +105,80 @@ const output = [
|
|
|
82
105
|
bullet("DumpStore: a full-stack bookmark platform with React, Node.js, Kubernetes, and ArgoCD."),
|
|
83
106
|
bullet("A real-time WebRTC collaboration app with messaging, file sharing, Monaco, and Yjs."),
|
|
84
107
|
|
|
85
|
-
section("
|
|
108
|
+
section("OSS / GSoC / LFX"),
|
|
86
109
|
bullet("Start early, contribute consistently, and write proposals grounded in real project understanding."),
|
|
87
110
|
bullet(`Advice page: ${links.oss}`),
|
|
88
111
|
bullet(`GSoC 2024 final report: ${links.gsocReport}`),
|
|
89
112
|
bullet(`GSoC proposal: ${links.gsocProposal}`),
|
|
90
113
|
bullet(`YouTube playlist: ${links.gsocPlaylist}`),
|
|
91
114
|
bullet(`CNCF mentoring repo: ${links.cncfMentoring}`),
|
|
115
|
+
];
|
|
92
116
|
|
|
93
|
-
|
|
94
|
-
color(C.
|
|
117
|
+
const buildHelpOutput = () => [
|
|
118
|
+
color(C.bold + C.green, "@rahulxf/about-me"),
|
|
119
|
+
"",
|
|
120
|
+
color(C.magenta, "Usage"),
|
|
121
|
+
" npx @rahulxf/about-me",
|
|
122
|
+
" npx @rahulxf/about-me --more",
|
|
123
|
+
" npx @rahulxf/about-me --resume",
|
|
124
|
+
" npx @rahulxf/about-me --tip",
|
|
125
|
+
" npx @rahulxf/about-me --help",
|
|
126
|
+
"",
|
|
127
|
+
color(C.magenta, "Flags"),
|
|
128
|
+
" --more Print more details about work, OSS, projects, and guidance",
|
|
129
|
+
" --resume Fetch and print live llm.txt from rahulxf.com",
|
|
130
|
+
" --tip Print one random OSS / GSoC / LFX tip",
|
|
131
|
+
" --help Show this help message",
|
|
95
132
|
];
|
|
96
133
|
|
|
97
|
-
|
|
134
|
+
const buildTipOutput = () => {
|
|
135
|
+
const tip = tips[Math.floor(Math.random() * tips.length)];
|
|
136
|
+
return [color(C.bold + C.green, "Rahul tip"), "", bullet(tip), "", color(C.blue, links.oss)];
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const printLines = (lines) => {
|
|
140
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const printResume = async () => {
|
|
144
|
+
try {
|
|
145
|
+
const response = await fetch(links.llm);
|
|
146
|
+
if (!response.ok) {
|
|
147
|
+
throw new Error(`Failed with status ${response.status}`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const text = await response.text();
|
|
151
|
+
process.stdout.write(`${text.trim()}\n`);
|
|
152
|
+
} catch (error) {
|
|
153
|
+
process.stderr.write(
|
|
154
|
+
`${color(C.bold + C.yellow, "Could not fetch live resume.")}\n${String(error.message || error)}\n${links.llm}\n`,
|
|
155
|
+
);
|
|
156
|
+
process.exitCode = 1;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
const main = async () => {
|
|
161
|
+
if (args.has("--help") || args.has("-h")) {
|
|
162
|
+
printLines(buildHelpOutput());
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (args.has("--tip")) {
|
|
167
|
+
printLines(buildTipOutput());
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (args.has("--more")) {
|
|
172
|
+
printLines(buildMoreOutput());
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (args.has("--resume")) {
|
|
177
|
+
await printResume();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
printLines(buildDefaultOutput());
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
main();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rahulxf/about-me",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "A small npx package that prints Rahul Vishwakarma
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "A small npx package that prints a clean Rahul Vishwakarma intro, links, optional detailed output, and a live llm.txt resume.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"about-me": "index.js"
|
|
7
7
|
},
|