@instawp/cli 0.0.1-beta.22 → 0.0.1-beta.24
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/CHANGELOG.md +24 -0
- package/README.md +14 -1
- package/dist/commands/db.js +164 -32
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/exec.js +54 -26
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/local.js +1 -1
- package/dist/commands/local.js.map +1 -1
- package/dist/commands/sync.js +57 -8
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/upgrade.d.ts +2 -0
- package/dist/commands/upgrade.js +47 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/versions.js +3 -3
- package/dist/commands/versions.js.map +1 -1
- package/dist/index.js +21 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.js +11 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/paths.d.ts +13 -0
- package/dist/lib/paths.js +22 -0
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/remote-command.d.ts +24 -0
- package/dist/lib/remote-command.js +49 -0
- package/dist/lib/remote-command.js.map +1 -0
- package/dist/lib/sql-dump.d.ts +25 -0
- package/dist/lib/sql-dump.js +55 -0
- package/dist/lib/sql-dump.js.map +1 -0
- package/dist/lib/ssh-connection.d.ts +16 -0
- package/dist/lib/ssh-connection.js +23 -0
- package/dist/lib/ssh-connection.js.map +1 -1
- package/dist/lib/update-notifier.d.ts +18 -0
- package/dist/lib/update-notifier.js +101 -0
- package/dist/lib/update-notifier.js.map +1 -0
- package/package.json +1 -1
package/dist/lib/config.js
CHANGED
|
@@ -11,6 +11,7 @@ const config = new Conf({
|
|
|
11
11
|
site_cache: { type: 'object', default: {} },
|
|
12
12
|
local_instances: { type: 'object', default: {} },
|
|
13
13
|
team_id: { type: 'number', default: 0 },
|
|
14
|
+
update_check: { type: 'object', default: {} },
|
|
14
15
|
},
|
|
15
16
|
});
|
|
16
17
|
export function getToken() {
|
|
@@ -51,6 +52,16 @@ export function clearTeamId() {
|
|
|
51
52
|
export function clearConfig() {
|
|
52
53
|
config.clear();
|
|
53
54
|
}
|
|
55
|
+
export function getUpdateCheck() {
|
|
56
|
+
const v = config.get('update_check');
|
|
57
|
+
if (v && typeof v.lastCheck === 'number') {
|
|
58
|
+
return { lastCheck: v.lastCheck, latestVersion: v.latestVersion || '' };
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
export function setUpdateCheck(latestVersion) {
|
|
63
|
+
config.set('update_check', { lastCheck: Date.now(), latestVersion });
|
|
64
|
+
}
|
|
54
65
|
export function getSiteCache(identifier) {
|
|
55
66
|
const cache = config.get('site_cache');
|
|
56
67
|
const entry = cache?.[identifier.toLowerCase()];
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAC/C,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEpD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC;IACtB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE;QAC9D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACtC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACrC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3C,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAChD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/paths.d.ts
CHANGED
|
@@ -10,6 +10,19 @@
|
|
|
10
10
|
* Remote paths (containing `user@host:`): pass-through.
|
|
11
11
|
*/
|
|
12
12
|
export declare function toRsyncPath(p: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the remote sync target for a site. Defaults to the site's
|
|
15
|
+
* `wp-content/`, but `--webroot` targets `public_html/` and `--remote-path <p>`
|
|
16
|
+
* targets an explicit path (absolute, or relative to `public_html/`). Always
|
|
17
|
+
* returns a trailing slash so rsync/SFTP treat it as a directory.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildRemotePath(conn: {
|
|
20
|
+
username: string;
|
|
21
|
+
domain: string;
|
|
22
|
+
}, opts?: {
|
|
23
|
+
remotePath?: string;
|
|
24
|
+
webroot?: boolean;
|
|
25
|
+
}): string;
|
|
13
26
|
/**
|
|
14
27
|
* Resolve a path inside the CLI's installed directory (e.g. bundled scripts).
|
|
15
28
|
*
|
package/dist/lib/paths.js
CHANGED
|
@@ -25,6 +25,28 @@ export function toRsyncPath(p) {
|
|
|
25
25
|
// UNC or other — just normalize separators
|
|
26
26
|
return p.replace(/\\/g, '/');
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the remote sync target for a site. Defaults to the site's
|
|
30
|
+
* `wp-content/`, but `--webroot` targets `public_html/` and `--remote-path <p>`
|
|
31
|
+
* targets an explicit path (absolute, or relative to `public_html/`). Always
|
|
32
|
+
* returns a trailing slash so rsync/SFTP treat it as a directory.
|
|
33
|
+
*/
|
|
34
|
+
export function buildRemotePath(conn, opts = {}) {
|
|
35
|
+
const webrootBase = `/home/${conn.username}/web/${conn.domain}/public_html`;
|
|
36
|
+
let p;
|
|
37
|
+
if (opts.remotePath) {
|
|
38
|
+
p = opts.remotePath.startsWith('/')
|
|
39
|
+
? opts.remotePath
|
|
40
|
+
: `${webrootBase}/${opts.remotePath.replace(/^\.?\//, '')}`;
|
|
41
|
+
}
|
|
42
|
+
else if (opts.webroot) {
|
|
43
|
+
p = webrootBase;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
p = `${webrootBase}/wp-content`;
|
|
47
|
+
}
|
|
48
|
+
return p.endsWith('/') ? p : p + '/';
|
|
49
|
+
}
|
|
28
50
|
/**
|
|
29
51
|
* Resolve a path inside the CLI's installed directory (e.g. bundled scripts).
|
|
30
52
|
*
|
package/dist/lib/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC;IAC3C,4CAA4C;IAC5C,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACzC,6DAA6D;IAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,2CAA2C;IAC3C,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB,EAAE,GAAG,QAAkB;IAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC;IAC3C,4CAA4C;IAC5C,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACzC,6DAA6D;IAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,2CAA2C;IAC3C,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA0C,EAC1C,OAAmD,EAAE;IAErD,MAAM,WAAW,GAAG,SAAS,IAAI,CAAC,QAAQ,QAAQ,IAAI,CAAC,MAAM,cAAc,CAAC;IAC5E,IAAI,CAAS,CAAC;IACd,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;SAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC,GAAG,WAAW,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,GAAG,WAAW,aAAa,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB,EAAE,GAAG,QAAkB;IAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POSIX shell single-quote escape: shell-safe chars pass through, anything else
|
|
3
|
+
* is wrapped in '...' with embedded ' → '\''. Required because the remote shell
|
|
4
|
+
* receives joined args via stdin and would otherwise interpret parens, quotes,
|
|
5
|
+
* semicolons, etc. (this is what fixed `wp eval '...'`).
|
|
6
|
+
*/
|
|
7
|
+
export declare function shellQuote(arg: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Build the remote command string from raw argv.
|
|
10
|
+
* - default: each arg is shell-quoted then joined, so a single arg containing
|
|
11
|
+
* metacharacters (`;`, `|`, …) is sent as one literal token (safe for
|
|
12
|
+
* `wp eval '...'`, but means `-- "echo a; echo b"` runs nothing useful).
|
|
13
|
+
* - `shell`: join the args and wrap in `bash -lc '<cmdline>'` so the remote
|
|
14
|
+
* runs them through a real shell — enabling pipes, `;`, `>`, globs.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildRemoteCommandString(args: string[], shell?: boolean): string;
|
|
17
|
+
/**
|
|
18
|
+
* Return the portion of `stdout` after the first line equal to `marker`
|
|
19
|
+
* (dropping the marker line itself). InstaWP servers prepend a login banner/MOTD
|
|
20
|
+
* to non-interactive SSH output; emitting a unique marker before the real
|
|
21
|
+
* command lets us strip everything up to and including it. If the marker isn't
|
|
22
|
+
* present (no banner) the original string is returned unchanged.
|
|
23
|
+
*/
|
|
24
|
+
export declare function sliceAfterMarker(stdout: string, marker: string): string;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Helpers for building/cleaning the command sent to a remote shell over SSH.
|
|
2
|
+
/**
|
|
3
|
+
* POSIX shell single-quote escape: shell-safe chars pass through, anything else
|
|
4
|
+
* is wrapped in '...' with embedded ' → '\''. Required because the remote shell
|
|
5
|
+
* receives joined args via stdin and would otherwise interpret parens, quotes,
|
|
6
|
+
* semicolons, etc. (this is what fixed `wp eval '...'`).
|
|
7
|
+
*/
|
|
8
|
+
export function shellQuote(arg) {
|
|
9
|
+
if (arg === '')
|
|
10
|
+
return "''";
|
|
11
|
+
if (/^[a-zA-Z0-9_\-./=:@%+,]+$/.test(arg))
|
|
12
|
+
return arg;
|
|
13
|
+
return "'" + arg.replace(/'/g, "'\\''") + "'";
|
|
14
|
+
}
|
|
15
|
+
function joinForRemote(args) {
|
|
16
|
+
return args.map(shellQuote).join(' ');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Build the remote command string from raw argv.
|
|
20
|
+
* - default: each arg is shell-quoted then joined, so a single arg containing
|
|
21
|
+
* metacharacters (`;`, `|`, …) is sent as one literal token (safe for
|
|
22
|
+
* `wp eval '...'`, but means `-- "echo a; echo b"` runs nothing useful).
|
|
23
|
+
* - `shell`: join the args and wrap in `bash -lc '<cmdline>'` so the remote
|
|
24
|
+
* runs them through a real shell — enabling pipes, `;`, `>`, globs.
|
|
25
|
+
*/
|
|
26
|
+
export function buildRemoteCommandString(args, shell = false) {
|
|
27
|
+
if (shell)
|
|
28
|
+
return 'bash -lc ' + shellQuote(args.join(' '));
|
|
29
|
+
return joinForRemote(args);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Return the portion of `stdout` after the first line equal to `marker`
|
|
33
|
+
* (dropping the marker line itself). InstaWP servers prepend a login banner/MOTD
|
|
34
|
+
* to non-interactive SSH output; emitting a unique marker before the real
|
|
35
|
+
* command lets us strip everything up to and including it. If the marker isn't
|
|
36
|
+
* present (no banner) the original string is returned unchanged.
|
|
37
|
+
*/
|
|
38
|
+
export function sliceAfterMarker(stdout, marker) {
|
|
39
|
+
const idx = stdout.indexOf(marker);
|
|
40
|
+
if (idx === -1)
|
|
41
|
+
return stdout;
|
|
42
|
+
let after = stdout.slice(idx + marker.length);
|
|
43
|
+
if (after.startsWith('\r'))
|
|
44
|
+
after = after.slice(1);
|
|
45
|
+
if (after.startsWith('\n'))
|
|
46
|
+
after = after.slice(1);
|
|
47
|
+
return after;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=remote-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-command.js","sourceRoot":"","sources":["../../src/lib/remote-command.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACtD,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAc,EAAE,KAAK,GAAG,KAAK;IACpE,IAAI,KAAK;QAAE,OAAO,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,MAAc;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9B,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect the table prefix used inside a MySQL dump by matching the first
|
|
3
|
+
* statement that references a WordPress *core* table (whose suffix is fixed,
|
|
4
|
+
* e.g. `options`, `posts`, `usermeta`). Returns the prefix string (which may be
|
|
5
|
+
* empty for an unprefixed dump), or `null` if no core table is found in the
|
|
6
|
+
* given text — pass a generous head of the file (`wp db export`/mysqldump emit
|
|
7
|
+
* CREATE/INSERT for these tables near the top). Identifiers are backtick-quoted,
|
|
8
|
+
* so we anchor on the trailing backtick to avoid `posts` matching `postmeta`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectDumpPrefix(sqlHead: string): string | null;
|
|
11
|
+
/** Read up to `bytes` from the start of a (plain, decompressed) file as UTF-8. */
|
|
12
|
+
export declare function readSqlHead(path: string, bytes?: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Stream-rewrite a SQL dump, replacing the table-identifier prefix
|
|
15
|
+
* `` `<from>… `` → `` `<to>… ``. `wp db export`/mysqldump backtick-quote table
|
|
16
|
+
* names, so anchoring on the leading backtick rewrites identifiers
|
|
17
|
+
* (CREATE/INSERT/LOCK/DROP) without touching ordinary string data. Done line by
|
|
18
|
+
* line to avoid loading large dumps fully into memory.
|
|
19
|
+
*
|
|
20
|
+
* Note: this rewrites table *names* only. Prefix-bound *values* (the
|
|
21
|
+
* `{prefix}capabilities` / `{prefix}user_level` usermeta keys and the
|
|
22
|
+
* `{prefix}user_roles` option) live in the row data and must be remapped after
|
|
23
|
+
* import — see the `db push` caller.
|
|
24
|
+
*/
|
|
25
|
+
export declare function rewriteDumpPrefix(src: string, dest: string, fromPrefix: string, toPrefix: string): Promise<void>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { createReadStream, createWriteStream, openSync, readSync, closeSync, statSync } from 'node:fs';
|
|
2
|
+
import { createInterface } from 'node:readline';
|
|
3
|
+
/**
|
|
4
|
+
* Detect the table prefix used inside a MySQL dump by matching the first
|
|
5
|
+
* statement that references a WordPress *core* table (whose suffix is fixed,
|
|
6
|
+
* e.g. `options`, `posts`, `usermeta`). Returns the prefix string (which may be
|
|
7
|
+
* empty for an unprefixed dump), or `null` if no core table is found in the
|
|
8
|
+
* given text — pass a generous head of the file (`wp db export`/mysqldump emit
|
|
9
|
+
* CREATE/INSERT for these tables near the top). Identifiers are backtick-quoted,
|
|
10
|
+
* so we anchor on the trailing backtick to avoid `posts` matching `postmeta`.
|
|
11
|
+
*/
|
|
12
|
+
export function detectDumpPrefix(sqlHead) {
|
|
13
|
+
const re = /(?:CREATE TABLE(?: IF NOT EXISTS)?|INSERT INTO|REPLACE INTO|LOCK TABLES|DROP TABLE(?: IF EXISTS)?)\s+`([A-Za-z0-9_]*?)(commentmeta|comments|links|options|postmeta|posts|term_relationships|term_taxonomy|termmeta|terms|usermeta|users)`/i;
|
|
14
|
+
const m = sqlHead.match(re);
|
|
15
|
+
return m ? m[1] : null;
|
|
16
|
+
}
|
|
17
|
+
/** Read up to `bytes` from the start of a (plain, decompressed) file as UTF-8. */
|
|
18
|
+
export function readSqlHead(path, bytes = 4 * 1024 * 1024) {
|
|
19
|
+
const fd = openSync(path, 'r');
|
|
20
|
+
try {
|
|
21
|
+
const size = Math.min(bytes, statSync(path).size);
|
|
22
|
+
const buf = Buffer.alloc(size);
|
|
23
|
+
const read = readSync(fd, buf, 0, size, 0);
|
|
24
|
+
return buf.toString('utf-8', 0, read);
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
closeSync(fd);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Stream-rewrite a SQL dump, replacing the table-identifier prefix
|
|
32
|
+
* `` `<from>… `` → `` `<to>… ``. `wp db export`/mysqldump backtick-quote table
|
|
33
|
+
* names, so anchoring on the leading backtick rewrites identifiers
|
|
34
|
+
* (CREATE/INSERT/LOCK/DROP) without touching ordinary string data. Done line by
|
|
35
|
+
* line to avoid loading large dumps fully into memory.
|
|
36
|
+
*
|
|
37
|
+
* Note: this rewrites table *names* only. Prefix-bound *values* (the
|
|
38
|
+
* `{prefix}capabilities` / `{prefix}user_level` usermeta keys and the
|
|
39
|
+
* `{prefix}user_roles` option) live in the row data and must be remapped after
|
|
40
|
+
* import — see the `db push` caller.
|
|
41
|
+
*/
|
|
42
|
+
export async function rewriteDumpPrefix(src, dest, fromPrefix, toPrefix) {
|
|
43
|
+
const input = createReadStream(src, { encoding: 'utf-8' });
|
|
44
|
+
const output = createWriteStream(dest, { encoding: 'utf-8' });
|
|
45
|
+
const rl = createInterface({ input, crlfDelay: Infinity });
|
|
46
|
+
const fromTok = '`' + fromPrefix;
|
|
47
|
+
const toTok = '`' + toPrefix;
|
|
48
|
+
for await (const line of rl) {
|
|
49
|
+
output.write((line.includes(fromTok) ? line.split(fromTok).join(toTok) : line) + '\n');
|
|
50
|
+
}
|
|
51
|
+
await new Promise((resolve, reject) => {
|
|
52
|
+
output.end((err) => (err ? reject(err) : resolve()));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=sql-dump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-dump.js","sourceRoot":"","sources":["../../src/lib/sql-dump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,EAAE,GACN,4OAA4O,CAAC;IAC/O,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IAC/D,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAY,EAAE,UAAkB,EAAE,QAAgB;IACrG,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,GAAG,GAAG,UAAU,CAAC;IACjC,MAAM,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;IAC7B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAkB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -7,6 +7,22 @@ export declare function execViaSsh(conn: SshConnection, command: string): {
|
|
|
7
7
|
stderr: string;
|
|
8
8
|
exitCode: number;
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Execute a command via SSH while streaming the local process's stdin to the
|
|
12
|
+
* remote command (the way `ssh host cmd` does). Unlike execViaSsh — which
|
|
13
|
+
* delivers the command over stdin and therefore can't also forward piped data —
|
|
14
|
+
* this passes the command as an ssh argument, leaving stdin free to stream.
|
|
15
|
+
*
|
|
16
|
+
* Side effect: the remote runs a non-login shell (`$SHELL -c <cmd>`), so it does
|
|
17
|
+
* NOT print the login banner/MOTD. `capture` controls output handling: when
|
|
18
|
+
* false (text mode) stdout/stderr are inherited for real-time, binary-safe
|
|
19
|
+
* passthrough; when true (JSON mode) they're captured and returned.
|
|
20
|
+
*/
|
|
21
|
+
export declare function execViaSshStreamStdin(conn: SshConnection, command: string, capture: boolean): {
|
|
22
|
+
stdout: string;
|
|
23
|
+
stderr: string;
|
|
24
|
+
exitCode: number;
|
|
25
|
+
};
|
|
10
26
|
/**
|
|
11
27
|
* Execute a command via SSH and stream stdout directly to a file.
|
|
12
28
|
* Useful for large outputs like database dumps.
|
|
@@ -71,6 +71,29 @@ export function execViaSsh(conn, command) {
|
|
|
71
71
|
exitCode: result.status ?? 1,
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Execute a command via SSH while streaming the local process's stdin to the
|
|
76
|
+
* remote command (the way `ssh host cmd` does). Unlike execViaSsh — which
|
|
77
|
+
* delivers the command over stdin and therefore can't also forward piped data —
|
|
78
|
+
* this passes the command as an ssh argument, leaving stdin free to stream.
|
|
79
|
+
*
|
|
80
|
+
* Side effect: the remote runs a non-login shell (`$SHELL -c <cmd>`), so it does
|
|
81
|
+
* NOT print the login banner/MOTD. `capture` controls output handling: when
|
|
82
|
+
* false (text mode) stdout/stderr are inherited for real-time, binary-safe
|
|
83
|
+
* passthrough; when true (JSON mode) they're captured and returned.
|
|
84
|
+
*/
|
|
85
|
+
export function execViaSshStreamStdin(conn, command, capture) {
|
|
86
|
+
const result = spawnSync('ssh', ['-T', ...sshArgs(conn), sshTarget(conn), command], {
|
|
87
|
+
stdio: capture ? ['inherit', 'pipe', 'pipe'] : 'inherit',
|
|
88
|
+
encoding: capture ? 'utf-8' : undefined,
|
|
89
|
+
maxBuffer: 500 * 1024 * 1024,
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
stdout: capture ? (result.stdout || '') : '',
|
|
93
|
+
stderr: capture ? (result.stderr || '') : '',
|
|
94
|
+
exitCode: result.status ?? 1,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
74
97
|
/**
|
|
75
98
|
* Execute a command via SSH and stream stdout directly to a file.
|
|
76
99
|
* Useful for large outputs like database dumps.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh-connection.js","sourceRoot":"","sources":["../../src/lib/ssh-connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssh-connection.js","sourceRoot":"","sources":["../../src/lib/ssh-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compare semver-ish versions ("0.0.1" / "0.0.1-beta.22"). Returns >0 if a>b,
|
|
3
|
+
* <0 if a<b, 0 if equal. A release outranks any prerelease of the same core
|
|
4
|
+
* (so 0.0.1 > 0.0.1-beta.22), and beta.22 > beta.9 (numeric, not string).
|
|
5
|
+
*/
|
|
6
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
7
|
+
/** Fetch the newest published version (the `latest` dist-tag). Null on any failure. */
|
|
8
|
+
export declare function fetchLatestVersion(timeoutMs?: number): Promise<string | null>;
|
|
9
|
+
/** Run `npm install -g @instawp/cli@<tag>` (inherits stdio). Returns npm's exit code. */
|
|
10
|
+
export declare function performUpgrade(versionTag?: string): number;
|
|
11
|
+
/**
|
|
12
|
+
* At most once per day, check npm for a newer version. If found, print a
|
|
13
|
+
* one-line banner to STDERR (so it never pollutes stdout/JSON), or run the
|
|
14
|
+
* upgrade automatically when INSTAWP_AUTO_UPGRADE is set. Cache hits are
|
|
15
|
+
* instant; only the daily refresh does a short, timeout-bounded network call.
|
|
16
|
+
* Never throws — a notifier must never break a real command.
|
|
17
|
+
*/
|
|
18
|
+
export declare function maybeNotifyUpdate(currentVersion: string): Promise<void>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { getUpdateCheck, setUpdateCheck } from './config.js';
|
|
3
|
+
import { isJsonMode } from './output.js';
|
|
4
|
+
const PKG = '@instawp/cli';
|
|
5
|
+
const DIST_TAGS_URL = `https://registry.npmjs.org/-/package/${PKG}/dist-tags`;
|
|
6
|
+
const CHECK_INTERVAL = 24 * 60 * 60 * 1000; // once per day
|
|
7
|
+
/**
|
|
8
|
+
* Compare semver-ish versions ("0.0.1" / "0.0.1-beta.22"). Returns >0 if a>b,
|
|
9
|
+
* <0 if a<b, 0 if equal. A release outranks any prerelease of the same core
|
|
10
|
+
* (so 0.0.1 > 0.0.1-beta.22), and beta.22 > beta.9 (numeric, not string).
|
|
11
|
+
*/
|
|
12
|
+
export function compareVersions(a, b) {
|
|
13
|
+
const parse = (v) => {
|
|
14
|
+
const [core, pre] = v.replace(/^v/, '').split('-');
|
|
15
|
+
const [maj, min, pat] = core.split('.').map((n) => parseInt(n, 10) || 0);
|
|
16
|
+
let preNum = Infinity; // no prerelease = highest
|
|
17
|
+
if (pre) {
|
|
18
|
+
const m = pre.match(/(\d+)/);
|
|
19
|
+
preNum = m ? parseInt(m[1], 10) : 0;
|
|
20
|
+
}
|
|
21
|
+
return [maj || 0, min || 0, pat || 0, preNum];
|
|
22
|
+
};
|
|
23
|
+
const pa = parse(a);
|
|
24
|
+
const pb = parse(b);
|
|
25
|
+
for (let i = 0; i < 4; i++) {
|
|
26
|
+
if (pa[i] !== pb[i])
|
|
27
|
+
return pa[i] < pb[i] ? -1 : 1;
|
|
28
|
+
}
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
/** Fetch the newest published version (the `latest` dist-tag). Null on any failure. */
|
|
32
|
+
export async function fetchLatestVersion(timeoutMs = 2500) {
|
|
33
|
+
try {
|
|
34
|
+
const ctrl = new AbortController();
|
|
35
|
+
const timer = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
36
|
+
try {
|
|
37
|
+
const res = await fetch(DIST_TAGS_URL, { signal: ctrl.signal });
|
|
38
|
+
if (!res.ok)
|
|
39
|
+
return null;
|
|
40
|
+
const tags = (await res.json());
|
|
41
|
+
return tags.latest || null;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
clearTimeout(timer);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Run `npm install -g @instawp/cli@<tag>` (inherits stdio). Returns npm's exit code. */
|
|
52
|
+
export function performUpgrade(versionTag = 'latest') {
|
|
53
|
+
const res = spawnSync('npm', ['install', '-g', `${PKG}@${versionTag}`], { stdio: 'inherit' });
|
|
54
|
+
return res.status ?? 1;
|
|
55
|
+
}
|
|
56
|
+
function suppressed() {
|
|
57
|
+
return Boolean(process.env.INSTAWP_NO_UPDATE_NOTIFIER ||
|
|
58
|
+
process.env.NO_UPDATE_NOTIFIER ||
|
|
59
|
+
process.env.CI ||
|
|
60
|
+
isJsonMode() ||
|
|
61
|
+
!process.stderr.isTTY);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* At most once per day, check npm for a newer version. If found, print a
|
|
65
|
+
* one-line banner to STDERR (so it never pollutes stdout/JSON), or run the
|
|
66
|
+
* upgrade automatically when INSTAWP_AUTO_UPGRADE is set. Cache hits are
|
|
67
|
+
* instant; only the daily refresh does a short, timeout-bounded network call.
|
|
68
|
+
* Never throws — a notifier must never break a real command.
|
|
69
|
+
*/
|
|
70
|
+
export async function maybeNotifyUpdate(currentVersion) {
|
|
71
|
+
if (suppressed())
|
|
72
|
+
return;
|
|
73
|
+
try {
|
|
74
|
+
const cache = getUpdateCheck();
|
|
75
|
+
let latest = cache?.latestVersion || '';
|
|
76
|
+
const stale = !cache || Date.now() - cache.lastCheck > CHECK_INTERVAL;
|
|
77
|
+
if (stale) {
|
|
78
|
+
const fetched = await fetchLatestVersion();
|
|
79
|
+
if (fetched) {
|
|
80
|
+
latest = fetched;
|
|
81
|
+
setUpdateCheck(fetched);
|
|
82
|
+
}
|
|
83
|
+
else if (!cache) {
|
|
84
|
+
return; // first run + offline: nothing cached to show
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (!latest || compareVersions(latest, currentVersion) <= 0)
|
|
88
|
+
return;
|
|
89
|
+
if (process.env.INSTAWP_AUTO_UPGRADE) {
|
|
90
|
+
process.stderr.write(`\nUpdating ${PKG} ${currentVersion} → ${latest}…\n`);
|
|
91
|
+
performUpgrade();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
process.stderr.write(`\n⚡ Update available: ${currentVersion} → ${latest} · run: instawp upgrade\n` +
|
|
95
|
+
` (silence with INSTAWP_NO_UPDATE_NOTIFIER=1)\n\n`);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// swallow — never let the notifier interfere with the command
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=update-notifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-notifier.js","sourceRoot":"","sources":["../../src/lib/update-notifier.ts"],"names":[],"mappings":"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"}
|