@memberjunction/cli 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/migrate/index.js +85 -47
- package/oclif.manifest.json +139 -139
- package/package.json +10 -10
|
@@ -76,32 +76,46 @@ class Migrate extends core_1.Command {
|
|
|
76
76
|
// Convert to absolute path if relative
|
|
77
77
|
return path.isAbsolute(cleanLoc) ? loc : `filesystem:${path.resolve(cleanLoc)}`;
|
|
78
78
|
});
|
|
79
|
-
// First try
|
|
80
|
-
const
|
|
79
|
+
// First try validate to catch checksum mismatches
|
|
80
|
+
const validateArgs = [
|
|
81
81
|
...baseArgs,
|
|
82
|
-
`-baselineVersion=${config.baselineVersion}`,
|
|
83
|
-
`-baselineOnMigrate=${config.baselineOnMigrate}`,
|
|
84
82
|
`-locations=${absoluteMigrationPaths.join(',')}`,
|
|
85
|
-
'
|
|
83
|
+
'validate'
|
|
86
84
|
];
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
// Check if
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
migrateOutput.toLowerCase().includes('must be the only statement');
|
|
93
|
-
if (migrateResult.status === 0 && !hasErrorsInOutput) {
|
|
94
|
-
this.logToStderr('✓ Migration executed successfully (Flyway CLI reports success)');
|
|
95
|
-
this.logToStderr(' The issue was with node-flyway response parsing only\n');
|
|
96
|
-
}
|
|
97
|
-
else if (migrateResult.status === 0 && hasErrorsInOutput) {
|
|
98
|
-
// Exit code was 0 but output contains errors - SQL script likely has error handling
|
|
99
|
-
this.logToStderr('⚠️ Migration completed but errors were detected in output:\n');
|
|
100
|
-
this.analyzeFlywayError(migrateOutput, config);
|
|
85
|
+
const validateResult = spawnSync(flywayExePath, validateArgs, { encoding: 'utf8' });
|
|
86
|
+
const validateOutput = validateResult.stderr || validateResult.stdout || '';
|
|
87
|
+
// Check if validation failed
|
|
88
|
+
if (validateResult.status !== 0 || validateOutput.toLowerCase().includes('validate failed')) {
|
|
89
|
+
this.analyzeFlywayError(validateOutput, config);
|
|
101
90
|
}
|
|
102
91
|
else {
|
|
103
|
-
//
|
|
104
|
-
|
|
92
|
+
// Validation passed, try migrate to see the actual SQL error
|
|
93
|
+
const migrateArgs = [
|
|
94
|
+
...baseArgs,
|
|
95
|
+
`-baselineVersion=${config.baselineVersion}`,
|
|
96
|
+
`-baselineOnMigrate=${config.baselineOnMigrate}`,
|
|
97
|
+
`-locations=${absoluteMigrationPaths.join(',')}`,
|
|
98
|
+
'migrate'
|
|
99
|
+
];
|
|
100
|
+
const migrateResult = spawnSync(flywayExePath, migrateArgs, { encoding: 'utf8' });
|
|
101
|
+
const migrateOutput = migrateResult.stderr || migrateResult.stdout || '';
|
|
102
|
+
// Check if output contains error messages even if exit code is 0
|
|
103
|
+
const hasErrorsInOutput = migrateOutput.toLowerCase().includes('error') ||
|
|
104
|
+
migrateOutput.toLowerCase().includes('incorrect syntax') ||
|
|
105
|
+
migrateOutput.toLowerCase().includes('must be the only statement');
|
|
106
|
+
if (migrateResult.status === 0 && !hasErrorsInOutput) {
|
|
107
|
+
this.logToStderr('✓ Migration executed successfully (Flyway CLI reports success)');
|
|
108
|
+
this.logToStderr(' The issue was with node-flyway response parsing only\n');
|
|
109
|
+
}
|
|
110
|
+
else if (migrateResult.status === 0 && hasErrorsInOutput) {
|
|
111
|
+
// Exit code was 0 but output contains errors - SQL script likely has error handling
|
|
112
|
+
this.logToStderr('⚠️ Migration completed but errors were detected in output:\n');
|
|
113
|
+
this.analyzeFlywayError(migrateOutput, config);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Migration failed with non-zero exit code
|
|
117
|
+
this.analyzeFlywayError(migrateOutput, config);
|
|
118
|
+
}
|
|
105
119
|
}
|
|
106
120
|
}
|
|
107
121
|
catch (err) {
|
|
@@ -129,6 +143,9 @@ class Migrate extends core_1.Command {
|
|
|
129
143
|
const messageLine = errorLines.find(line => line.includes('Message')) || '';
|
|
130
144
|
const errorLine = errorLines.find(line => line.includes('ERROR:') && !line.includes('Skipping filesystem location')) || '';
|
|
131
145
|
// Determine error type
|
|
146
|
+
const isValidationError = fullError.includes('validate failed') ||
|
|
147
|
+
fullError.includes('checksum mismatch') ||
|
|
148
|
+
fullError.includes('migrations have failed validation');
|
|
132
149
|
const isSqlError = fullError.includes('incorrect syntax') ||
|
|
133
150
|
fullError.includes('must be the only statement in the batch') ||
|
|
134
151
|
fullError.includes('invalid object name') ||
|
|
@@ -138,7 +155,10 @@ class Migrate extends core_1.Command {
|
|
|
138
155
|
fullError.includes('unable to obtain connection') ||
|
|
139
156
|
fullError.includes('connection') && !fullError.includes('clientconnectionid');
|
|
140
157
|
// Display error header
|
|
141
|
-
if (
|
|
158
|
+
if (isValidationError) {
|
|
159
|
+
this.logToStderr('❌ Validation Failed - Checksum Mismatch Detected\n');
|
|
160
|
+
}
|
|
161
|
+
else if (isSqlError) {
|
|
142
162
|
this.logToStderr('❌ SQL Migration Error Detected\n');
|
|
143
163
|
}
|
|
144
164
|
else if (isConnectionError) {
|
|
@@ -148,7 +168,16 @@ class Migrate extends core_1.Command {
|
|
|
148
168
|
this.logToStderr('❌ Migration Failed\n');
|
|
149
169
|
}
|
|
150
170
|
// Display error details
|
|
151
|
-
if (
|
|
171
|
+
if (isValidationError) {
|
|
172
|
+
// For validation errors, show the COMPLETE raw Flyway output
|
|
173
|
+
// This includes all checksum details which are critical for debugging
|
|
174
|
+
this.logToStderr('\n📋 Full Flyway Validation Output:');
|
|
175
|
+
this.logToStderr('='.repeat(100));
|
|
176
|
+
this.logToStderr(errorOutput);
|
|
177
|
+
this.logToStderr('='.repeat(100));
|
|
178
|
+
this.logToStderr('');
|
|
179
|
+
}
|
|
180
|
+
else if (errorCodeLine && messageLine) {
|
|
152
181
|
this.logToStderr(` ${errorCodeLine.trim()}`);
|
|
153
182
|
this.logToStderr(` ${messageLine.trim()}\n`);
|
|
154
183
|
}
|
|
@@ -157,33 +186,42 @@ class Migrate extends core_1.Command {
|
|
|
157
186
|
this.logToStderr(` Error: ${cleanError}\n`);
|
|
158
187
|
}
|
|
159
188
|
else if (errorOutput) {
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
189
|
+
if (false) { // Disabled - keeping structure for non-validation errors
|
|
190
|
+
// Show lines containing error-related keywords
|
|
191
|
+
const errorKeywords = ['error', 'incorrect', 'syntax', 'invalid', 'failed', 'must be', 'cannot', 'line'];
|
|
192
|
+
const relevantLines = errorOutput.split('\n')
|
|
193
|
+
.filter(line => {
|
|
194
|
+
const lower = line.toLowerCase();
|
|
195
|
+
return line.trim() &&
|
|
196
|
+
!lower.includes('flyway community') &&
|
|
197
|
+
!lower.includes('skipping filesystem location') &&
|
|
198
|
+
errorKeywords.some(keyword => lower.includes(keyword));
|
|
199
|
+
})
|
|
200
|
+
.slice(0, 15);
|
|
201
|
+
if (relevantLines.length > 0) {
|
|
202
|
+
this.logToStderr(' Error details from Flyway output:');
|
|
203
|
+
relevantLines.forEach(line => this.logToStderr(` ${line.trim()}`));
|
|
204
|
+
this.logToStderr('');
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// If no error keywords found, show last 20 lines of output
|
|
208
|
+
const allLines = errorOutput.split('\n').filter(l => l.trim());
|
|
209
|
+
const lastLines = allLines.slice(-20);
|
|
210
|
+
this.logToStderr(' Last 20 lines of Flyway output:');
|
|
211
|
+
lastLines.forEach(line => this.logToStderr(` ${line.trim()}`));
|
|
212
|
+
this.logToStderr('');
|
|
213
|
+
}
|
|
183
214
|
}
|
|
184
215
|
}
|
|
185
216
|
// Provide guidance
|
|
186
|
-
if (
|
|
217
|
+
if (isValidationError) {
|
|
218
|
+
this.logToStderr('💡 Migration checksum validation failed:');
|
|
219
|
+
this.logToStderr(' - A migration file has been modified after it was applied to the database');
|
|
220
|
+
this.logToStderr(' - Check the migration file(s) listed above for unexpected changes');
|
|
221
|
+
this.logToStderr(' - To repair: Use `flyway repair` if you intentionally modified the file');
|
|
222
|
+
this.logToStderr(' - Or revert the file to match the checksum in the database');
|
|
223
|
+
}
|
|
224
|
+
else if (isSqlError) {
|
|
187
225
|
this.logToStderr('💡 This is a SQL script error:');
|
|
188
226
|
this.logToStderr(' - Check the migration SQL file for syntax errors');
|
|
189
227
|
this.logToStderr(' - Look for missing GO statements before CREATE TRIGGER/PROCEDURE/FUNCTION');
|
package/oclif.manifest.json
CHANGED
|
@@ -94,24 +94,25 @@
|
|
|
94
94
|
"index.js"
|
|
95
95
|
]
|
|
96
96
|
},
|
|
97
|
-
"
|
|
97
|
+
"clean": {
|
|
98
98
|
"aliases": [],
|
|
99
99
|
"args": {},
|
|
100
|
-
"description": "
|
|
100
|
+
"description": "Resets the MemberJunction database to a pre-installation state",
|
|
101
101
|
"examples": [
|
|
102
102
|
"<%= config.bin %> <%= command.id %>\n"
|
|
103
103
|
],
|
|
104
104
|
"flags": {
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
105
|
+
"verbose": {
|
|
106
|
+
"char": "v",
|
|
107
|
+
"description": "Enable additional logging",
|
|
108
|
+
"name": "verbose",
|
|
108
109
|
"allowNo": false,
|
|
109
110
|
"type": "boolean"
|
|
110
111
|
}
|
|
111
112
|
},
|
|
112
113
|
"hasDynamicHelp": false,
|
|
113
114
|
"hiddenAliases": [],
|
|
114
|
-
"id": "
|
|
115
|
+
"id": "clean",
|
|
115
116
|
"pluginAlias": "@memberjunction/cli",
|
|
116
117
|
"pluginName": "@memberjunction/cli",
|
|
117
118
|
"pluginType": "core",
|
|
@@ -121,29 +122,28 @@
|
|
|
121
122
|
"relativePath": [
|
|
122
123
|
"dist",
|
|
123
124
|
"commands",
|
|
124
|
-
"
|
|
125
|
+
"clean",
|
|
125
126
|
"index.js"
|
|
126
127
|
]
|
|
127
128
|
},
|
|
128
|
-
"
|
|
129
|
+
"codegen": {
|
|
129
130
|
"aliases": [],
|
|
130
131
|
"args": {},
|
|
131
|
-
"description": "
|
|
132
|
+
"description": "Run CodeGen to generate code and update metadata for MemberJunction",
|
|
132
133
|
"examples": [
|
|
133
134
|
"<%= config.bin %> <%= command.id %>\n"
|
|
134
135
|
],
|
|
135
136
|
"flags": {
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"name": "verbose",
|
|
137
|
+
"skipdb": {
|
|
138
|
+
"description": "Skip database migration",
|
|
139
|
+
"name": "skipdb",
|
|
140
140
|
"allowNo": false,
|
|
141
141
|
"type": "boolean"
|
|
142
142
|
}
|
|
143
143
|
},
|
|
144
144
|
"hasDynamicHelp": false,
|
|
145
145
|
"hiddenAliases": [],
|
|
146
|
-
"id": "
|
|
146
|
+
"id": "codegen",
|
|
147
147
|
"pluginAlias": "@memberjunction/cli",
|
|
148
148
|
"pluginName": "@memberjunction/cli",
|
|
149
149
|
"pluginType": "core",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"relativePath": [
|
|
154
154
|
"dist",
|
|
155
155
|
"commands",
|
|
156
|
-
"
|
|
156
|
+
"codegen",
|
|
157
157
|
"index.js"
|
|
158
158
|
]
|
|
159
159
|
},
|
|
@@ -1892,129 +1892,6 @@
|
|
|
1892
1892
|
"validate.js"
|
|
1893
1893
|
]
|
|
1894
1894
|
},
|
|
1895
|
-
"ai:actions:list": {
|
|
1896
|
-
"aliases": [],
|
|
1897
|
-
"args": {},
|
|
1898
|
-
"description": "List available AI actions",
|
|
1899
|
-
"examples": [
|
|
1900
|
-
"<%= config.bin %> <%= command.id %>",
|
|
1901
|
-
"<%= config.bin %> <%= command.id %> --output=table",
|
|
1902
|
-
"<%= config.bin %> <%= command.id %> --output=json"
|
|
1903
|
-
],
|
|
1904
|
-
"flags": {
|
|
1905
|
-
"output": {
|
|
1906
|
-
"char": "o",
|
|
1907
|
-
"description": "Output format",
|
|
1908
|
-
"name": "output",
|
|
1909
|
-
"default": "compact",
|
|
1910
|
-
"hasDynamicHelp": false,
|
|
1911
|
-
"multiple": false,
|
|
1912
|
-
"options": [
|
|
1913
|
-
"compact",
|
|
1914
|
-
"json",
|
|
1915
|
-
"table"
|
|
1916
|
-
],
|
|
1917
|
-
"type": "option"
|
|
1918
|
-
}
|
|
1919
|
-
},
|
|
1920
|
-
"hasDynamicHelp": false,
|
|
1921
|
-
"hiddenAliases": [],
|
|
1922
|
-
"id": "ai:actions:list",
|
|
1923
|
-
"pluginAlias": "@memberjunction/cli",
|
|
1924
|
-
"pluginName": "@memberjunction/cli",
|
|
1925
|
-
"pluginType": "core",
|
|
1926
|
-
"strict": true,
|
|
1927
|
-
"enableJsonFlag": false,
|
|
1928
|
-
"isESM": false,
|
|
1929
|
-
"relativePath": [
|
|
1930
|
-
"dist",
|
|
1931
|
-
"commands",
|
|
1932
|
-
"ai",
|
|
1933
|
-
"actions",
|
|
1934
|
-
"list.js"
|
|
1935
|
-
]
|
|
1936
|
-
},
|
|
1937
|
-
"ai:actions:run": {
|
|
1938
|
-
"aliases": [],
|
|
1939
|
-
"args": {},
|
|
1940
|
-
"description": "Execute an AI action with parameters",
|
|
1941
|
-
"examples": [
|
|
1942
|
-
"<%= config.bin %> <%= command.id %> -n \"Get Weather\" --param \"Location=Boston\"",
|
|
1943
|
-
"<%= config.bin %> <%= command.id %> -n \"Get Stock Price\" --param \"Ticker=AAPL\"",
|
|
1944
|
-
"<%= config.bin %> <%= command.id %> -n \"Send Single Message\" --param \"To=user@example.com\" --param \"Subject=Test\" --param \"Body=Hello\" --param \"MessageType=Email\" --param \"Provider=SendGrid\"",
|
|
1945
|
-
"<%= config.bin %> <%= command.id %> -n \"Calculate Expression\" --param \"Expression=2+2*3\" --dry-run"
|
|
1946
|
-
],
|
|
1947
|
-
"flags": {
|
|
1948
|
-
"name": {
|
|
1949
|
-
"char": "n",
|
|
1950
|
-
"description": "Action name",
|
|
1951
|
-
"name": "name",
|
|
1952
|
-
"required": true,
|
|
1953
|
-
"hasDynamicHelp": false,
|
|
1954
|
-
"multiple": false,
|
|
1955
|
-
"type": "option"
|
|
1956
|
-
},
|
|
1957
|
-
"param": {
|
|
1958
|
-
"char": "p",
|
|
1959
|
-
"description": "Action parameters in key=value format",
|
|
1960
|
-
"name": "param",
|
|
1961
|
-
"hasDynamicHelp": false,
|
|
1962
|
-
"multiple": true,
|
|
1963
|
-
"type": "option"
|
|
1964
|
-
},
|
|
1965
|
-
"dry-run": {
|
|
1966
|
-
"description": "Validate without executing",
|
|
1967
|
-
"name": "dry-run",
|
|
1968
|
-
"allowNo": false,
|
|
1969
|
-
"type": "boolean"
|
|
1970
|
-
},
|
|
1971
|
-
"output": {
|
|
1972
|
-
"char": "o",
|
|
1973
|
-
"description": "Output format",
|
|
1974
|
-
"name": "output",
|
|
1975
|
-
"default": "compact",
|
|
1976
|
-
"hasDynamicHelp": false,
|
|
1977
|
-
"multiple": false,
|
|
1978
|
-
"options": [
|
|
1979
|
-
"compact",
|
|
1980
|
-
"json",
|
|
1981
|
-
"table"
|
|
1982
|
-
],
|
|
1983
|
-
"type": "option"
|
|
1984
|
-
},
|
|
1985
|
-
"verbose": {
|
|
1986
|
-
"char": "v",
|
|
1987
|
-
"description": "Show detailed execution information",
|
|
1988
|
-
"name": "verbose",
|
|
1989
|
-
"allowNo": false,
|
|
1990
|
-
"type": "boolean"
|
|
1991
|
-
},
|
|
1992
|
-
"timeout": {
|
|
1993
|
-
"description": "Execution timeout in milliseconds",
|
|
1994
|
-
"name": "timeout",
|
|
1995
|
-
"default": 300000,
|
|
1996
|
-
"hasDynamicHelp": false,
|
|
1997
|
-
"multiple": false,
|
|
1998
|
-
"type": "option"
|
|
1999
|
-
}
|
|
2000
|
-
},
|
|
2001
|
-
"hasDynamicHelp": false,
|
|
2002
|
-
"hiddenAliases": [],
|
|
2003
|
-
"id": "ai:actions:run",
|
|
2004
|
-
"pluginAlias": "@memberjunction/cli",
|
|
2005
|
-
"pluginName": "@memberjunction/cli",
|
|
2006
|
-
"pluginType": "core",
|
|
2007
|
-
"strict": true,
|
|
2008
|
-
"enableJsonFlag": false,
|
|
2009
|
-
"isESM": false,
|
|
2010
|
-
"relativePath": [
|
|
2011
|
-
"dist",
|
|
2012
|
-
"commands",
|
|
2013
|
-
"ai",
|
|
2014
|
-
"actions",
|
|
2015
|
-
"run.js"
|
|
2016
|
-
]
|
|
2017
|
-
},
|
|
2018
1895
|
"ai:agents:list": {
|
|
2019
1896
|
"aliases": [],
|
|
2020
1897
|
"args": {},
|
|
@@ -2360,6 +2237,129 @@
|
|
|
2360
2237
|
"index.js"
|
|
2361
2238
|
]
|
|
2362
2239
|
},
|
|
2240
|
+
"ai:actions:list": {
|
|
2241
|
+
"aliases": [],
|
|
2242
|
+
"args": {},
|
|
2243
|
+
"description": "List available AI actions",
|
|
2244
|
+
"examples": [
|
|
2245
|
+
"<%= config.bin %> <%= command.id %>",
|
|
2246
|
+
"<%= config.bin %> <%= command.id %> --output=table",
|
|
2247
|
+
"<%= config.bin %> <%= command.id %> --output=json"
|
|
2248
|
+
],
|
|
2249
|
+
"flags": {
|
|
2250
|
+
"output": {
|
|
2251
|
+
"char": "o",
|
|
2252
|
+
"description": "Output format",
|
|
2253
|
+
"name": "output",
|
|
2254
|
+
"default": "compact",
|
|
2255
|
+
"hasDynamicHelp": false,
|
|
2256
|
+
"multiple": false,
|
|
2257
|
+
"options": [
|
|
2258
|
+
"compact",
|
|
2259
|
+
"json",
|
|
2260
|
+
"table"
|
|
2261
|
+
],
|
|
2262
|
+
"type": "option"
|
|
2263
|
+
}
|
|
2264
|
+
},
|
|
2265
|
+
"hasDynamicHelp": false,
|
|
2266
|
+
"hiddenAliases": [],
|
|
2267
|
+
"id": "ai:actions:list",
|
|
2268
|
+
"pluginAlias": "@memberjunction/cli",
|
|
2269
|
+
"pluginName": "@memberjunction/cli",
|
|
2270
|
+
"pluginType": "core",
|
|
2271
|
+
"strict": true,
|
|
2272
|
+
"enableJsonFlag": false,
|
|
2273
|
+
"isESM": false,
|
|
2274
|
+
"relativePath": [
|
|
2275
|
+
"dist",
|
|
2276
|
+
"commands",
|
|
2277
|
+
"ai",
|
|
2278
|
+
"actions",
|
|
2279
|
+
"list.js"
|
|
2280
|
+
]
|
|
2281
|
+
},
|
|
2282
|
+
"ai:actions:run": {
|
|
2283
|
+
"aliases": [],
|
|
2284
|
+
"args": {},
|
|
2285
|
+
"description": "Execute an AI action with parameters",
|
|
2286
|
+
"examples": [
|
|
2287
|
+
"<%= config.bin %> <%= command.id %> -n \"Get Weather\" --param \"Location=Boston\"",
|
|
2288
|
+
"<%= config.bin %> <%= command.id %> -n \"Get Stock Price\" --param \"Ticker=AAPL\"",
|
|
2289
|
+
"<%= config.bin %> <%= command.id %> -n \"Send Single Message\" --param \"To=user@example.com\" --param \"Subject=Test\" --param \"Body=Hello\" --param \"MessageType=Email\" --param \"Provider=SendGrid\"",
|
|
2290
|
+
"<%= config.bin %> <%= command.id %> -n \"Calculate Expression\" --param \"Expression=2+2*3\" --dry-run"
|
|
2291
|
+
],
|
|
2292
|
+
"flags": {
|
|
2293
|
+
"name": {
|
|
2294
|
+
"char": "n",
|
|
2295
|
+
"description": "Action name",
|
|
2296
|
+
"name": "name",
|
|
2297
|
+
"required": true,
|
|
2298
|
+
"hasDynamicHelp": false,
|
|
2299
|
+
"multiple": false,
|
|
2300
|
+
"type": "option"
|
|
2301
|
+
},
|
|
2302
|
+
"param": {
|
|
2303
|
+
"char": "p",
|
|
2304
|
+
"description": "Action parameters in key=value format",
|
|
2305
|
+
"name": "param",
|
|
2306
|
+
"hasDynamicHelp": false,
|
|
2307
|
+
"multiple": true,
|
|
2308
|
+
"type": "option"
|
|
2309
|
+
},
|
|
2310
|
+
"dry-run": {
|
|
2311
|
+
"description": "Validate without executing",
|
|
2312
|
+
"name": "dry-run",
|
|
2313
|
+
"allowNo": false,
|
|
2314
|
+
"type": "boolean"
|
|
2315
|
+
},
|
|
2316
|
+
"output": {
|
|
2317
|
+
"char": "o",
|
|
2318
|
+
"description": "Output format",
|
|
2319
|
+
"name": "output",
|
|
2320
|
+
"default": "compact",
|
|
2321
|
+
"hasDynamicHelp": false,
|
|
2322
|
+
"multiple": false,
|
|
2323
|
+
"options": [
|
|
2324
|
+
"compact",
|
|
2325
|
+
"json",
|
|
2326
|
+
"table"
|
|
2327
|
+
],
|
|
2328
|
+
"type": "option"
|
|
2329
|
+
},
|
|
2330
|
+
"verbose": {
|
|
2331
|
+
"char": "v",
|
|
2332
|
+
"description": "Show detailed execution information",
|
|
2333
|
+
"name": "verbose",
|
|
2334
|
+
"allowNo": false,
|
|
2335
|
+
"type": "boolean"
|
|
2336
|
+
},
|
|
2337
|
+
"timeout": {
|
|
2338
|
+
"description": "Execution timeout in milliseconds",
|
|
2339
|
+
"name": "timeout",
|
|
2340
|
+
"default": 300000,
|
|
2341
|
+
"hasDynamicHelp": false,
|
|
2342
|
+
"multiple": false,
|
|
2343
|
+
"type": "option"
|
|
2344
|
+
}
|
|
2345
|
+
},
|
|
2346
|
+
"hasDynamicHelp": false,
|
|
2347
|
+
"hiddenAliases": [],
|
|
2348
|
+
"id": "ai:actions:run",
|
|
2349
|
+
"pluginAlias": "@memberjunction/cli",
|
|
2350
|
+
"pluginName": "@memberjunction/cli",
|
|
2351
|
+
"pluginType": "core",
|
|
2352
|
+
"strict": true,
|
|
2353
|
+
"enableJsonFlag": false,
|
|
2354
|
+
"isESM": false,
|
|
2355
|
+
"relativePath": [
|
|
2356
|
+
"dist",
|
|
2357
|
+
"commands",
|
|
2358
|
+
"ai",
|
|
2359
|
+
"actions",
|
|
2360
|
+
"run.js"
|
|
2361
|
+
]
|
|
2362
|
+
},
|
|
2363
2363
|
"ai:prompts:list": {
|
|
2364
2364
|
"aliases": [],
|
|
2365
2365
|
"args": {},
|
|
@@ -2500,5 +2500,5 @@
|
|
|
2500
2500
|
]
|
|
2501
2501
|
}
|
|
2502
2502
|
},
|
|
2503
|
-
"version": "3.
|
|
2503
|
+
"version": "3.2.0"
|
|
2504
2504
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "MemberJunction command line tools",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"oclif"
|
|
@@ -51,15 +51,15 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@inquirer/prompts": "^5.0.1",
|
|
54
|
-
"@memberjunction/ai-cli": "3.
|
|
55
|
-
"@memberjunction/codegen-lib": "3.
|
|
56
|
-
"@memberjunction/config": "3.
|
|
57
|
-
"@memberjunction/core": "3.
|
|
58
|
-
"@memberjunction/db-auto-doc": "3.
|
|
59
|
-
"@memberjunction/metadata-sync": "3.
|
|
60
|
-
"@memberjunction/query-gen": "3.
|
|
61
|
-
"@memberjunction/sqlserver-dataprovider": "3.
|
|
62
|
-
"@memberjunction/testing-cli": "3.
|
|
54
|
+
"@memberjunction/ai-cli": "3.2.0",
|
|
55
|
+
"@memberjunction/codegen-lib": "3.2.0",
|
|
56
|
+
"@memberjunction/config": "3.2.0",
|
|
57
|
+
"@memberjunction/core": "3.2.0",
|
|
58
|
+
"@memberjunction/db-auto-doc": "3.2.0",
|
|
59
|
+
"@memberjunction/metadata-sync": "3.2.0",
|
|
60
|
+
"@memberjunction/query-gen": "3.2.0",
|
|
61
|
+
"@memberjunction/sqlserver-dataprovider": "3.2.0",
|
|
62
|
+
"@memberjunction/testing-cli": "3.2.0",
|
|
63
63
|
"@oclif/core": "^3",
|
|
64
64
|
"@oclif/plugin-help": "^6",
|
|
65
65
|
"@oclif/plugin-version": "^2.0.17",
|