@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.
- package/README.md +167 -0
- package/bin/cli.js +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +74 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config/index.d.ts +3 -0
- package/dist/commands/config/index.d.ts.map +1 -0
- package/dist/commands/config/index.js +43 -0
- package/dist/commands/config/index.js.map +1 -0
- package/dist/commands/git/index.d.ts +3 -0
- package/dist/commands/git/index.d.ts.map +1 -0
- package/dist/commands/git/index.js +8 -0
- package/dist/commands/git/index.js.map +1 -0
- package/dist/commands/git/push/index.d.ts +3 -0
- package/dist/commands/git/push/index.d.ts.map +1 -0
- package/dist/commands/git/push/index.js +140 -0
- package/dist/commands/git/push/index.js.map +1 -0
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +12 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init/index.d.ts +3 -0
- package/dist/commands/init/index.d.ts.map +1 -0
- package/dist/commands/init/index.js +136 -0
- package/dist/commands/init/index.js.map +1 -0
- package/dist/core/errors/index.d.ts +168 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +260 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/interfaces/index.d.ts +292 -0
- package/dist/core/interfaces/index.d.ts.map +1 -0
- package/dist/core/interfaces/index.js +9 -0
- package/dist/core/interfaces/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/banner.d.ts +2 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +13 -0
- package/dist/utils/banner.js.map +1 -0
- package/dist/utils/completions.d.ts +6 -0
- package/dist/utils/completions.d.ts.map +1 -0
- package/dist/utils/completions.js +108 -0
- package/dist/utils/completions.js.map +1 -0
- package/dist/utils/config.d.ts +38 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +128 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/installer.d.ts +28 -0
- package/dist/utils/installer.d.ts.map +1 -0
- package/dist/utils/installer.js +219 -0
- package/dist/utils/installer.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +29 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/shell.d.ts +31 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +213 -0
- package/dist/utils/shell.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { access, mkdir, readFile, writeFile } 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 DEFAULT_CONFIG = {
|
|
7
|
+
user: {},
|
|
8
|
+
preferences: {
|
|
9
|
+
aliases: {
|
|
10
|
+
n: true,
|
|
11
|
+
},
|
|
12
|
+
theme: 'auto',
|
|
13
|
+
},
|
|
14
|
+
shell: {
|
|
15
|
+
type: 'zsh',
|
|
16
|
+
rcFile: join(homedir(), '.zshrc'),
|
|
17
|
+
},
|
|
18
|
+
installation: {
|
|
19
|
+
installedAt: new Date().toISOString(),
|
|
20
|
+
version: '0.1.0',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export class ConfigManager {
|
|
24
|
+
configDir;
|
|
25
|
+
configFile;
|
|
26
|
+
constructor() {
|
|
27
|
+
this.configDir = join(homedir(), '.config', 'neo');
|
|
28
|
+
this.configFile = join(this.configDir, 'config.json');
|
|
29
|
+
}
|
|
30
|
+
async ensureConfigDir() {
|
|
31
|
+
try {
|
|
32
|
+
await access(this.configDir, constants.F_OK);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
await mkdir(this.configDir, { recursive: true });
|
|
36
|
+
logger.debug(`Created config directory: ${this.configDir}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async isInitialized() {
|
|
40
|
+
try {
|
|
41
|
+
await access(this.configFile, constants.F_OK);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async read() {
|
|
49
|
+
const initialized = await this.isInitialized();
|
|
50
|
+
if (!initialized) {
|
|
51
|
+
return DEFAULT_CONFIG;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const content = await readFile(this.configFile, 'utf-8');
|
|
55
|
+
const config = JSON.parse(content);
|
|
56
|
+
return {
|
|
57
|
+
...DEFAULT_CONFIG,
|
|
58
|
+
...config,
|
|
59
|
+
user: { ...DEFAULT_CONFIG.user, ...config.user },
|
|
60
|
+
preferences: {
|
|
61
|
+
...DEFAULT_CONFIG.preferences,
|
|
62
|
+
...config.preferences,
|
|
63
|
+
aliases: { ...DEFAULT_CONFIG.preferences.aliases, ...config.preferences?.aliases },
|
|
64
|
+
},
|
|
65
|
+
shell: { ...DEFAULT_CONFIG.shell, ...config.shell },
|
|
66
|
+
installation: { ...DEFAULT_CONFIG.installation, ...config.installation },
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.warn(`Failed to read config file: ${error}`);
|
|
71
|
+
return DEFAULT_CONFIG;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async write(config) {
|
|
75
|
+
await this.ensureConfigDir();
|
|
76
|
+
try {
|
|
77
|
+
const content = JSON.stringify(config, null, 2);
|
|
78
|
+
await writeFile(this.configFile, content, 'utf-8');
|
|
79
|
+
logger.debug(`Config saved to: ${this.configFile}`);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger.error(`Failed to write config file: ${error}`);
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async update(updates) {
|
|
87
|
+
const current = await this.read();
|
|
88
|
+
const updated = {
|
|
89
|
+
...current,
|
|
90
|
+
...updates,
|
|
91
|
+
user: { ...current.user, ...updates.user },
|
|
92
|
+
preferences: {
|
|
93
|
+
...current.preferences,
|
|
94
|
+
...updates.preferences,
|
|
95
|
+
aliases: { ...current.preferences.aliases, ...updates.preferences?.aliases },
|
|
96
|
+
},
|
|
97
|
+
shell: { ...current.shell, ...updates.shell },
|
|
98
|
+
installation: { ...current.installation, ...updates.installation },
|
|
99
|
+
};
|
|
100
|
+
await this.write(updated);
|
|
101
|
+
}
|
|
102
|
+
getConfigDir() {
|
|
103
|
+
return this.configDir;
|
|
104
|
+
}
|
|
105
|
+
getConfigFile() {
|
|
106
|
+
return this.configFile;
|
|
107
|
+
}
|
|
108
|
+
async backup() {
|
|
109
|
+
const initialized = await this.isInitialized();
|
|
110
|
+
if (!initialized) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
114
|
+
const backupFile = join(this.configDir, `config.backup.${timestamp}.json`);
|
|
115
|
+
try {
|
|
116
|
+
const content = await readFile(this.configFile, 'utf-8');
|
|
117
|
+
await writeFile(backupFile, content, 'utf-8');
|
|
118
|
+
logger.debug(`Config backed up to: ${backupFile}`);
|
|
119
|
+
return backupFile;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger.warn(`Failed to backup config: ${error}`);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export const configManager = new ConfigManager();
|
|
128
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface InstallationResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
version?: string | undefined;
|
|
4
|
+
globalPath?: string | undefined;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class GlobalInstaller {
|
|
8
|
+
private packageName;
|
|
9
|
+
constructor(packageName?: string);
|
|
10
|
+
checkPnpm(): Promise<boolean>;
|
|
11
|
+
getPnpmVersion(): Promise<string | null>;
|
|
12
|
+
isInstalledGlobally(): Promise<boolean>;
|
|
13
|
+
getGlobalPath(): Promise<string | null>;
|
|
14
|
+
getInstalledVersion(): Promise<string | null>;
|
|
15
|
+
install(): Promise<InstallationResult>;
|
|
16
|
+
uninstall(): Promise<InstallationResult>;
|
|
17
|
+
update(): Promise<InstallationResult>;
|
|
18
|
+
verifyGlobalCommand(): Promise<boolean>;
|
|
19
|
+
getStatus(): Promise<{
|
|
20
|
+
pnpmInstalled: boolean;
|
|
21
|
+
pnpmVersion?: string | undefined;
|
|
22
|
+
packageInstalled: boolean;
|
|
23
|
+
packageVersion?: string | undefined;
|
|
24
|
+
globalPath?: string | undefined;
|
|
25
|
+
commandAccessible: boolean;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/utils/installer.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAuB;IAO1C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAY7B,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYxC,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBvC,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYvC,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAc7C,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAsEtC,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA4CxC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAwCrC,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBvC,SAAS,IAAI,OAAO,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,gBAAgB,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CAiBH"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import which from 'which';
|
|
3
|
+
import { logger } from './logger.js';
|
|
4
|
+
function isErrorWithMessage(error) {
|
|
5
|
+
return (typeof error === 'object' &&
|
|
6
|
+
error !== null &&
|
|
7
|
+
'message' in error &&
|
|
8
|
+
typeof error['message'] === 'string');
|
|
9
|
+
}
|
|
10
|
+
function getErrorMessage(error) {
|
|
11
|
+
if (isErrorWithMessage(error)) {
|
|
12
|
+
return error.message;
|
|
13
|
+
}
|
|
14
|
+
return String(error);
|
|
15
|
+
}
|
|
16
|
+
export class GlobalInstaller {
|
|
17
|
+
packageName;
|
|
18
|
+
constructor(packageName = '@radkode/neo') {
|
|
19
|
+
this.packageName = packageName;
|
|
20
|
+
}
|
|
21
|
+
async checkPnpm() {
|
|
22
|
+
try {
|
|
23
|
+
await which('pnpm');
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async getPnpmVersion() {
|
|
31
|
+
try {
|
|
32
|
+
const { stdout } = await execa('pnpm', ['--version']);
|
|
33
|
+
return stdout.trim();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async isInstalledGlobally() {
|
|
40
|
+
try {
|
|
41
|
+
const { stdout } = await execa('pnpm', ['list', '-g', '--depth=0', '--json']);
|
|
42
|
+
const globalPackages = JSON.parse(stdout);
|
|
43
|
+
const dependencies = globalPackages[0]?.dependencies || {};
|
|
44
|
+
return this.packageName in dependencies;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async getGlobalPath() {
|
|
51
|
+
try {
|
|
52
|
+
const { stdout } = await execa('pnpm', ['root', '-g']);
|
|
53
|
+
return stdout.trim();
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async getInstalledVersion() {
|
|
60
|
+
try {
|
|
61
|
+
const { stdout } = await execa('pnpm', ['list', '-g', '--depth=0', '--json']);
|
|
62
|
+
const globalPackages = JSON.parse(stdout);
|
|
63
|
+
const dependencies = globalPackages[0]?.dependencies || {};
|
|
64
|
+
return dependencies[this.packageName]?.version || null;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async install() {
|
|
71
|
+
const hasPnpm = await this.checkPnpm();
|
|
72
|
+
if (!hasPnpm) {
|
|
73
|
+
return {
|
|
74
|
+
success: false,
|
|
75
|
+
error: 'pnpm is not installed. Please install pnpm first: https://pnpm.io/installation',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
logger.debug(`Installing ${this.packageName} globally...`);
|
|
80
|
+
const { stdout, stderr } = await execa('pnpm', ['add', '-g', this.packageName], {
|
|
81
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
82
|
+
});
|
|
83
|
+
logger.debug(`pnpm stdout: ${stdout}`);
|
|
84
|
+
if (stderr) {
|
|
85
|
+
logger.debug(`pnpm stderr: ${stderr}`);
|
|
86
|
+
}
|
|
87
|
+
const isInstalled = await this.isInstalledGlobally();
|
|
88
|
+
if (!isInstalled) {
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
error: 'Installation completed but package verification failed',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const version = await this.getInstalledVersion();
|
|
95
|
+
const globalPath = await this.getGlobalPath();
|
|
96
|
+
return {
|
|
97
|
+
success: true,
|
|
98
|
+
version: version ?? undefined,
|
|
99
|
+
globalPath: globalPath ?? undefined,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
const errorMessage = getErrorMessage(error);
|
|
104
|
+
logger.error(`Installation failed: ${errorMessage}`);
|
|
105
|
+
if (errorMessage.includes('EACCES')) {
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
error: 'Permission denied. Try running with sudo or configure pnpm to install in user directory.',
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
if (errorMessage.includes('ENOTFOUND')) {
|
|
112
|
+
return {
|
|
113
|
+
success: false,
|
|
114
|
+
error: 'Network error. Please check your internet connection and try again.',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
success: false,
|
|
119
|
+
error: `Installation failed: ${errorMessage}`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async uninstall() {
|
|
124
|
+
const hasPnpm = await this.checkPnpm();
|
|
125
|
+
if (!hasPnpm) {
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: 'pnpm is not installed',
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
logger.debug(`Uninstalling ${this.packageName} globally...`);
|
|
133
|
+
const { stdout, stderr } = await execa('pnpm', ['remove', '-g', this.packageName]);
|
|
134
|
+
logger.debug(`pnpm stdout: ${stdout}`);
|
|
135
|
+
if (stderr) {
|
|
136
|
+
logger.debug(`pnpm stderr: ${stderr}`);
|
|
137
|
+
}
|
|
138
|
+
const isStillInstalled = await this.isInstalledGlobally();
|
|
139
|
+
if (isStillInstalled) {
|
|
140
|
+
return {
|
|
141
|
+
success: false,
|
|
142
|
+
error: 'Uninstallation completed but package is still present',
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
success: true,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
const errorMessage = getErrorMessage(error);
|
|
151
|
+
logger.error(`Uninstallation failed: ${errorMessage}`);
|
|
152
|
+
return {
|
|
153
|
+
success: false,
|
|
154
|
+
error: `Uninstallation failed: ${errorMessage}`,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async update() {
|
|
159
|
+
const hasPnpm = await this.checkPnpm();
|
|
160
|
+
if (!hasPnpm) {
|
|
161
|
+
return {
|
|
162
|
+
success: false,
|
|
163
|
+
error: 'pnpm is not installed',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
logger.debug(`Updating ${this.packageName} globally...`);
|
|
168
|
+
const { stdout, stderr } = await execa('pnpm', ['update', '-g', this.packageName]);
|
|
169
|
+
logger.debug(`pnpm stdout: ${stdout}`);
|
|
170
|
+
if (stderr) {
|
|
171
|
+
logger.debug(`pnpm stderr: ${stderr}`);
|
|
172
|
+
}
|
|
173
|
+
const version = await this.getInstalledVersion();
|
|
174
|
+
const globalPath = await this.getGlobalPath();
|
|
175
|
+
return {
|
|
176
|
+
success: true,
|
|
177
|
+
version: version ?? undefined,
|
|
178
|
+
globalPath: globalPath ?? undefined,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const errorMessage = getErrorMessage(error);
|
|
183
|
+
logger.error(`Update failed: ${errorMessage}`);
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
error: `Update failed: ${errorMessage}`,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async verifyGlobalCommand() {
|
|
191
|
+
try {
|
|
192
|
+
await which('neo');
|
|
193
|
+
const { stdout } = await execa('neo', ['--version']);
|
|
194
|
+
logger.debug(`neo --version output: ${stdout}`);
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
logger.debug(`Global command verification failed: ${error}`);
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async getStatus() {
|
|
203
|
+
const pnpmInstalled = await this.checkPnpm();
|
|
204
|
+
const pnpmVersion = pnpmInstalled ? await this.getPnpmVersion() : undefined;
|
|
205
|
+
const packageInstalled = await this.isInstalledGlobally();
|
|
206
|
+
const packageVersion = packageInstalled ? await this.getInstalledVersion() : undefined;
|
|
207
|
+
const globalPath = await this.getGlobalPath();
|
|
208
|
+
const commandAccessible = await this.verifyGlobalCommand();
|
|
209
|
+
return {
|
|
210
|
+
pnpmInstalled,
|
|
211
|
+
pnpmVersion: pnpmVersion ?? undefined,
|
|
212
|
+
packageInstalled,
|
|
213
|
+
packageVersion: packageVersion ?? undefined,
|
|
214
|
+
globalPath: globalPath ?? undefined,
|
|
215
|
+
commandAccessible,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/utils/installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare class Logger {
|
|
2
|
+
private verbose;
|
|
3
|
+
setVerbose(verbose: boolean): void;
|
|
4
|
+
info(message: string): void;
|
|
5
|
+
success(message: string): void;
|
|
6
|
+
warn(message: string): void;
|
|
7
|
+
error(message: string): void;
|
|
8
|
+
debug(message: string): void;
|
|
9
|
+
log(message: string): void;
|
|
10
|
+
}
|
|
11
|
+
export declare const logger: Logger;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,cAAM,MAAM;IACV,OAAO,CAAC,OAAO,CAAkB;IAEjC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG3B;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
class Logger {
|
|
3
|
+
verbose = false;
|
|
4
|
+
setVerbose(verbose) {
|
|
5
|
+
this.verbose = verbose;
|
|
6
|
+
}
|
|
7
|
+
info(message) {
|
|
8
|
+
console.log(chalk.blue('ℹ'), message);
|
|
9
|
+
}
|
|
10
|
+
success(message) {
|
|
11
|
+
console.log(chalk.green('✓'), message);
|
|
12
|
+
}
|
|
13
|
+
warn(message) {
|
|
14
|
+
console.log(chalk.yellow('⚠'), message);
|
|
15
|
+
}
|
|
16
|
+
error(message) {
|
|
17
|
+
console.error(chalk.red('✖'), message);
|
|
18
|
+
}
|
|
19
|
+
debug(message) {
|
|
20
|
+
if (this.verbose) {
|
|
21
|
+
console.log(chalk.gray('[DEBUG]'), message);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
log(message) {
|
|
25
|
+
console.log(message);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export const logger = new Logger();
|
|
29
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM;IACF,OAAO,GAAY,KAAK,CAAC;IAEjC,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { NeoConfig } from './config.js';
|
|
2
|
+
export interface ShellIntegration {
|
|
3
|
+
hasAlias(alias: string): Promise<boolean>;
|
|
4
|
+
addAlias(alias: string, command: string): Promise<void>;
|
|
5
|
+
removeAlias(alias: string): Promise<void>;
|
|
6
|
+
hasCompletions(): Promise<boolean>;
|
|
7
|
+
addCompletions(completionsPath: string): Promise<void>;
|
|
8
|
+
removeCompletions(): Promise<void>;
|
|
9
|
+
backup(): Promise<string | null>;
|
|
10
|
+
}
|
|
11
|
+
export declare class ZshIntegration implements ShellIntegration {
|
|
12
|
+
private rcFile;
|
|
13
|
+
constructor(rcFile?: string);
|
|
14
|
+
private rcExists;
|
|
15
|
+
private readRc;
|
|
16
|
+
private writeRc;
|
|
17
|
+
private extractNeoSection;
|
|
18
|
+
private removeNeoSection;
|
|
19
|
+
private updateNeoSection;
|
|
20
|
+
hasAlias(alias: string): Promise<boolean>;
|
|
21
|
+
addAlias(alias: string, command: string): Promise<void>;
|
|
22
|
+
removeAlias(alias: string): Promise<void>;
|
|
23
|
+
hasCompletions(): Promise<boolean>;
|
|
24
|
+
addCompletions(completionsPath: string): Promise<void>;
|
|
25
|
+
removeCompletions(): Promise<void>;
|
|
26
|
+
backup(): Promise<string | null>;
|
|
27
|
+
applyConfig(config: NeoConfig): Promise<void>;
|
|
28
|
+
cleanup(): Promise<void>;
|
|
29
|
+
getRcFile(): string;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClC;AAKD,qBAAa,cAAe,YAAW,gBAAgB;IACrD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;YAOb,QAAQ;YAYR,MAAM;YAiBN,OAAO;IAarB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,gBAAgB;YAYV,gBAAgB;IAiBxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAezC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BvD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAclC,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCtD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmClC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsBhC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,SAAS,IAAI,MAAM;CAGpB"}
|