@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.
Files changed (3) hide show
  1. package/README.md +16 -8
  2. package/index.js +96 -9
  3. 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 my about page, projects, open source work, and GSoC/LFX links in the terminal.
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
- - who I am
14
- - current work and recent milestones
15
- - open source contributions
16
- - selected projects
17
- - GSoC, LFX, and OSS guidance links
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
- - OSS / GSoC page: [rahulxf.com/oss](https://rahulxf.com/oss)
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 output = [
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("GSoC / LFX / OSS guidance"),
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
- section("Run again"),
94
- color(C.blue, "npx @rahulxf/about-me"),
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
- process.stdout.write(`${output.join("\n")}\n`);
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.0.0",
4
- "description": "A small npx package that prints Rahul Vishwakarma's about page, projects, OSS work, and GSoC/LFX links.",
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
  },