@radkode/neo 0.6.1 → 0.7.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/dist/commands/alias/setup/index.d.ts.map +1 -1
- package/dist/commands/alias/setup/index.js +13 -1
- package/dist/commands/alias/setup/index.js.map +1 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +33 -32
- 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 +161 -12
- 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 +23 -11
- package/dist/commands/git/push/index.js.map +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +14 -2
- 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 +18 -6
- package/dist/commands/update/index.js.map +1 -1
- package/dist/types/schemas.d.ts +86 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +56 -0
- package/dist/types/schemas.js.map +1 -0
- package/dist/utils/validation.d.ts +16 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +65 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAgDtD,wBAAgB,kBAAkB,IAAI,OAAO,CAqF5C"}
|
|
@@ -2,6 +2,8 @@ import { Command } from '@commander-js/extra-typings';
|
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import { ZshIntegration } from '../../../utils/shell.js';
|
|
4
4
|
import { ui } from '../../../utils/ui.js';
|
|
5
|
+
import { validate, isValidationError } from '../../../utils/validation.js';
|
|
6
|
+
import { aliasSetupOptionsSchema } from '../../../types/schemas.js';
|
|
5
7
|
const ALIASES = Object.freeze({
|
|
6
8
|
gp: 'neo git pull',
|
|
7
9
|
gpu: 'neo git push',
|
|
@@ -24,6 +26,16 @@ export function createSetupCommand() {
|
|
|
24
26
|
.description('Setup ZSH aliases for Neo CLI (gp, gpu). Backs up ~/.zshrc before modifying.')
|
|
25
27
|
.option('-f, --force', 'skip confirmation and overwrite conflicting aliases')
|
|
26
28
|
.action(async (options) => {
|
|
29
|
+
let validatedOptions;
|
|
30
|
+
try {
|
|
31
|
+
validatedOptions = validate(aliasSetupOptionsSchema, options, 'alias setup options');
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (isValidationError(error)) {
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
27
39
|
const shell = new ZshIntegration();
|
|
28
40
|
try {
|
|
29
41
|
const rcFile = shell.getRcFile();
|
|
@@ -37,7 +49,7 @@ export function createSetupCommand() {
|
|
|
37
49
|
}
|
|
38
50
|
})();
|
|
39
51
|
const conflicts = findConflictingAliases(rcContent, ALIASES);
|
|
40
|
-
if (conflicts.length > 0 && !
|
|
52
|
+
if (conflicts.length > 0 && !validatedOptions.force) {
|
|
41
53
|
ui.warn('The following aliases already exist and will be overwritten:');
|
|
42
54
|
for (const c of conflicts) {
|
|
43
55
|
ui.log(` ${c.alias}: currently ${c.current} -> new ${ALIASES[c.alias]}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/alias/setup/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Command } from '@commander-js/extra-typings';
|
|
2
2
|
import { ui } from '../../utils/ui.js';
|
|
3
3
|
import { configManager } from '../../utils/config.js';
|
|
4
|
+
import { validateArgument, validateConfigValue, isValidationError } from '../../utils/validation.js';
|
|
5
|
+
import { configKeySchema } from '../../types/schemas.js';
|
|
4
6
|
export function createConfigCommand() {
|
|
5
7
|
const command = new Command('config');
|
|
6
8
|
command
|
|
@@ -15,7 +17,17 @@ function createConfigGetCommand() {
|
|
|
15
17
|
command
|
|
16
18
|
.description('Get a configuration value')
|
|
17
19
|
.argument('<key>', 'configuration key (supports dot notation, e.g., preferences.banner)')
|
|
18
|
-
.action(async (
|
|
20
|
+
.action(async (rawKey) => {
|
|
21
|
+
let key;
|
|
22
|
+
try {
|
|
23
|
+
key = validateArgument(configKeySchema, rawKey, 'configuration key');
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (isValidationError(error)) {
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
19
31
|
try {
|
|
20
32
|
const config = await configManager.read();
|
|
21
33
|
const value = getNestedValue(config, key);
|
|
@@ -44,31 +56,30 @@ function createConfigSetCommand() {
|
|
|
44
56
|
.description('Set a configuration value')
|
|
45
57
|
.argument('<key>', 'configuration key (supports dot notation, e.g., preferences.banner)')
|
|
46
58
|
.argument('<value>', 'configuration value')
|
|
47
|
-
.action(async (
|
|
59
|
+
.action(async (rawKey, rawValue) => {
|
|
60
|
+
let key;
|
|
48
61
|
try {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (key === 'preferences.theme') {
|
|
57
|
-
const validThemeValues = ['dark', 'light', 'auto'];
|
|
58
|
-
if (!validThemeValues.includes(value)) {
|
|
59
|
-
ui.error(`Invalid theme value: ${value}. Must be one of: ${validThemeValues.join(', ')}`);
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
+
key = validateArgument(configKeySchema, rawKey, 'configuration key');
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (isValidationError(error)) {
|
|
66
|
+
process.exit(1);
|
|
62
67
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
let value;
|
|
71
|
+
try {
|
|
72
|
+
value = await validateConfigValue(key, rawValue);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (isValidationError(error)) {
|
|
76
|
+
process.exit(1);
|
|
69
77
|
}
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
70
81
|
const config = await configManager.read();
|
|
71
|
-
const updated = setNestedValue(config, key,
|
|
82
|
+
const updated = setNestedValue(config, key, value);
|
|
72
83
|
await configManager.write(updated);
|
|
73
84
|
ui.success(`Configuration updated: ${key} = ${value}`);
|
|
74
85
|
}
|
|
@@ -102,16 +113,6 @@ function setNestedValue(obj, path, value) {
|
|
|
102
113
|
current[lastKey] = value;
|
|
103
114
|
return result;
|
|
104
115
|
}
|
|
105
|
-
function parseValue(value) {
|
|
106
|
-
if (value === 'true')
|
|
107
|
-
return true;
|
|
108
|
-
if (value === 'false')
|
|
109
|
-
return false;
|
|
110
|
-
const num = Number(value);
|
|
111
|
-
if (!isNaN(num) && value !== '')
|
|
112
|
-
return num;
|
|
113
|
-
return value;
|
|
114
|
-
}
|
|
115
116
|
function createConfigListCommand() {
|
|
116
117
|
const command = new Command('list');
|
|
117
118
|
command.description('List all configuration values').action(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO;SACJ,WAAW,CAAC,sBAAsB,CAAC;SACnC,UAAU,CAAC,sBAAsB,EAAE,CAAC;SACpC,UAAU,CAAC,sBAAsB,EAAE,CAAC;SACpC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAOD,SAAS,sBAAsB;IAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO;SACJ,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,OAAO,EAAE,qEAAqE,CAAC;SACxF,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;QAE/B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAE1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,EAAE,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAOD,SAAS,sBAAsB;IAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO;SACJ,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,OAAO,EAAE,qEAAqE,CAAC;SACxF,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,QAAgB,EAAE,EAAE;QAEjD,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,KAAgC,CAAC;QACrC,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,EAAE,CAAC,OAAO,CAAC,0BAA0B,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAKD,SAAS,cAAc,CAAC,GAAwC,EAAE,IAAY;IAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAC3B,CAAC,OAAgB,EAAE,GAAW,EAAE,EAAE;QAChC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YAC7D,OAAQ,OAAmC,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EACD,GAA8B,CAC/B,CAAC;AACJ,CAAC;AAKD,SAAS,cAAc,CAAC,GAAc,EAAE,IAAY,EAAE,KAAc;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAc,CAAC;IAC5D,IAAI,OAAO,GAA4B,MAA4C,CAAC;IAEpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACvC,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,SAAS,uBAAuB;IAC9B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACrE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;YAE1C,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1C,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnB,MAAM,SAAS,GAA4B,EAAE,CAAC;gBAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI;oBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK;oBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC1B,MAAM,SAAS,GAA4B;gBACzC,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBACrC,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;aACpC,CAAC;YACF,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC9B,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACrF,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpB,EAAE,CAAC,QAAQ,CAAC;gBACV,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3B,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;aAChC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC3B,MAAM,YAAY,GAA4B;gBAC5C,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC;gBACxC,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC;aACjD,CAAC;YACF,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;gBACxC,YAAY,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9E,CAAC;YACD,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,EAAE,CAAC,OAAO,EAAE,CAAC;YACb,EAAE,CAAC,KAAK,CAAC,gBAAgB,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAC1D,EAAE,CAAC,KAAK,CACN,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/git/pull/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/git/pull/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAiBtD,wBAAgB,iBAAiB,IAAI,OAAO,CA6J3C"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { Command } from '@commander-js/extra-typings';
|
|
2
2
|
import { execa } from 'execa';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
3
4
|
import { logger } from '../../../utils/logger.js';
|
|
4
5
|
import { ui } from '../../../utils/ui.js';
|
|
6
|
+
import { validate, isValidationError } from '../../../utils/validation.js';
|
|
7
|
+
import { gitPullOptionsSchema, deletedBranchActionSchema } from '../../../types/schemas.js';
|
|
5
8
|
export function createPullCommand() {
|
|
6
9
|
const command = new Command('pull');
|
|
7
10
|
command
|
|
@@ -9,6 +12,16 @@ export function createPullCommand() {
|
|
|
9
12
|
.option('--rebase', 'force rebase strategy')
|
|
10
13
|
.option('--no-rebase', 'prevent automatic rebase fallback')
|
|
11
14
|
.action(async (options) => {
|
|
15
|
+
let validatedOptions;
|
|
16
|
+
try {
|
|
17
|
+
validatedOptions = validate(gitPullOptionsSchema, options, 'git pull options');
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (isValidationError(error)) {
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
12
25
|
const spinner = ui.spinner('Pulling from remote');
|
|
13
26
|
let branchName = '';
|
|
14
27
|
try {
|
|
@@ -27,7 +40,7 @@ export function createPullCommand() {
|
|
|
27
40
|
process.exit(1);
|
|
28
41
|
}
|
|
29
42
|
spinner.start();
|
|
30
|
-
if (
|
|
43
|
+
if (validatedOptions.rebase) {
|
|
31
44
|
logger.debug('Using rebase strategy (user specified)');
|
|
32
45
|
spinner.text = 'Pulling with rebase...';
|
|
33
46
|
const { stdout } = await execa('git', ['pull', '--rebase'], {
|
|
@@ -56,7 +69,7 @@ export function createPullCommand() {
|
|
|
56
69
|
if ((errorMessage.includes('non-fast-forward') ||
|
|
57
70
|
errorMessage.includes('divergent branches') ||
|
|
58
71
|
errorMessage.includes('cannot fast-forward')) &&
|
|
59
|
-
!
|
|
72
|
+
!validatedOptions.noRebase) {
|
|
60
73
|
logger.debug('Normal pull failed, attempting rebase...');
|
|
61
74
|
spinner.text = 'Cannot fast-forward, retrying with rebase...';
|
|
62
75
|
const { stdout } = await execa('git', ['pull', '--rebase'], {
|
|
@@ -85,16 +98,8 @@ export function createPullCommand() {
|
|
|
85
98
|
}
|
|
86
99
|
if (errorMessage.includes('no such ref was fetched') ||
|
|
87
100
|
errorMessage.includes('but no such ref was fetched')) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
console.log('');
|
|
91
|
-
ui.info('To fix this, you can:');
|
|
92
|
-
ui.list([
|
|
93
|
-
`Switch to a different branch: git checkout main`,
|
|
94
|
-
`Set a new upstream: git branch --set-upstream-to=origin/${branchName}`,
|
|
95
|
-
`Delete this local branch if no longer needed: git branch -d ${branchName}`,
|
|
96
|
-
]);
|
|
97
|
-
process.exit(1);
|
|
101
|
+
await handleDeletedRemoteBranch(branchName);
|
|
102
|
+
return;
|
|
98
103
|
}
|
|
99
104
|
if (errorMessage.includes('conflict')) {
|
|
100
105
|
ui.error('Merge conflicts detected!');
|
|
@@ -126,4 +131,148 @@ export function createPullCommand() {
|
|
|
126
131
|
});
|
|
127
132
|
return command;
|
|
128
133
|
}
|
|
134
|
+
async function handleDeletedRemoteBranch(branchName) {
|
|
135
|
+
ui.error('Remote branch no longer exists!');
|
|
136
|
+
ui.warn(`Your local branch "${branchName}" is tracking a remote branch that has been deleted`);
|
|
137
|
+
console.log('');
|
|
138
|
+
const { action } = await inquirer.prompt([
|
|
139
|
+
{
|
|
140
|
+
type: 'list',
|
|
141
|
+
name: 'action',
|
|
142
|
+
message: 'How would you like to resolve this?',
|
|
143
|
+
default: 'switch_main_delete',
|
|
144
|
+
choices: [
|
|
145
|
+
{
|
|
146
|
+
name: 'Switch to main and delete this branch (recommended)',
|
|
147
|
+
value: 'switch_main_delete',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: 'Switch to main and keep this branch',
|
|
151
|
+
value: 'switch_main_keep',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: `Set a new upstream for "${branchName}"`,
|
|
155
|
+
value: 'set_upstream',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'Cancel (no changes)',
|
|
159
|
+
value: 'cancel',
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
]);
|
|
164
|
+
const validatedAction = deletedBranchActionSchema.parse(action);
|
|
165
|
+
switch (validatedAction) {
|
|
166
|
+
case 'switch_main_delete':
|
|
167
|
+
await switchToMainAndDelete(branchName);
|
|
168
|
+
break;
|
|
169
|
+
case 'switch_main_keep':
|
|
170
|
+
await switchToMain(branchName);
|
|
171
|
+
break;
|
|
172
|
+
case 'set_upstream':
|
|
173
|
+
await setNewUpstream(branchName);
|
|
174
|
+
break;
|
|
175
|
+
case 'cancel':
|
|
176
|
+
ui.muted('Operation cancelled. No changes were made.');
|
|
177
|
+
process.exit(0);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async function switchToMainAndDelete(branchName) {
|
|
181
|
+
try {
|
|
182
|
+
const mainBranch = await findDefaultBranch();
|
|
183
|
+
await execa('git', ['checkout', mainBranch]);
|
|
184
|
+
ui.success(`Switched to ${mainBranch} branch`);
|
|
185
|
+
try {
|
|
186
|
+
await execa('git', ['branch', '-d', branchName]);
|
|
187
|
+
ui.success(`Deleted branch "${branchName}"`);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
191
|
+
if (errorMessage.includes('not fully merged')) {
|
|
192
|
+
ui.warn(`Branch "${branchName}" has unmerged changes`);
|
|
193
|
+
const { forceDelete } = await inquirer.prompt([
|
|
194
|
+
{
|
|
195
|
+
type: 'confirm',
|
|
196
|
+
name: 'forceDelete',
|
|
197
|
+
message: 'Force delete anyway? (This will lose any uncommitted changes)',
|
|
198
|
+
default: false,
|
|
199
|
+
},
|
|
200
|
+
]);
|
|
201
|
+
if (forceDelete) {
|
|
202
|
+
await execa('git', ['branch', '-D', branchName]);
|
|
203
|
+
ui.success(`Force deleted branch "${branchName}"`);
|
|
204
|
+
ui.warn('Any uncommitted changes in that branch have been lost');
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
ui.info(`Branch "${branchName}" was preserved`);
|
|
208
|
+
ui.muted(`You can delete it later with: git branch -D ${branchName}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
throw error;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
ui.error('Failed to switch branches or delete branch');
|
|
218
|
+
ui.muted(error instanceof Error ? error.message : String(error));
|
|
219
|
+
process.exit(1);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async function switchToMain(branchName) {
|
|
223
|
+
try {
|
|
224
|
+
const mainBranch = await findDefaultBranch();
|
|
225
|
+
await execa('git', ['checkout', mainBranch]);
|
|
226
|
+
ui.success(`Switched to ${mainBranch} branch`);
|
|
227
|
+
ui.info(`Branch "${branchName}" was preserved`);
|
|
228
|
+
ui.muted(`You can switch back with: git checkout ${branchName}`);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
ui.error('Failed to switch to main branch');
|
|
232
|
+
ui.muted(error instanceof Error ? error.message : String(error));
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async function setNewUpstream(branchName) {
|
|
237
|
+
try {
|
|
238
|
+
await execa('git', ['branch', '--set-upstream-to', `origin/${branchName}`, branchName]);
|
|
239
|
+
ui.success(`Set upstream for "${branchName}" to origin/${branchName}`);
|
|
240
|
+
ui.info('You can now try pulling again');
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
244
|
+
if (errorMessage.includes('does not exist')) {
|
|
245
|
+
ui.error(`Remote branch origin/${branchName} does not exist`);
|
|
246
|
+
ui.warn('You may need to push your branch first:');
|
|
247
|
+
ui.muted(` git push -u origin ${branchName}`);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
ui.error('Failed to set upstream branch');
|
|
251
|
+
ui.muted(errorMessage);
|
|
252
|
+
}
|
|
253
|
+
process.exit(1);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async function findDefaultBranch() {
|
|
257
|
+
try {
|
|
258
|
+
await execa('git', ['show-ref', '--verify', '--quiet', 'refs/heads/main']);
|
|
259
|
+
return 'main';
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
try {
|
|
263
|
+
await execa('git', ['show-ref', '--verify', '--quiet', 'refs/heads/master']);
|
|
264
|
+
return 'master';
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
try {
|
|
268
|
+
const { stdout } = await execa('git', ['symbolic-ref', 'refs/remotes/origin/HEAD']);
|
|
269
|
+
return stdout.replace('refs/remotes/origin/', '').trim();
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
ui.warn('Could not determine default branch, using "main"');
|
|
273
|
+
return 'main';
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
129
278
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,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;AAStD,wBAAgB,iBAAiB,IAAI,OAAO,CAgK3C"}
|
|
@@ -3,6 +3,8 @@ import { execa } from 'execa';
|
|
|
3
3
|
import inquirer from 'inquirer';
|
|
4
4
|
import { logger } from '../../../utils/logger.js';
|
|
5
5
|
import { ui } from '../../../utils/ui.js';
|
|
6
|
+
import { validate, isValidationError } from '../../../utils/validation.js';
|
|
7
|
+
import { gitPushOptionsSchema } from '../../../types/schemas.js';
|
|
6
8
|
export function createPushCommand() {
|
|
7
9
|
const command = new Command('push');
|
|
8
10
|
command
|
|
@@ -12,6 +14,16 @@ export function createPushCommand() {
|
|
|
12
14
|
.option('--dry-run', 'show what would be pushed without actually pushing')
|
|
13
15
|
.option('--tags', 'push tags along with commits')
|
|
14
16
|
.action(async (options) => {
|
|
17
|
+
let validatedOptions;
|
|
18
|
+
try {
|
|
19
|
+
validatedOptions = validate(gitPushOptionsSchema, options, 'git push options');
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (isValidationError(error)) {
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
15
27
|
let branchName = '';
|
|
16
28
|
const spinner = ui.spinner('Pushing to remote');
|
|
17
29
|
try {
|
|
@@ -42,11 +54,11 @@ export function createPushCommand() {
|
|
|
42
54
|
ui.step('Proceeding with push to main branch');
|
|
43
55
|
}
|
|
44
56
|
spinner.start();
|
|
45
|
-
logger.debug(`Force push: ${
|
|
46
|
-
logger.debug(`Set upstream: ${
|
|
47
|
-
logger.debug(`Dry run: ${
|
|
48
|
-
logger.debug(`Push tags: ${
|
|
49
|
-
if (
|
|
57
|
+
logger.debug(`Force push: ${validatedOptions.force || false}`);
|
|
58
|
+
logger.debug(`Set upstream: ${validatedOptions.setUpstream || 'none'}`);
|
|
59
|
+
logger.debug(`Dry run: ${validatedOptions.dryRun || false}`);
|
|
60
|
+
logger.debug(`Push tags: ${validatedOptions.tags || false}`);
|
|
61
|
+
if (validatedOptions.dryRun) {
|
|
50
62
|
spinner.stop();
|
|
51
63
|
ui.warn('Dry run mode - no changes will be pushed');
|
|
52
64
|
ui.info(`Would push from branch: ${branchName}`);
|
|
@@ -70,14 +82,14 @@ export function createPushCommand() {
|
|
|
70
82
|
return;
|
|
71
83
|
}
|
|
72
84
|
const pushArgs = ['push'];
|
|
73
|
-
if (
|
|
85
|
+
if (validatedOptions.force) {
|
|
74
86
|
pushArgs.push('--force');
|
|
75
87
|
}
|
|
76
|
-
if (
|
|
88
|
+
if (validatedOptions.tags) {
|
|
77
89
|
pushArgs.push('--tags');
|
|
78
90
|
}
|
|
79
|
-
if (
|
|
80
|
-
pushArgs.push('-u', 'origin',
|
|
91
|
+
if (validatedOptions.setUpstream) {
|
|
92
|
+
pushArgs.push('-u', 'origin', validatedOptions.setUpstream);
|
|
81
93
|
}
|
|
82
94
|
else {
|
|
83
95
|
pushArgs.push('origin', branchName);
|
|
@@ -91,8 +103,8 @@ export function createPushCommand() {
|
|
|
91
103
|
if (pushResult.stdout) {
|
|
92
104
|
ui.muted(pushResult.stdout);
|
|
93
105
|
}
|
|
94
|
-
if (
|
|
95
|
-
ui.info(`Set upstream branch: ${
|
|
106
|
+
if (validatedOptions.setUpstream) {
|
|
107
|
+
ui.info(`Set upstream branch: ${validatedOptions.setUpstream}`);
|
|
96
108
|
}
|
|
97
109
|
}
|
|
98
110
|
catch (error) {
|
|
@@ -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,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/git/push/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAatD,wBAAgB,iBAAiB,IAAI,OAAO,CA6K3C"}
|
|
@@ -2,6 +2,8 @@ import { Command } from '@commander-js/extra-typings';
|
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
3
|
import { logger } from '../../utils/logger.js';
|
|
4
4
|
import { ui } from '../../utils/ui.js';
|
|
5
|
+
import { validate, isValidationError } from '../../utils/validation.js';
|
|
6
|
+
import { initOptionsSchema } from '../../types/schemas.js';
|
|
5
7
|
import { configManager } from '../../utils/config.js';
|
|
6
8
|
import { GlobalInstaller } from '../../utils/installer.js';
|
|
7
9
|
import { ZshIntegration } from '../../utils/shell.js';
|
|
@@ -14,6 +16,16 @@ export function createInitCommand() {
|
|
|
14
16
|
.option('--force', 'force reconfiguration if already initialized')
|
|
15
17
|
.option('--skip-install', 'skip global installation (configuration only)')
|
|
16
18
|
.action(async (options) => {
|
|
19
|
+
let validatedOptions;
|
|
20
|
+
try {
|
|
21
|
+
validatedOptions = validate(initOptionsSchema, options, 'init options');
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (isValidationError(error)) {
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
17
29
|
const spinner = ui.spinner('Checking current setup');
|
|
18
30
|
spinner.start();
|
|
19
31
|
try {
|
|
@@ -22,7 +34,7 @@ export function createInitCommand() {
|
|
|
22
34
|
const isInitialized = await configManager.isInitialized();
|
|
23
35
|
const installStatus = await installer.getStatus();
|
|
24
36
|
spinner.stop();
|
|
25
|
-
if (isInitialized && !
|
|
37
|
+
if (isInitialized && !validatedOptions.force) {
|
|
26
38
|
const config = await configManager.read();
|
|
27
39
|
ui.info(`Neo CLI is already initialized (v${config.installation.version})`);
|
|
28
40
|
ui.info(`Config location: ${configManager.getConfigFile()}`);
|
|
@@ -53,7 +65,7 @@ export function createInitCommand() {
|
|
|
53
65
|
}
|
|
54
66
|
}
|
|
55
67
|
}
|
|
56
|
-
if (!
|
|
68
|
+
if (!validatedOptions.skipInstall) {
|
|
57
69
|
const installSpinner = ui.spinner('Installing Neo CLI globally');
|
|
58
70
|
installSpinner.start();
|
|
59
71
|
if (!installStatus.pnpmInstalled) {
|
|
@@ -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,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;
|
|
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;AAgHtD,wBAAgB,mBAAmB,IAAI,OAAO,CA+I7C"}
|
|
@@ -6,6 +6,8 @@ import { fileURLToPath } from 'url';
|
|
|
6
6
|
import { dirname, join } from 'path';
|
|
7
7
|
import { logger } from '../../utils/logger.js';
|
|
8
8
|
import { ui } from '../../utils/ui.js';
|
|
9
|
+
import { validate, isValidationError } from '../../utils/validation.js';
|
|
10
|
+
import { updateOptionsSchema } from '../../types/schemas.js';
|
|
9
11
|
const __filename = fileURLToPath(import.meta.url);
|
|
10
12
|
const __dirname = dirname(__filename);
|
|
11
13
|
function getCurrentVersion() {
|
|
@@ -85,6 +87,16 @@ export function createUpdateCommand() {
|
|
|
85
87
|
.option('--check-only', 'only check for updates without installing')
|
|
86
88
|
.option('--force', 'force update even if already on latest version')
|
|
87
89
|
.action(async (options) => {
|
|
90
|
+
let validatedOptions;
|
|
91
|
+
try {
|
|
92
|
+
validatedOptions = validate(updateOptionsSchema, options, 'update options');
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (isValidationError(error)) {
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
88
100
|
try {
|
|
89
101
|
const currentVersion = getCurrentVersion();
|
|
90
102
|
logger.debug(`Current version: ${currentVersion}`);
|
|
@@ -104,14 +116,14 @@ export function createUpdateCommand() {
|
|
|
104
116
|
if (comparison === 0) {
|
|
105
117
|
spinner.succeed('You are already on the latest version!');
|
|
106
118
|
ui.info(`Current version: ${currentVersion}`);
|
|
107
|
-
if (!
|
|
119
|
+
if (!validatedOptions.force) {
|
|
108
120
|
return;
|
|
109
121
|
}
|
|
110
122
|
ui.warn('--force flag detected, proceeding with reinstall');
|
|
111
123
|
}
|
|
112
124
|
else if (comparison < 0) {
|
|
113
125
|
spinner.warn(`You are on a newer version (${currentVersion}) than the latest stable (${latestVersion})`);
|
|
114
|
-
if (!
|
|
126
|
+
if (!validatedOptions.force && !validatedOptions.checkOnly) {
|
|
115
127
|
const { shouldDowngrade } = await inquirer.prompt([
|
|
116
128
|
{
|
|
117
129
|
type: 'confirm',
|
|
@@ -125,7 +137,7 @@ export function createUpdateCommand() {
|
|
|
125
137
|
return;
|
|
126
138
|
}
|
|
127
139
|
}
|
|
128
|
-
else if (!
|
|
140
|
+
else if (!validatedOptions.force) {
|
|
129
141
|
return;
|
|
130
142
|
}
|
|
131
143
|
}
|
|
@@ -136,13 +148,13 @@ export function createUpdateCommand() {
|
|
|
136
148
|
['Latest version', latestVersion],
|
|
137
149
|
]);
|
|
138
150
|
}
|
|
139
|
-
if (
|
|
151
|
+
if (validatedOptions.checkOnly) {
|
|
140
152
|
if (comparison > 0) {
|
|
141
153
|
ui.muted('Run neo update to install the latest version');
|
|
142
154
|
}
|
|
143
155
|
return;
|
|
144
156
|
}
|
|
145
|
-
if (!
|
|
157
|
+
if (!validatedOptions.force && comparison !== 0) {
|
|
146
158
|
const { confirm } = await inquirer.prompt([
|
|
147
159
|
{
|
|
148
160
|
type: 'confirm',
|
|
@@ -162,7 +174,7 @@ export function createUpdateCommand() {
|
|
|
162
174
|
updateSpinner.text = `Updating via ${packageManager}...`;
|
|
163
175
|
logger.debug(`Using package manager: ${packageManager}`);
|
|
164
176
|
try {
|
|
165
|
-
await executeUpdate(packageManager,
|
|
177
|
+
await executeUpdate(packageManager, validatedOptions.force || false);
|
|
166
178
|
updateSpinner.succeed(`Successfully updated to version ${latestVersion}!`);
|
|
167
179
|
ui.muted('Run neo --version to verify the installation');
|
|
168
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const baseOptionsSchema: z.ZodObject<{
|
|
3
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
4
|
+
config: z.ZodOptional<z.ZodString>;
|
|
5
|
+
color: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
banner: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export declare const initOptionsSchema: z.ZodObject<{
|
|
9
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
+
config: z.ZodOptional<z.ZodString>;
|
|
11
|
+
color: z.ZodOptional<z.ZodBoolean>;
|
|
12
|
+
banner: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
+
force: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
skipInstall: z.ZodOptional<z.ZodBoolean>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
export declare const gitPushOptionsSchema: z.ZodObject<{
|
|
17
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
18
|
+
config: z.ZodOptional<z.ZodString>;
|
|
19
|
+
color: z.ZodOptional<z.ZodBoolean>;
|
|
20
|
+
banner: z.ZodOptional<z.ZodBoolean>;
|
|
21
|
+
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
force: z.ZodOptional<z.ZodBoolean>;
|
|
23
|
+
setUpstream: z.ZodOptional<z.ZodString>;
|
|
24
|
+
tags: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export declare const gitPullOptionsSchema: z.ZodObject<{
|
|
27
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
config: z.ZodOptional<z.ZodString>;
|
|
29
|
+
color: z.ZodOptional<z.ZodBoolean>;
|
|
30
|
+
banner: z.ZodOptional<z.ZodBoolean>;
|
|
31
|
+
rebase: z.ZodOptional<z.ZodBoolean>;
|
|
32
|
+
noRebase: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export declare const deletedBranchActionSchema: z.ZodEnum<{
|
|
35
|
+
switch_main_delete: "switch_main_delete";
|
|
36
|
+
switch_main_keep: "switch_main_keep";
|
|
37
|
+
set_upstream: "set_upstream";
|
|
38
|
+
cancel: "cancel";
|
|
39
|
+
}>;
|
|
40
|
+
export declare const updateOptionsSchema: z.ZodObject<{
|
|
41
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
config: z.ZodOptional<z.ZodString>;
|
|
43
|
+
color: z.ZodOptional<z.ZodBoolean>;
|
|
44
|
+
banner: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
+
checkOnly: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
force: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export declare const configKeySchema: z.ZodString;
|
|
49
|
+
export declare const configValueSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
|
|
50
|
+
export declare const bannerValueSchema: z.ZodEnum<{
|
|
51
|
+
full: "full";
|
|
52
|
+
compact: "compact";
|
|
53
|
+
none: "none";
|
|
54
|
+
}>;
|
|
55
|
+
export declare const themeValueSchema: z.ZodEnum<{
|
|
56
|
+
dark: "dark";
|
|
57
|
+
light: "light";
|
|
58
|
+
auto: "auto";
|
|
59
|
+
}>;
|
|
60
|
+
export declare const shellTypeSchema: z.ZodEnum<{
|
|
61
|
+
zsh: "zsh";
|
|
62
|
+
bash: "bash";
|
|
63
|
+
fish: "fish";
|
|
64
|
+
}>;
|
|
65
|
+
export declare const aliasSetupOptionsSchema: z.ZodObject<{
|
|
66
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
config: z.ZodOptional<z.ZodString>;
|
|
68
|
+
color: z.ZodOptional<z.ZodBoolean>;
|
|
69
|
+
banner: z.ZodOptional<z.ZodBoolean>;
|
|
70
|
+
force: z.ZodOptional<z.ZodBoolean>;
|
|
71
|
+
enable: z.ZodOptional<z.ZodBoolean>;
|
|
72
|
+
disable: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
export type BaseOptions = z.infer<typeof baseOptionsSchema>;
|
|
75
|
+
export type InitOptions = z.infer<typeof initOptionsSchema>;
|
|
76
|
+
export type GitPushOptions = z.infer<typeof gitPushOptionsSchema>;
|
|
77
|
+
export type GitPullOptions = z.infer<typeof gitPullOptionsSchema>;
|
|
78
|
+
export type UpdateOptions = z.infer<typeof updateOptionsSchema>;
|
|
79
|
+
export type ConfigKey = z.infer<typeof configKeySchema>;
|
|
80
|
+
export type ConfigValue = z.infer<typeof configValueSchema>;
|
|
81
|
+
export type BannerValue = z.infer<typeof bannerValueSchema>;
|
|
82
|
+
export type ThemeValue = z.infer<typeof themeValueSchema>;
|
|
83
|
+
export type ShellType = z.infer<typeof shellTypeSchema>;
|
|
84
|
+
export type AliasSetupOptions = z.infer<typeof aliasSetupOptionsSchema>;
|
|
85
|
+
export type DeletedBranchAction = z.infer<typeof deletedBranchActionSchema>;
|
|
86
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAKH,eAAO,MAAM,iBAAiB;;;;;;;iBAG5B,CAAC;AAKH,eAAO,MAAM,oBAAoB;;;;;;;;;iBAS/B,CAAC;AAKH,eAAO,MAAM,oBAAoB;;;;;;;iBAG/B,CAAC;AAKH,eAAO,MAAM,yBAAyB;;;;;EAKrC,CAAC;AAKF,eAAO,MAAM,mBAAmB;;;;;;;iBAG9B,CAAC;AAMH,eAAO,MAAM,eAAe,aAGqC,CAAC;AAMlE,eAAO,MAAM,iBAAiB,+DAI5B,CAAC;AAKH,eAAO,MAAM,iBAAiB;;;;EAE5B,CAAC;AAKH,eAAO,MAAM,gBAAgB;;;;EAE3B,CAAC;AAKH,eAAO,MAAM,eAAe;;;;EAE1B,CAAC;AAKH,eAAO,MAAM,uBAAuB;;;;;;;;iBAIlC,CAAC;AAKH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const baseOptionsSchema = z.object({
|
|
3
|
+
verbose: z.boolean().optional(),
|
|
4
|
+
config: z.string().optional(),
|
|
5
|
+
color: z.boolean().optional(),
|
|
6
|
+
banner: z.boolean().optional(),
|
|
7
|
+
});
|
|
8
|
+
export const initOptionsSchema = baseOptionsSchema.extend({
|
|
9
|
+
force: z.boolean().optional(),
|
|
10
|
+
skipInstall: z.boolean().optional(),
|
|
11
|
+
});
|
|
12
|
+
export const gitPushOptionsSchema = baseOptionsSchema.extend({
|
|
13
|
+
dryRun: z.boolean().optional(),
|
|
14
|
+
force: z.boolean().optional(),
|
|
15
|
+
setUpstream: z
|
|
16
|
+
.string()
|
|
17
|
+
.min(1, 'Branch name cannot be empty')
|
|
18
|
+
.regex(/^[a-zA-Z0-9/._-]+$/, 'Invalid branch name format')
|
|
19
|
+
.optional(),
|
|
20
|
+
tags: z.boolean().optional(),
|
|
21
|
+
});
|
|
22
|
+
export const gitPullOptionsSchema = baseOptionsSchema.extend({
|
|
23
|
+
rebase: z.boolean().optional(),
|
|
24
|
+
noRebase: z.boolean().optional(),
|
|
25
|
+
});
|
|
26
|
+
export const deletedBranchActionSchema = z.enum(['switch_main_delete', 'switch_main_keep', 'set_upstream', 'cancel'], {
|
|
27
|
+
message: 'Must be one of: switch_main_delete, switch_main_keep, set_upstream, cancel',
|
|
28
|
+
});
|
|
29
|
+
export const updateOptionsSchema = baseOptionsSchema.extend({
|
|
30
|
+
checkOnly: z.boolean().optional(),
|
|
31
|
+
force: z.boolean().optional(),
|
|
32
|
+
});
|
|
33
|
+
export const configKeySchema = z
|
|
34
|
+
.string()
|
|
35
|
+
.min(1, 'Configuration key cannot be empty')
|
|
36
|
+
.regex(/^[a-zA-Z0-9._-]+$/, 'Invalid configuration key format');
|
|
37
|
+
export const configValueSchema = z.union([
|
|
38
|
+
z.string().min(1, 'Configuration value cannot be empty'),
|
|
39
|
+
z.number(),
|
|
40
|
+
z.boolean(),
|
|
41
|
+
]);
|
|
42
|
+
export const bannerValueSchema = z.enum(['full', 'compact', 'none'], {
|
|
43
|
+
message: 'Banner must be one of: full, compact, none',
|
|
44
|
+
});
|
|
45
|
+
export const themeValueSchema = z.enum(['dark', 'light', 'auto'], {
|
|
46
|
+
message: 'Theme must be one of: dark, light, auto',
|
|
47
|
+
});
|
|
48
|
+
export const shellTypeSchema = z.enum(['zsh', 'bash', 'fish'], {
|
|
49
|
+
message: 'Shell type must be one of: zsh, bash, fish',
|
|
50
|
+
});
|
|
51
|
+
export const aliasSetupOptionsSchema = baseOptionsSchema.extend({
|
|
52
|
+
force: z.boolean().optional(),
|
|
53
|
+
enable: z.boolean().optional(),
|
|
54
|
+
disable: z.boolean().optional(),
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare class ValidationError extends Error {
|
|
3
|
+
readonly errors: Array<{
|
|
4
|
+
path: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}>;
|
|
7
|
+
constructor(message: string, errors: Array<{
|
|
8
|
+
path: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}>);
|
|
11
|
+
}
|
|
12
|
+
export declare function validate<T extends z.ZodTypeAny>(schema: T, data: unknown, context?: string): z.infer<T>;
|
|
13
|
+
export declare function validateArgument<T extends z.ZodTypeAny>(schema: T, value: unknown, name: string): z.infer<T>;
|
|
14
|
+
export declare function validateConfigValue(key: string, value: string): Promise<string | number | boolean>;
|
|
15
|
+
export declare function isValidationError(error: unknown): error is ValidationError;
|
|
16
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;gBADhE,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAKnE;AAgBD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAC7C,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,MAAgB,GACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAyBZ;AAgBD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACrD,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GACX,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAYZ;AAgBD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CA2BpC;AAQD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ui } from './ui.js';
|
|
2
|
+
export class ValidationError extends Error {
|
|
3
|
+
errors;
|
|
4
|
+
constructor(message, errors) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.errors = errors;
|
|
7
|
+
this.name = 'ValidationError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function validate(schema, data, context = 'input') {
|
|
11
|
+
const result = schema.safeParse(data);
|
|
12
|
+
if (!result.success) {
|
|
13
|
+
const errors = result.error.issues.map((err) => ({
|
|
14
|
+
path: err.path.join('.') || 'value',
|
|
15
|
+
message: err.message,
|
|
16
|
+
}));
|
|
17
|
+
ui.error(`Invalid ${context}`);
|
|
18
|
+
console.log('');
|
|
19
|
+
for (const error of errors) {
|
|
20
|
+
if (error.path === 'value') {
|
|
21
|
+
ui.warn(`✖ ${error.message}`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
ui.warn(`✖ ${error.path}: ${error.message}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
throw new ValidationError(`Invalid ${context}`, errors);
|
|
28
|
+
}
|
|
29
|
+
return result.data;
|
|
30
|
+
}
|
|
31
|
+
export function validateArgument(schema, value, name) {
|
|
32
|
+
const result = schema.safeParse(value);
|
|
33
|
+
if (!result.success) {
|
|
34
|
+
const error = result.error.issues[0];
|
|
35
|
+
if (error) {
|
|
36
|
+
ui.error(`Invalid ${name}: ${error.message}`);
|
|
37
|
+
throw new ValidationError(`Invalid ${name}`, [{ path: name, message: error.message }]);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return result.data;
|
|
41
|
+
}
|
|
42
|
+
export async function validateConfigValue(key, value) {
|
|
43
|
+
const { bannerValueSchema, themeValueSchema, shellTypeSchema } = await import('../types/schemas.js');
|
|
44
|
+
if (key === 'preferences.banner') {
|
|
45
|
+
return validateArgument(bannerValueSchema, value, `${key} value`);
|
|
46
|
+
}
|
|
47
|
+
if (key === 'preferences.theme') {
|
|
48
|
+
return validateArgument(themeValueSchema, value, `${key} value`);
|
|
49
|
+
}
|
|
50
|
+
if (key === 'shell.type') {
|
|
51
|
+
return validateArgument(shellTypeSchema, value, `${key} value`);
|
|
52
|
+
}
|
|
53
|
+
if (value === 'true')
|
|
54
|
+
return true;
|
|
55
|
+
if (value === 'false')
|
|
56
|
+
return false;
|
|
57
|
+
const num = Number(value);
|
|
58
|
+
if (!isNaN(num) && value !== '')
|
|
59
|
+
return num;
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
export function isValidationError(error) {
|
|
63
|
+
return error instanceof ValidationError;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radkode/neo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Modern CLI toolkit with intelligent git workflows and configuration management",
|
|
5
5
|
"author": "Jacek Radko",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"execa": "^9.6.0",
|
|
42
42
|
"inquirer": "^12.9.6",
|
|
43
43
|
"ora": "^9.0.0",
|
|
44
|
-
"which": "^5.0.0"
|
|
44
|
+
"which": "^5.0.0",
|
|
45
|
+
"zod": "^4.1.12"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@changesets/changelog-github": "^0.5.1",
|