@radkode/neo 0.4.0 → 0.6.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 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/alias/index.d.ts +3 -0
- package/dist/commands/alias/index.d.ts.map +1 -0
- package/dist/commands/alias/index.js +8 -0
- package/dist/commands/alias/index.js.map +1 -0
- package/dist/commands/alias/setup/index.d.ts +3 -0
- package/dist/commands/alias/setup/index.d.ts.map +1 -0
- package/dist/commands/alias/setup/index.js +81 -0
- package/dist/commands/alias/setup/index.js.map +1 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +142 -12
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/git/pull/index.d.ts.map +1 -1
- package/dist/commands/git/pull/index.js +31 -30
- package/dist/commands/git/pull/index.js.map +1 -1
- package/dist/commands/git/push/index.d.ts.map +1 -1
- package/dist/commands/git/push/index.js +36 -42
- package/dist/commands/git/push/index.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +39 -28
- package/dist/commands/init/index.js.map +1 -1
- package/dist/commands/update/index.d.ts.map +1 -1
- package/dist/commands/update/index.js +30 -27
- package/dist/commands/update/index.js.map +1 -1
- package/dist/utils/banner.d.ts +3 -0
- package/dist/utils/banner.d.ts.map +1 -1
- package/dist/utils/banner.js +26 -6
- package/dist/utils/banner.js.map +1 -1
- package/dist/utils/config.d.ts +2 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +1 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/ui-examples.d.ts +3 -0
- package/dist/utils/ui-examples.d.ts.map +1 -0
- package/dist/utils/ui-examples.js +191 -0
- package/dist/utils/ui-examples.js.map +1 -0
- package/dist/utils/ui-types.d.ts +72 -0
- package/dist/utils/ui-types.d.ts.map +1 -0
- package/dist/utils/ui-types.js +21 -0
- package/dist/utils/ui-types.js.map +1 -0
- package/dist/utils/ui.d.ts +43 -0
- package/dist/utils/ui.d.ts.map +1 -0
- package/dist/utils/ui.js +163 -0
- package/dist/utils/ui.js.map +1 -0
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/git/pull/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/git/pull/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/git/push/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/git/push/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,wBAAgB,iBAAiB,IAAI,OAAO,CAsJ3C"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Command } from '@commander-js/extra-typings';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import ora from 'ora';
|
|
4
2
|
import { execa } from 'execa';
|
|
5
3
|
import inquirer from 'inquirer';
|
|
6
4
|
import { logger } from '../../../utils/logger.js';
|
|
5
|
+
import { ui } from '../../../utils/ui.js';
|
|
7
6
|
export function createPushCommand() {
|
|
8
7
|
const command = new Command('push');
|
|
9
8
|
command
|
|
@@ -14,14 +13,14 @@ export function createPushCommand() {
|
|
|
14
13
|
.option('--tags', 'push tags along with commits')
|
|
15
14
|
.action(async (options) => {
|
|
16
15
|
let branchName = '';
|
|
17
|
-
const spinner =
|
|
16
|
+
const spinner = ui.spinner('Pushing to remote');
|
|
18
17
|
try {
|
|
19
18
|
const { stdout: currentBranch } = await execa('git', ['branch', '--show-current']);
|
|
20
19
|
branchName = currentBranch.trim();
|
|
21
20
|
logger.debug(`Current branch: ${branchName}`);
|
|
22
21
|
if (branchName === 'main') {
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
ui.warn('You are about to push directly to main branch');
|
|
23
|
+
ui.muted('This is generally not recommended as it bypasses code review processes');
|
|
25
24
|
const { confirmPush } = await inquirer.prompt([
|
|
26
25
|
{
|
|
27
26
|
type: 'confirm',
|
|
@@ -31,16 +30,16 @@ export function createPushCommand() {
|
|
|
31
30
|
},
|
|
32
31
|
]);
|
|
33
32
|
if (!confirmPush) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
ui.success("Push cancelled. Here's how to push your changes safely:");
|
|
34
|
+
ui.list([
|
|
35
|
+
'Create a feature branch: git checkout -b feature/your-feature-name',
|
|
36
|
+
'Push to your branch: git push -u origin feature/your-feature-name',
|
|
37
|
+
'Create a pull request to merge into main',
|
|
38
|
+
]);
|
|
39
|
+
ui.muted('This protects the main branch from accidental changes');
|
|
41
40
|
process.exit(0);
|
|
42
41
|
}
|
|
43
|
-
|
|
42
|
+
ui.step('Proceeding with push to main branch');
|
|
44
43
|
}
|
|
45
44
|
spinner.start();
|
|
46
45
|
logger.debug(`Force push: ${options.force || false}`);
|
|
@@ -49,8 +48,8 @@ export function createPushCommand() {
|
|
|
49
48
|
logger.debug(`Push tags: ${options.tags || false}`);
|
|
50
49
|
if (options.dryRun) {
|
|
51
50
|
spinner.stop();
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
ui.warn('Dry run mode - no changes will be pushed');
|
|
52
|
+
ui.info(`Would push from branch: ${branchName}`);
|
|
54
53
|
try {
|
|
55
54
|
const { stdout: commits } = await execa('git', [
|
|
56
55
|
'log',
|
|
@@ -58,20 +57,15 @@ export function createPushCommand() {
|
|
|
58
57
|
`origin/${branchName}..HEAD`,
|
|
59
58
|
]);
|
|
60
59
|
if (commits.trim()) {
|
|
61
|
-
|
|
62
|
-
commits
|
|
63
|
-
.trim()
|
|
64
|
-
.split('\n')
|
|
65
|
-
.forEach((commit) => {
|
|
66
|
-
logger.log(` • ${commit}`);
|
|
67
|
-
});
|
|
60
|
+
ui.info('Would push the following commits:');
|
|
61
|
+
ui.list(commits.trim().split('\n'));
|
|
68
62
|
}
|
|
69
63
|
else {
|
|
70
|
-
|
|
64
|
+
ui.info('No new commits to push');
|
|
71
65
|
}
|
|
72
66
|
}
|
|
73
67
|
catch {
|
|
74
|
-
|
|
68
|
+
ui.info('Would push current branch (unable to determine commit differences)');
|
|
75
69
|
}
|
|
76
70
|
return;
|
|
77
71
|
}
|
|
@@ -93,45 +87,45 @@ export function createPushCommand() {
|
|
|
93
87
|
stdio: 'pipe',
|
|
94
88
|
encoding: 'utf8',
|
|
95
89
|
});
|
|
96
|
-
spinner.succeed(
|
|
90
|
+
spinner.succeed('Successfully pushed to remote!');
|
|
97
91
|
if (pushResult.stdout) {
|
|
98
|
-
|
|
92
|
+
ui.muted(pushResult.stdout);
|
|
99
93
|
}
|
|
100
94
|
if (options.setUpstream) {
|
|
101
|
-
|
|
95
|
+
ui.info(`Set upstream branch: ${options.setUpstream}`);
|
|
102
96
|
}
|
|
103
97
|
}
|
|
104
98
|
catch (error) {
|
|
105
99
|
spinner.stop();
|
|
106
100
|
if (error instanceof Error) {
|
|
107
101
|
if (error.message?.includes('not a git repository')) {
|
|
108
|
-
|
|
109
|
-
|
|
102
|
+
ui.error('Not a git repository!');
|
|
103
|
+
ui.warn('Make sure you are in a git repository directory');
|
|
110
104
|
process.exit(1);
|
|
111
105
|
}
|
|
112
106
|
if (error.message?.includes('no upstream branch')) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
107
|
+
ui.error('No upstream branch configured!');
|
|
108
|
+
ui.warn('Use --set-upstream to set the upstream branch:');
|
|
109
|
+
ui.muted(` git push -u origin ${branchName || 'your-branch'}`);
|
|
116
110
|
process.exit(1);
|
|
117
111
|
}
|
|
118
112
|
if (error.message?.includes('rejected')) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
113
|
+
ui.error('Push was rejected!');
|
|
114
|
+
ui.warn('The remote branch has changes that conflict with your local branch');
|
|
115
|
+
ui.muted('Try pulling the latest changes first:');
|
|
116
|
+
ui.muted(` git pull origin ${branchName || 'your-branch'}`);
|
|
117
|
+
ui.muted('Or use --force to overwrite (use with caution):');
|
|
118
|
+
ui.muted(' git push --force');
|
|
125
119
|
process.exit(1);
|
|
126
120
|
}
|
|
127
121
|
if (error.message?.includes('authentication')) {
|
|
128
|
-
|
|
129
|
-
|
|
122
|
+
ui.error('Authentication failed!');
|
|
123
|
+
ui.warn('Check your git credentials or SSH keys');
|
|
130
124
|
process.exit(1);
|
|
131
125
|
}
|
|
132
126
|
}
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
ui.error('Failed to push to remote');
|
|
128
|
+
ui.muted(error instanceof Error ? error.message : String(error));
|
|
135
129
|
process.exit(1);
|
|
136
130
|
}
|
|
137
131
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/git/push/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/git/push/index.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ export declare function registerCommands(program: Command): void;
|
|
|
3
3
|
export { createInitCommand } from './init/index.js';
|
|
4
4
|
export { createConfigCommand } from './config/index.js';
|
|
5
5
|
export { createGitCommand } from './git/index.js';
|
|
6
|
+
export { createAliasCommand } from './alias/index.js';
|
|
6
7
|
export { createUpdateCommand } from './update/index.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAMvD;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -2,14 +2,17 @@ import { createInitCommand } from './init/index.js';
|
|
|
2
2
|
import { createConfigCommand } from './config/index.js';
|
|
3
3
|
import { createGitCommand } from './git/index.js';
|
|
4
4
|
import { createUpdateCommand } from './update/index.js';
|
|
5
|
+
import { createAliasCommand } from './alias/index.js';
|
|
5
6
|
export function registerCommands(program) {
|
|
6
7
|
program.addCommand(createInitCommand());
|
|
7
8
|
program.addCommand(createConfigCommand());
|
|
8
9
|
program.addCommand(createGitCommand());
|
|
10
|
+
program.addCommand(createAliasCommand());
|
|
9
11
|
program.addCommand(createUpdateCommand());
|
|
10
12
|
}
|
|
11
13
|
export { createInitCommand } from './init/index.js';
|
|
12
14
|
export { createConfigCommand } from './config/index.js';
|
|
13
15
|
export { createGitCommand } from './git/index.js';
|
|
16
|
+
export { createAliasCommand } from './alias/index.js';
|
|
14
17
|
export { createUpdateCommand } from './update/index.js';
|
|
15
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAWtD,wBAAgB,iBAAiB,IAAI,OAAO,CAmK3C"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Command } from '@commander-js/extra-typings';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import ora from 'ora';
|
|
4
2
|
import inquirer from 'inquirer';
|
|
5
3
|
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { ui } from '../../utils/ui.js';
|
|
6
5
|
import { configManager } from '../../utils/config.js';
|
|
7
6
|
import { GlobalInstaller } from '../../utils/installer.js';
|
|
8
7
|
import { ZshIntegration } from '../../utils/shell.js';
|
|
@@ -15,7 +14,8 @@ export function createInitCommand() {
|
|
|
15
14
|
.option('--force', 'force reconfiguration if already initialized')
|
|
16
15
|
.option('--skip-install', 'skip global installation (configuration only)')
|
|
17
16
|
.action(async (options) => {
|
|
18
|
-
const spinner =
|
|
17
|
+
const spinner = ui.spinner('Checking current setup');
|
|
18
|
+
spinner.start();
|
|
19
19
|
try {
|
|
20
20
|
const installer = new GlobalInstaller();
|
|
21
21
|
const shell = new ZshIntegration();
|
|
@@ -24,8 +24,8 @@ export function createInitCommand() {
|
|
|
24
24
|
spinner.stop();
|
|
25
25
|
if (isInitialized && !options.force) {
|
|
26
26
|
const config = await configManager.read();
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
ui.info(`Neo CLI is already initialized (v${config.installation.version})`);
|
|
28
|
+
ui.info(`Config location: ${configManager.getConfigFile()}`);
|
|
29
29
|
const { action } = await inquirer.prompt([
|
|
30
30
|
{
|
|
31
31
|
type: 'list',
|
|
@@ -39,26 +39,27 @@ export function createInitCommand() {
|
|
|
39
39
|
},
|
|
40
40
|
]);
|
|
41
41
|
if (action === 'cancel') {
|
|
42
|
-
|
|
42
|
+
ui.info('Initialization cancelled');
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
45
|
if (action === 'reset') {
|
|
46
46
|
const backup = await configManager.backup();
|
|
47
47
|
if (backup) {
|
|
48
|
-
|
|
48
|
+
ui.info(`Configuration backed up to: ${backup}`);
|
|
49
49
|
}
|
|
50
50
|
const shellBackup = await shell.backup();
|
|
51
51
|
if (shellBackup) {
|
|
52
|
-
|
|
52
|
+
ui.info(`Shell configuration backed up to: ${shellBackup}`);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
if (!options.skipInstall) {
|
|
57
|
-
const installSpinner =
|
|
57
|
+
const installSpinner = ui.spinner('Installing Neo CLI globally');
|
|
58
|
+
installSpinner.start();
|
|
58
59
|
if (!installStatus.pnpmInstalled) {
|
|
59
60
|
installSpinner.fail('pnpm is not installed');
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
ui.error('Please install pnpm first: https://pnpm.io/installation');
|
|
62
|
+
ui.info('Then run this command again');
|
|
62
63
|
return;
|
|
63
64
|
}
|
|
64
65
|
logger.debug(`pnpm version: ${installStatus.pnpmVersion}`);
|
|
@@ -67,7 +68,7 @@ export function createInitCommand() {
|
|
|
67
68
|
const updateResult = await installer.update();
|
|
68
69
|
if (!updateResult.success) {
|
|
69
70
|
installSpinner.fail('Failed to update Neo CLI');
|
|
70
|
-
|
|
71
|
+
ui.error(updateResult.error || 'Unknown error occurred');
|
|
71
72
|
return;
|
|
72
73
|
}
|
|
73
74
|
installSpinner.succeed(`Neo CLI updated to v${updateResult.version}`);
|
|
@@ -76,23 +77,25 @@ export function createInitCommand() {
|
|
|
76
77
|
const installResult = await installer.install();
|
|
77
78
|
if (!installResult.success) {
|
|
78
79
|
installSpinner.fail('Failed to install Neo CLI globally');
|
|
79
|
-
|
|
80
|
+
ui.error(installResult.error || 'Unknown error occurred');
|
|
80
81
|
return;
|
|
81
82
|
}
|
|
82
83
|
installSpinner.succeed(`Neo CLI v${installResult.version} installed globally`);
|
|
83
84
|
}
|
|
84
85
|
const commandWorking = await installer.verifyGlobalCommand();
|
|
85
86
|
if (!commandWorking) {
|
|
86
|
-
|
|
87
|
+
ui.warn('Neo command may not be accessible. You might need to restart your terminal');
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
|
-
const configSpinner =
|
|
90
|
+
const configSpinner = ui.spinner('Setting up configuration');
|
|
91
|
+
configSpinner.start();
|
|
90
92
|
const newConfig = {
|
|
91
93
|
user: {},
|
|
92
94
|
preferences: {
|
|
93
95
|
aliases: {
|
|
94
96
|
n: true,
|
|
95
97
|
},
|
|
98
|
+
banner: 'full',
|
|
96
99
|
theme: 'auto',
|
|
97
100
|
},
|
|
98
101
|
shell: {
|
|
@@ -108,26 +111,34 @@ export function createInitCommand() {
|
|
|
108
111
|
};
|
|
109
112
|
await configManager.write(newConfig);
|
|
110
113
|
configSpinner.succeed('Configuration saved');
|
|
111
|
-
const completionSpinner =
|
|
114
|
+
const completionSpinner = ui.spinner('Creating completion files');
|
|
115
|
+
completionSpinner.start();
|
|
112
116
|
await CompletionGenerator.createCompletionFiles(newConfig.installation.completionsPath);
|
|
113
117
|
completionSpinner.succeed('Completion files created');
|
|
114
|
-
const shellSpinner =
|
|
118
|
+
const shellSpinner = ui.spinner('Setting up shell integration');
|
|
119
|
+
shellSpinner.start();
|
|
115
120
|
await shell.applyConfig(newConfig);
|
|
116
121
|
shellSpinner.succeed('Shell integration configured');
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
122
|
+
ui.success('Neo CLI has been successfully initialized!');
|
|
123
|
+
console.log('');
|
|
124
|
+
ui.info('What was configured:');
|
|
125
|
+
ui.list([
|
|
126
|
+
'Global installation: neo command available',
|
|
127
|
+
`Configuration: ${configManager.getConfigFile()}`,
|
|
128
|
+
'Shell alias: n → neo',
|
|
129
|
+
'Shell completions: enabled',
|
|
130
|
+
]);
|
|
131
|
+
console.log('');
|
|
132
|
+
ui.info('Next steps:');
|
|
133
|
+
ui.list([
|
|
134
|
+
'Restart your terminal or run: source ~/.zshrc',
|
|
135
|
+
'Try: neo --help or n --help',
|
|
136
|
+
'Configure settings: neo config',
|
|
137
|
+
]);
|
|
127
138
|
}
|
|
128
139
|
catch (error) {
|
|
129
140
|
spinner.fail('Initialization failed');
|
|
130
|
-
|
|
141
|
+
ui.error(`Error: ${error}`);
|
|
131
142
|
throw error;
|
|
132
143
|
}
|
|
133
144
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AA6GtD,wBAAgB,mBAAmB,IAAI,OAAO,CAqI7C"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Command } from '@commander-js/extra-typings';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import ora from 'ora';
|
|
4
2
|
import { execa } from 'execa';
|
|
5
3
|
import inquirer from 'inquirer';
|
|
6
4
|
import { readFileSync } from 'fs';
|
|
7
5
|
import { fileURLToPath } from 'url';
|
|
8
6
|
import { dirname, join } from 'path';
|
|
9
7
|
import { logger } from '../../utils/logger.js';
|
|
8
|
+
import { ui } from '../../utils/ui.js';
|
|
10
9
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
10
|
const __dirname = dirname(__filename);
|
|
12
11
|
function getCurrentVersion() {
|
|
@@ -15,7 +14,7 @@ function getCurrentVersion() {
|
|
|
15
14
|
return packageJson.version;
|
|
16
15
|
}
|
|
17
16
|
catch (error) {
|
|
18
|
-
|
|
17
|
+
ui.error('Failed to read current version');
|
|
19
18
|
throw error;
|
|
20
19
|
}
|
|
21
20
|
}
|
|
@@ -29,7 +28,7 @@ async function getLatestVersion() {
|
|
|
29
28
|
return data['dist-tags'].latest;
|
|
30
29
|
}
|
|
31
30
|
catch (error) {
|
|
32
|
-
|
|
31
|
+
ui.error('Failed to fetch latest version from npm registry');
|
|
33
32
|
throw error;
|
|
34
33
|
}
|
|
35
34
|
}
|
|
@@ -89,28 +88,29 @@ export function createUpdateCommand() {
|
|
|
89
88
|
try {
|
|
90
89
|
const currentVersion = getCurrentVersion();
|
|
91
90
|
logger.debug(`Current version: ${currentVersion}`);
|
|
92
|
-
const spinner =
|
|
91
|
+
const spinner = ui.spinner('Checking for updates');
|
|
92
|
+
spinner.start();
|
|
93
93
|
let latestVersion;
|
|
94
94
|
try {
|
|
95
95
|
latestVersion = await getLatestVersion();
|
|
96
96
|
}
|
|
97
97
|
catch {
|
|
98
|
-
spinner.fail(
|
|
99
|
-
|
|
98
|
+
spinner.fail('Failed to check for updates');
|
|
99
|
+
ui.error('Could not connect to npm registry. Please check your internet connection');
|
|
100
100
|
process.exit(1);
|
|
101
101
|
}
|
|
102
102
|
logger.debug(`Latest version: ${latestVersion}`);
|
|
103
103
|
const comparison = compareVersions(latestVersion, currentVersion);
|
|
104
104
|
if (comparison === 0) {
|
|
105
|
-
spinner.succeed(
|
|
106
|
-
|
|
105
|
+
spinner.succeed('You are already on the latest version!');
|
|
106
|
+
ui.info(`Current version: ${currentVersion}`);
|
|
107
107
|
if (!options.force) {
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
ui.warn('--force flag detected, proceeding with reinstall');
|
|
111
111
|
}
|
|
112
112
|
else if (comparison < 0) {
|
|
113
|
-
spinner.warn(
|
|
113
|
+
spinner.warn(`You are on a newer version (${currentVersion}) than the latest stable (${latestVersion})`);
|
|
114
114
|
if (!options.force && !options.checkOnly) {
|
|
115
115
|
const { shouldDowngrade } = await inquirer.prompt([
|
|
116
116
|
{
|
|
@@ -121,7 +121,7 @@ export function createUpdateCommand() {
|
|
|
121
121
|
},
|
|
122
122
|
]);
|
|
123
123
|
if (!shouldDowngrade) {
|
|
124
|
-
|
|
124
|
+
ui.muted('Update cancelled');
|
|
125
125
|
return;
|
|
126
126
|
}
|
|
127
127
|
}
|
|
@@ -130,13 +130,15 @@ export function createUpdateCommand() {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
else {
|
|
133
|
-
spinner.succeed(
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
spinner.succeed('Update available!');
|
|
134
|
+
ui.keyValue([
|
|
135
|
+
['Current version', currentVersion],
|
|
136
|
+
['Latest version', latestVersion],
|
|
137
|
+
]);
|
|
136
138
|
}
|
|
137
139
|
if (options.checkOnly) {
|
|
138
140
|
if (comparison > 0) {
|
|
139
|
-
|
|
141
|
+
ui.muted('Run neo update to install the latest version');
|
|
140
142
|
}
|
|
141
143
|
return;
|
|
142
144
|
}
|
|
@@ -150,36 +152,37 @@ export function createUpdateCommand() {
|
|
|
150
152
|
},
|
|
151
153
|
]);
|
|
152
154
|
if (!confirm) {
|
|
153
|
-
|
|
155
|
+
ui.muted('Update cancelled');
|
|
154
156
|
return;
|
|
155
157
|
}
|
|
156
158
|
}
|
|
157
|
-
const updateSpinner =
|
|
159
|
+
const updateSpinner = ui.spinner('Detecting package manager');
|
|
160
|
+
updateSpinner.start();
|
|
158
161
|
const packageManager = await detectPackageManager();
|
|
159
|
-
updateSpinner.text = `Updating via ${
|
|
162
|
+
updateSpinner.text = `Updating via ${packageManager}...`;
|
|
160
163
|
logger.debug(`Using package manager: ${packageManager}`);
|
|
161
164
|
try {
|
|
162
165
|
await executeUpdate(packageManager, options.force || false);
|
|
163
|
-
updateSpinner.succeed(
|
|
164
|
-
|
|
166
|
+
updateSpinner.succeed(`Successfully updated to version ${latestVersion}!`);
|
|
167
|
+
ui.muted('Run neo --version to verify the installation');
|
|
165
168
|
}
|
|
166
169
|
catch (error) {
|
|
167
|
-
updateSpinner.fail(
|
|
170
|
+
updateSpinner.fail('Update failed');
|
|
168
171
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
169
172
|
if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
|
|
170
|
-
|
|
171
|
-
|
|
173
|
+
ui.error('Permission denied. Try running with sudo:');
|
|
174
|
+
ui.muted(` sudo ${packageManager} ${packageManager === 'npm' ? 'install' : 'add'} -g @radkode/neo@latest`);
|
|
172
175
|
}
|
|
173
176
|
else {
|
|
174
|
-
|
|
175
|
-
|
|
177
|
+
ui.error(`Update failed: ${errorMessage}`);
|
|
178
|
+
ui.muted(`Try updating manually: ${packageManager} ${packageManager === 'npm' ? 'install' : 'add'} -g @radkode/neo@latest`);
|
|
176
179
|
}
|
|
177
180
|
process.exit(1);
|
|
178
181
|
}
|
|
179
182
|
}
|
|
180
183
|
catch (error) {
|
|
181
184
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
182
|
-
|
|
185
|
+
ui.error(`Unexpected error: ${errorMessage}`);
|
|
183
186
|
process.exit(1);
|
|
184
187
|
}
|
|
185
188
|
});
|