wfu-migrate 0.1.30 → 0.1.31
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/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +32 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/update-checker.d.ts +24 -0
- package/dist/lib/update-checker.d.ts.map +1 -0
- package/dist/lib/update-checker.js +112 -0
- package/dist/lib/update-checker.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsQpC,eAAO,MAAM,aAAa,SAEN,CAAC"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -12,7 +12,14 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { Command } from 'commander';
|
|
14
14
|
import { execSync } from 'child_process';
|
|
15
|
+
import { readFileSync } from 'fs';
|
|
16
|
+
import { dirname, join } from 'path';
|
|
17
|
+
import { fileURLToPath } from 'url';
|
|
15
18
|
import { configExists, readConfig, verifyConfig } from '../lib/config-manager.js';
|
|
19
|
+
import { checkForUpdate } from '../lib/update-checker.js';
|
|
20
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
const packageJson = JSON.parse(readFileSync(join(__dirname, '..', '..', 'package.json'), 'utf-8'));
|
|
22
|
+
const CURRENT_VERSION = packageJson.version;
|
|
16
23
|
function checkDocker() {
|
|
17
24
|
try {
|
|
18
25
|
const version = execSync('docker --version', { encoding: 'utf-8' }).trim();
|
|
@@ -196,6 +203,30 @@ function checkS3() {
|
|
|
196
203
|
message: `s3://${config.s3.bucket}/${config.s3.prefix}`,
|
|
197
204
|
};
|
|
198
205
|
}
|
|
206
|
+
async function checkVersion() {
|
|
207
|
+
const result = await checkForUpdate(CURRENT_VERSION);
|
|
208
|
+
if (!result) {
|
|
209
|
+
return {
|
|
210
|
+
name: 'Version',
|
|
211
|
+
status: 'warn',
|
|
212
|
+
message: `v${CURRENT_VERSION} (unable to check for updates)`,
|
|
213
|
+
suggestion: 'Check manually: npm view wfu-migrate version',
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
if (result.updateAvailable) {
|
|
217
|
+
return {
|
|
218
|
+
name: 'Version',
|
|
219
|
+
status: 'warn',
|
|
220
|
+
message: `v${result.currentVersion} → v${result.latestVersion} available`,
|
|
221
|
+
suggestion: 'Run: wfu-migrate update',
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
name: 'Version',
|
|
226
|
+
status: 'pass',
|
|
227
|
+
message: `v${CURRENT_VERSION} (latest)`,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
199
230
|
function formatResult(result) {
|
|
200
231
|
const icon = result.status === 'pass' ? '✓' : result.status === 'warn' ? '⚠' : '✗';
|
|
201
232
|
const color = result.status === 'pass' ? '\x1b[32m' : result.status === 'warn' ? '\x1b[33m' : '\x1b[31m';
|
|
@@ -211,6 +242,7 @@ async function runDoctor() {
|
|
|
211
242
|
console.log('==============================');
|
|
212
243
|
console.log('');
|
|
213
244
|
const results = [
|
|
245
|
+
await checkVersion(),
|
|
214
246
|
checkDocker(),
|
|
215
247
|
checkMysqlClient(),
|
|
216
248
|
checkAwsCli(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* - S3 integration for file sync and backup archival
|
|
12
12
|
* - Resume capability for interrupted migrations
|
|
13
13
|
*/
|
|
14
|
-
import { program } from 'commander';
|
|
14
|
+
import { Command, program } from 'commander';
|
|
15
|
+
import { execSync } from 'child_process';
|
|
15
16
|
import { readFileSync } from 'fs';
|
|
16
17
|
import { dirname, join } from 'path';
|
|
17
18
|
import { fileURLToPath } from 'url';
|
|
@@ -23,6 +24,7 @@ import { cleanupCommand } from './commands/cleanup.js';
|
|
|
23
24
|
import { listSitesCommand } from './commands/list-sites.js';
|
|
24
25
|
import { userSyncCommand } from './commands/user-sync.js';
|
|
25
26
|
import { correctUserSyncCommand } from './commands/correct-user-sync.js';
|
|
27
|
+
import { notifyIfUpdateAvailable } from './lib/update-checker.js';
|
|
26
28
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
27
29
|
const packageJson = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
28
30
|
const VERSION = packageJson.version;
|
|
@@ -38,5 +40,20 @@ program.addCommand(cleanupCommand);
|
|
|
38
40
|
program.addCommand(listSitesCommand);
|
|
39
41
|
program.addCommand(userSyncCommand);
|
|
40
42
|
program.addCommand(correctUserSyncCommand);
|
|
41
|
-
|
|
43
|
+
const updateCommand = new Command('update')
|
|
44
|
+
.description('Update wfu-migrate to the latest version')
|
|
45
|
+
.action(() => {
|
|
46
|
+
console.log('Updating wfu-migrate...');
|
|
47
|
+
try {
|
|
48
|
+
execSync('npm update -g wfu-migrate', { stdio: 'inherit' });
|
|
49
|
+
console.log('Update complete.');
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
console.error('Update failed. Try running manually: npm update -g wfu-migrate');
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
program.addCommand(updateCommand);
|
|
57
|
+
await program.parseAsync();
|
|
58
|
+
await notifyIfUpdateAvailable(VERSION);
|
|
42
59
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7F,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,+EAA+E,CAAC;KAC5F,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;AAEnE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAE3C,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACxC,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,QAAQ,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;AAC3B,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update checker - Alerts users when a newer version is available on npm
|
|
3
|
+
*
|
|
4
|
+
* Caches the latest version in ~/.wfu-migrate/.update-check.json
|
|
5
|
+
* to avoid hitting the npm registry on every invocation. Checks
|
|
6
|
+
* at most once every 24 hours.
|
|
7
|
+
*/
|
|
8
|
+
export interface UpdateCheckResult {
|
|
9
|
+
updateAvailable: boolean;
|
|
10
|
+
currentVersion: string;
|
|
11
|
+
latestVersion: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check if a newer version is available. Uses a 24-hour cache to
|
|
15
|
+
* avoid excessive network requests. Returns null if the check
|
|
16
|
+
* was skipped or failed.
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkForUpdate(currentVersion: string): Promise<UpdateCheckResult | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Print an update notification to stderr if a newer version is available.
|
|
21
|
+
* Uses stderr so it doesn't interfere with piped output.
|
|
22
|
+
*/
|
|
23
|
+
export declare function notifyIfUpdateAvailable(currentVersion: string): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=update-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/lib/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+DH,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAiB9F;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAanF"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update checker - Alerts users when a newer version is available on npm
|
|
3
|
+
*
|
|
4
|
+
* Caches the latest version in ~/.wfu-migrate/.update-check.json
|
|
5
|
+
* to avoid hitting the npm registry on every invocation. Checks
|
|
6
|
+
* at most once every 24 hours.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
const CACHE_DIR = join(homedir(), '.wfu-migrate');
|
|
12
|
+
const CACHE_FILE = join(CACHE_DIR, '.update-check.json');
|
|
13
|
+
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
14
|
+
const REGISTRY_URL = 'https://registry.npmjs.org/wfu-migrate/latest';
|
|
15
|
+
const FETCH_TIMEOUT_MS = 3000;
|
|
16
|
+
function readCache() {
|
|
17
|
+
try {
|
|
18
|
+
if (!existsSync(CACHE_FILE))
|
|
19
|
+
return null;
|
|
20
|
+
return JSON.parse(readFileSync(CACHE_FILE, 'utf-8'));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function writeCache(data) {
|
|
27
|
+
try {
|
|
28
|
+
if (!existsSync(CACHE_DIR)) {
|
|
29
|
+
mkdirSync(CACHE_DIR, { recursive: true });
|
|
30
|
+
}
|
|
31
|
+
writeFileSync(CACHE_FILE, JSON.stringify(data), 'utf-8');
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Silently fail - caching is best-effort
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isNewer(latest, current) {
|
|
38
|
+
const latestParts = latest.split('.').map(Number);
|
|
39
|
+
const currentParts = current.split('.').map(Number);
|
|
40
|
+
for (let i = 0; i < Math.max(latestParts.length, currentParts.length); i++) {
|
|
41
|
+
const l = latestParts[i] || 0;
|
|
42
|
+
const c = currentParts[i] || 0;
|
|
43
|
+
if (l > c)
|
|
44
|
+
return true;
|
|
45
|
+
if (l < c)
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
async function fetchLatestVersion() {
|
|
51
|
+
try {
|
|
52
|
+
const controller = new AbortController();
|
|
53
|
+
const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
54
|
+
const response = await fetch(REGISTRY_URL, { signal: controller.signal });
|
|
55
|
+
clearTimeout(timeout);
|
|
56
|
+
if (!response.ok)
|
|
57
|
+
return null;
|
|
58
|
+
const data = await response.json();
|
|
59
|
+
return data.version;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if a newer version is available. Uses a 24-hour cache to
|
|
67
|
+
* avoid excessive network requests. Returns null if the check
|
|
68
|
+
* was skipped or failed.
|
|
69
|
+
*/
|
|
70
|
+
export async function checkForUpdate(currentVersion) {
|
|
71
|
+
const cache = readCache();
|
|
72
|
+
if (cache && (Date.now() - cache.lastCheck) < CHECK_INTERVAL_MS) {
|
|
73
|
+
return {
|
|
74
|
+
updateAvailable: isNewer(cache.latestVersion, currentVersion),
|
|
75
|
+
currentVersion,
|
|
76
|
+
latestVersion: cache.latestVersion,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const latestVersion = await fetchLatestVersion();
|
|
80
|
+
if (!latestVersion)
|
|
81
|
+
return null;
|
|
82
|
+
writeCache({ lastCheck: Date.now(), latestVersion });
|
|
83
|
+
return {
|
|
84
|
+
updateAvailable: isNewer(latestVersion, currentVersion),
|
|
85
|
+
currentVersion,
|
|
86
|
+
latestVersion,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Print an update notification to stderr if a newer version is available.
|
|
91
|
+
* Uses stderr so it doesn't interfere with piped output.
|
|
92
|
+
*/
|
|
93
|
+
export async function notifyIfUpdateAvailable(currentVersion) {
|
|
94
|
+
const result = await checkForUpdate(currentVersion);
|
|
95
|
+
if (!result?.updateAvailable)
|
|
96
|
+
return;
|
|
97
|
+
const yellow = '\x1b[33m';
|
|
98
|
+
const cyan = '\x1b[36m';
|
|
99
|
+
const bold = '\x1b[1m';
|
|
100
|
+
const reset = '\x1b[0m';
|
|
101
|
+
process.stderr.write(`\n${yellow}╭─────────────────────────────────────────────╮${reset}\n` +
|
|
102
|
+
`${yellow}│${reset} Update available: ${red(result.currentVersion)} → ${green(result.latestVersion)}${yellow} │${reset}\n` +
|
|
103
|
+
`${yellow}│${reset} Run ${cyan}${bold}npm update -g wfu-migrate${reset} to update ${yellow}│${reset}\n` +
|
|
104
|
+
`${yellow}╰─────────────────────────────────────────────╯${reset}\n\n`);
|
|
105
|
+
}
|
|
106
|
+
function red(text) {
|
|
107
|
+
return `\x1b[31m${text}\x1b[0m`;
|
|
108
|
+
}
|
|
109
|
+
function green(text) {
|
|
110
|
+
return `\x1b[32m${text}\x1b[0m`;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=update-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/lib/update-checker.ts"],"names":[],"mappings":"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"}
|