@radkode/neo 0.3.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 (67) hide show
  1. package/README.md +167 -0
  2. package/bin/cli.js +2 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +74 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/config/index.d.ts +3 -0
  8. package/dist/commands/config/index.d.ts.map +1 -0
  9. package/dist/commands/config/index.js +43 -0
  10. package/dist/commands/config/index.js.map +1 -0
  11. package/dist/commands/git/index.d.ts +3 -0
  12. package/dist/commands/git/index.d.ts.map +1 -0
  13. package/dist/commands/git/index.js +8 -0
  14. package/dist/commands/git/index.js.map +1 -0
  15. package/dist/commands/git/push/index.d.ts +3 -0
  16. package/dist/commands/git/push/index.d.ts.map +1 -0
  17. package/dist/commands/git/push/index.js +140 -0
  18. package/dist/commands/git/push/index.js.map +1 -0
  19. package/dist/commands/index.d.ts +6 -0
  20. package/dist/commands/index.d.ts.map +1 -0
  21. package/dist/commands/index.js +12 -0
  22. package/dist/commands/index.js.map +1 -0
  23. package/dist/commands/init/index.d.ts +3 -0
  24. package/dist/commands/init/index.d.ts.map +1 -0
  25. package/dist/commands/init/index.js +136 -0
  26. package/dist/commands/init/index.js.map +1 -0
  27. package/dist/core/errors/index.d.ts +168 -0
  28. package/dist/core/errors/index.d.ts.map +1 -0
  29. package/dist/core/errors/index.js +260 -0
  30. package/dist/core/errors/index.js.map +1 -0
  31. package/dist/core/interfaces/index.d.ts +292 -0
  32. package/dist/core/interfaces/index.d.ts.map +1 -0
  33. package/dist/core/interfaces/index.js +9 -0
  34. package/dist/core/interfaces/index.js.map +1 -0
  35. package/dist/index.d.ts +5 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types/index.d.ts +17 -0
  40. package/dist/types/index.d.ts.map +1 -0
  41. package/dist/types/index.js +2 -0
  42. package/dist/types/index.js.map +1 -0
  43. package/dist/utils/banner.d.ts +2 -0
  44. package/dist/utils/banner.d.ts.map +1 -0
  45. package/dist/utils/banner.js +13 -0
  46. package/dist/utils/banner.js.map +1 -0
  47. package/dist/utils/completions.d.ts +6 -0
  48. package/dist/utils/completions.d.ts.map +1 -0
  49. package/dist/utils/completions.js +108 -0
  50. package/dist/utils/completions.js.map +1 -0
  51. package/dist/utils/config.d.ts +38 -0
  52. package/dist/utils/config.d.ts.map +1 -0
  53. package/dist/utils/config.js +128 -0
  54. package/dist/utils/config.js.map +1 -0
  55. package/dist/utils/installer.d.ts +28 -0
  56. package/dist/utils/installer.d.ts.map +1 -0
  57. package/dist/utils/installer.js +219 -0
  58. package/dist/utils/installer.js.map +1 -0
  59. package/dist/utils/logger.d.ts +13 -0
  60. package/dist/utils/logger.d.ts.map +1 -0
  61. package/dist/utils/logger.js +29 -0
  62. package/dist/utils/logger.js.map +1 -0
  63. package/dist/utils/shell.d.ts +31 -0
  64. package/dist/utils/shell.d.ts.map +1 -0
  65. package/dist/utils/shell.js +213 -0
  66. package/dist/utils/shell.js.map +1 -0
  67. package/package.json +83 -0
@@ -0,0 +1,213 @@
1
+ import { access, readFile, writeFile, copyFile } from 'fs/promises';
2
+ import { constants } from 'fs';
3
+ import { homedir } from 'os';
4
+ import { join } from 'path';
5
+ import { logger } from './logger.js';
6
+ const NEO_MARKER_START = '# === NEO CLI START ===';
7
+ const NEO_MARKER_END = '# === NEO CLI END ===';
8
+ export class ZshIntegration {
9
+ rcFile;
10
+ constructor(rcFile) {
11
+ this.rcFile = rcFile || join(homedir(), '.zshrc');
12
+ }
13
+ async rcExists() {
14
+ try {
15
+ await access(this.rcFile, constants.F_OK);
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ async readRc() {
23
+ const exists = await this.rcExists();
24
+ if (!exists) {
25
+ return '';
26
+ }
27
+ try {
28
+ return await readFile(this.rcFile, 'utf-8');
29
+ }
30
+ catch (error) {
31
+ logger.warn(`Failed to read ${this.rcFile}: ${error}`);
32
+ return '';
33
+ }
34
+ }
35
+ async writeRc(content) {
36
+ try {
37
+ await writeFile(this.rcFile, content, 'utf-8');
38
+ logger.debug(`Updated ${this.rcFile}`);
39
+ }
40
+ catch (error) {
41
+ logger.error(`Failed to write ${this.rcFile}: ${error}`);
42
+ throw error;
43
+ }
44
+ }
45
+ extractNeoSection(content) {
46
+ const startIndex = content.indexOf(NEO_MARKER_START);
47
+ const endIndex = content.indexOf(NEO_MARKER_END);
48
+ if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {
49
+ return null;
50
+ }
51
+ return content.substring(startIndex, endIndex + NEO_MARKER_END.length);
52
+ }
53
+ removeNeoSection(content) {
54
+ const neoSection = this.extractNeoSection(content);
55
+ if (!neoSection) {
56
+ return content;
57
+ }
58
+ return content.replace(neoSection, '').replace(/\n\n\n+/g, '\n\n');
59
+ }
60
+ async updateNeoSection(neoContent) {
61
+ const currentContent = await this.readRc();
62
+ const contentWithoutNeo = this.removeNeoSection(currentContent);
63
+ const newNeoSection = `
64
+ ${NEO_MARKER_START}
65
+ ${neoContent}
66
+ ${NEO_MARKER_END}
67
+ `;
68
+ const updatedContent = contentWithoutNeo + newNeoSection;
69
+ await this.writeRc(updatedContent);
70
+ }
71
+ async hasAlias(alias) {
72
+ const content = await this.readRc();
73
+ const neoSection = this.extractNeoSection(content);
74
+ if (!neoSection) {
75
+ return false;
76
+ }
77
+ const aliasPattern = new RegExp(`^alias ${alias}=`, 'm');
78
+ return aliasPattern.test(neoSection);
79
+ }
80
+ async addAlias(alias, command) {
81
+ const content = await this.readRc();
82
+ const existingSection = this.extractNeoSection(content);
83
+ let neoContent = '';
84
+ if (existingSection) {
85
+ const lines = existingSection
86
+ .split('\n')
87
+ .filter((line) => !line.trim().startsWith(NEO_MARKER_START) && !line.trim().startsWith(NEO_MARKER_END))
88
+ .filter((line) => !line.trim().startsWith(`alias ${alias}=`))
89
+ .filter((line) => line.trim() !== '');
90
+ neoContent = lines.join('\n');
91
+ }
92
+ neoContent += neoContent ? '\n' : '';
93
+ neoContent += `alias ${alias}="${command}"`;
94
+ await this.updateNeoSection(neoContent);
95
+ logger.debug(`Added alias: ${alias}="${command}"`);
96
+ }
97
+ async removeAlias(alias) {
98
+ const content = await this.readRc();
99
+ const existingSection = this.extractNeoSection(content);
100
+ if (!existingSection) {
101
+ return;
102
+ }
103
+ const lines = existingSection
104
+ .split('\n')
105
+ .filter((line) => !line.trim().startsWith(NEO_MARKER_START) && !line.trim().startsWith(NEO_MARKER_END))
106
+ .filter((line) => !line.trim().startsWith(`alias ${alias}=`))
107
+ .filter((line) => line.trim() !== '');
108
+ if (lines.length === 0) {
109
+ const contentWithoutNeo = this.removeNeoSection(content);
110
+ await this.writeRc(contentWithoutNeo);
111
+ }
112
+ else {
113
+ const neoContent = lines.join('\n');
114
+ await this.updateNeoSection(neoContent);
115
+ }
116
+ logger.debug(`Removed alias: ${alias}`);
117
+ }
118
+ async hasCompletions() {
119
+ const content = await this.readRc();
120
+ const neoSection = this.extractNeoSection(content);
121
+ if (!neoSection) {
122
+ return false;
123
+ }
124
+ return neoSection.includes('fpath=') && neoSection.includes('compinit');
125
+ }
126
+ async addCompletions(completionsPath) {
127
+ const content = await this.readRc();
128
+ const existingSection = this.extractNeoSection(content);
129
+ let neoContent = '';
130
+ if (existingSection) {
131
+ const lines = existingSection
132
+ .split('\n')
133
+ .filter((line) => !line.trim().startsWith(NEO_MARKER_START) && !line.trim().startsWith(NEO_MARKER_END))
134
+ .filter((line) => !line.trim().startsWith('fpath='))
135
+ .filter((line) => !line.trim().startsWith('autoload'))
136
+ .filter((line) => line.trim() !== '');
137
+ neoContent = lines.join('\n');
138
+ }
139
+ if (neoContent) {
140
+ neoContent += '\n';
141
+ }
142
+ neoContent += `# Neo CLI completions
143
+ fpath=(${completionsPath} $fpath)
144
+ autoload -Uz compinit
145
+ compinit`;
146
+ await this.updateNeoSection(neoContent);
147
+ logger.debug(`Added completions from: ${completionsPath}`);
148
+ }
149
+ async removeCompletions() {
150
+ const content = await this.readRc();
151
+ const existingSection = this.extractNeoSection(content);
152
+ if (!existingSection) {
153
+ return;
154
+ }
155
+ const lines = existingSection
156
+ .split('\n')
157
+ .filter((line) => !line.trim().startsWith(NEO_MARKER_START) && !line.trim().startsWith(NEO_MARKER_END))
158
+ .filter((line) => !line.trim().startsWith('fpath='))
159
+ .filter((line) => !line.trim().startsWith('autoload'))
160
+ .filter((line) => !line.includes('Neo CLI completions'))
161
+ .filter((line) => !line.trim().startsWith('compinit'))
162
+ .filter((line) => line.trim() !== '');
163
+ if (lines.length === 0) {
164
+ const contentWithoutNeo = this.removeNeoSection(content);
165
+ await this.writeRc(contentWithoutNeo);
166
+ }
167
+ else {
168
+ const neoContent = lines.join('\n');
169
+ await this.updateNeoSection(neoContent);
170
+ }
171
+ logger.debug('Removed completions setup');
172
+ }
173
+ async backup() {
174
+ const exists = await this.rcExists();
175
+ if (!exists) {
176
+ return null;
177
+ }
178
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
179
+ const backupFile = `${this.rcFile}.neo-backup.${timestamp}`;
180
+ try {
181
+ await copyFile(this.rcFile, backupFile);
182
+ logger.debug(`Backed up ${this.rcFile} to: ${backupFile}`);
183
+ return backupFile;
184
+ }
185
+ catch (error) {
186
+ logger.warn(`Failed to backup ${this.rcFile}: ${error}`);
187
+ return null;
188
+ }
189
+ }
190
+ async applyConfig(config) {
191
+ if (config.preferences.aliases.n) {
192
+ await this.addAlias('n', 'neo');
193
+ }
194
+ else {
195
+ await this.removeAlias('n');
196
+ }
197
+ if (config.installation.completionsPath) {
198
+ await this.addCompletions(config.installation.completionsPath);
199
+ }
200
+ }
201
+ async cleanup() {
202
+ const content = await this.readRc();
203
+ const contentWithoutNeo = this.removeNeoSection(content);
204
+ if (content !== contentWithoutNeo) {
205
+ await this.writeRc(contentWithoutNeo);
206
+ logger.debug('Removed all NEO CLI configurations from shell');
207
+ }
208
+ }
209
+ getRcFile() {
210
+ return this.rcFile;
211
+ }
212
+ }
213
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@radkode/neo",
3
+ "version": "0.3.0",
4
+ "description": "⚡ Lightning-fast TypeScript CLI framework",
5
+ "author": "Jacek Radko",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "bin": {
11
+ "neo": "./bin/cli.js"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "bin"
16
+ ],
17
+ "keywords": [
18
+ "cli",
19
+ "typescript",
20
+ "commander",
21
+ "radkode",
22
+ "terminal",
23
+ "command-line"
24
+ ],
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/radkode/neo.git"
28
+ },
29
+ "bugs": {
30
+ "url": "https://github.com/radkode/neo/issues"
31
+ },
32
+ "homepage": "https://github.com/radkode/neo#readme",
33
+ "engines": {
34
+ "node": ">=20.0.0",
35
+ "pnpm": ">=8.0.0"
36
+ },
37
+ "dependencies": {
38
+ "@commander-js/extra-typings": "^14.0.0",
39
+ "chalk": "5",
40
+ "commander": "^14.0.1",
41
+ "execa": "^9.6.0",
42
+ "inquirer": "^12.9.6",
43
+ "ora": "^9.0.0",
44
+ "which": "^5.0.0"
45
+ },
46
+ "devDependencies": {
47
+ "@changesets/changelog-github": "^0.5.1",
48
+ "@changesets/cli": "^2.29.7",
49
+ "@types/inquirer": "^9.0.9",
50
+ "@types/node": "^24.5.2",
51
+ "@types/which": "^3.0.4",
52
+ "@typescript-eslint/eslint-plugin": "^8.44.1",
53
+ "@typescript-eslint/parser": "^8.44.1",
54
+ "@vitest/coverage-v8": "^3.2.4",
55
+ "eslint": "^9.36.0",
56
+ "eslint-config-prettier": "^10.1.8",
57
+ "globals": "^16.4.0",
58
+ "jiti": "^2.6.0",
59
+ "prettier": "^3.6.2",
60
+ "tsc-alias": "^1.8.16",
61
+ "tsx": "^4.20.6",
62
+ "typescript": "^5.9.2",
63
+ "vitest": "^3.2.4"
64
+ },
65
+ "scripts": {
66
+ "build": "tsc && tsc-alias",
67
+ "changeset": "changeset",
68
+ "changeset:status": "changeset status",
69
+ "changeset:version": "changeset version",
70
+ "changeset:publish": "pnpm run build && changeset publish",
71
+ "dev": "tsx src/cli.ts",
72
+ "format": "prettier --write \"**/*.ts\"",
73
+ "link-local": "pnpm run build && pnpm link --global",
74
+ "lint": "eslint src --ext .ts",
75
+ "release": "pnpm run build && pnpm run test && changeset publish",
76
+ "start": "node dist/cli.js",
77
+ "test:coverage": "vitest run --coverage",
78
+ "test:watch": "vitest",
79
+ "test": "vitest run",
80
+ "unlink-local": "pnpm unlink --global @radkode/neo",
81
+ "version-packages": "changeset version && pnpm install --lockfile-only"
82
+ }
83
+ }