@percy/cli-exec 1.0.0-beta.76 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/package.json +10 -9
- package/dist/common.js +0 -17
- package/dist/exec.js +0 -133
- package/dist/index.js +0 -47
- package/dist/ping.js +0 -49
- package/dist/start.js +0 -45
- package/dist/stop.js +0 -56
package/README.md
CHANGED
|
@@ -32,6 +32,7 @@ Percy options:
|
|
|
32
32
|
-c, --config <file> Config file path
|
|
33
33
|
-d, --dry-run Print snapshot names only
|
|
34
34
|
-h, --allowed-hostname <hostname> Allowed hostnames to capture in asset discovery
|
|
35
|
+
--disallowed-hostname <hostname> Disallowed hostnames to abort in asset discovery
|
|
35
36
|
-t, --network-idle-timeout <ms> Asset discovery network idle timeout
|
|
36
37
|
--disable-cache Disable asset discovery caches
|
|
37
38
|
--debug Debug asset discovery and do not upload snapshots
|
|
@@ -62,6 +63,7 @@ Percy options:
|
|
|
62
63
|
-c, --config <file> Config file path
|
|
63
64
|
-d, --dry-run Print snapshot names only
|
|
64
65
|
-h, --allowed-hostname <hostname> Allowed hostnames to capture in asset discovery
|
|
66
|
+
--disallowed-hostname <hostname> Disallowed hostnames to abort in asset discovery
|
|
65
67
|
-t, --network-idle-timeout <ms> Asset discovery network idle timeout
|
|
66
68
|
--disable-cache Disable asset discovery caches
|
|
67
69
|
--debug Debug asset discovery and do not upload snapshots
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@percy/cli-exec",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -10,13 +10,15 @@
|
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
13
|
-
"main": "dist/index.js",
|
|
14
|
-
"files": [
|
|
15
|
-
"dist"
|
|
16
|
-
],
|
|
17
13
|
"engines": {
|
|
18
|
-
"node": ">=
|
|
14
|
+
"node": ">=14"
|
|
19
15
|
},
|
|
16
|
+
"files": [
|
|
17
|
+
"./dist"
|
|
18
|
+
],
|
|
19
|
+
"main": "./dist/index.js",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"exports": "./dist/index.js",
|
|
20
22
|
"scripts": {
|
|
21
23
|
"build": "node ../../scripts/build",
|
|
22
24
|
"lint": "eslint --ignore-path ../../.gitignore .",
|
|
@@ -30,10 +32,9 @@
|
|
|
30
32
|
]
|
|
31
33
|
},
|
|
32
34
|
"dependencies": {
|
|
33
|
-
"@percy/cli-command": "1.0.0
|
|
34
|
-
"@percy/core": "1.0.0-beta.76",
|
|
35
|
+
"@percy/cli-command": "1.0.0",
|
|
35
36
|
"cross-spawn": "^7.0.3",
|
|
36
37
|
"which": "^2.0.2"
|
|
37
38
|
},
|
|
38
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "6df509421a60144e4f9f5d59dc57a5675372a0b2"
|
|
39
40
|
}
|
package/dist/common.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.flags = void 0;
|
|
7
|
-
const flags = [{
|
|
8
|
-
name: 'port',
|
|
9
|
-
description: 'Local CLI server port',
|
|
10
|
-
env: 'PERCY_SERVER_PORT',
|
|
11
|
-
percyrc: 'port',
|
|
12
|
-
type: 'number',
|
|
13
|
-
parse: Number,
|
|
14
|
-
default: 5338,
|
|
15
|
-
short: 'P'
|
|
16
|
-
}];
|
|
17
|
-
exports.flags = flags;
|
package/dist/exec.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.exec = exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
|
|
9
|
-
|
|
10
|
-
var common = _interopRequireWildcard(require("./common"));
|
|
11
|
-
|
|
12
|
-
var _start = _interopRequireDefault(require("./start"));
|
|
13
|
-
|
|
14
|
-
var _stop = _interopRequireDefault(require("./stop"));
|
|
15
|
-
|
|
16
|
-
var _ping = _interopRequireDefault(require("./ping"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
-
|
|
22
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
-
|
|
24
|
-
const exec = (0, _cliCommand.default)('exec', {
|
|
25
|
-
description: 'Start and stop Percy around a supplied command',
|
|
26
|
-
usage: '[options] -- <command>',
|
|
27
|
-
commands: [_start.default, _stop.default, _ping.default],
|
|
28
|
-
flags: [...common.flags, {
|
|
29
|
-
name: 'parallel',
|
|
30
|
-
description: 'Marks the build as one of many parallel builds',
|
|
31
|
-
parse: () => {
|
|
32
|
-
var _process$env;
|
|
33
|
-
|
|
34
|
-
return !!((_process$env = process.env).PERCY_PARALLEL_TOTAL || (_process$env.PERCY_PARALLEL_TOTAL = '-1'));
|
|
35
|
-
}
|
|
36
|
-
}, {
|
|
37
|
-
name: 'partial',
|
|
38
|
-
description: 'Marks the build as a partial build',
|
|
39
|
-
parse: () => {
|
|
40
|
-
var _process$env2;
|
|
41
|
-
|
|
42
|
-
return !!((_process$env2 = process.env).PERCY_PARTIAL_BUILD || (_process$env2.PERCY_PARTIAL_BUILD = '1'));
|
|
43
|
-
}
|
|
44
|
-
}],
|
|
45
|
-
examples: ['$0 -- echo "percy is running around this echo command"', '$0 -- yarn test'],
|
|
46
|
-
loose: ['Warning: Missing command separator (--),', 'some command options may not work as expected'].join(' '),
|
|
47
|
-
percy: {
|
|
48
|
-
server: true
|
|
49
|
-
}
|
|
50
|
-
}, async function* ({
|
|
51
|
-
flags,
|
|
52
|
-
argv,
|
|
53
|
-
env,
|
|
54
|
-
percy,
|
|
55
|
-
log,
|
|
56
|
-
exit
|
|
57
|
-
}) {
|
|
58
|
-
let [command, ...args] = argv; // command is required
|
|
59
|
-
|
|
60
|
-
if (!command) {
|
|
61
|
-
log.error("You must supply a command to run after '--'");
|
|
62
|
-
log.info('Example:');
|
|
63
|
-
log.info(' $ percy exec -- npm test');
|
|
64
|
-
exit(1);
|
|
65
|
-
} // verify the provided command exists
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
let which = await Promise.resolve().then(() => _interopRequireWildcard(require('which')));
|
|
69
|
-
|
|
70
|
-
if (!which.sync(command, {
|
|
71
|
-
nothrow: true
|
|
72
|
-
})) {
|
|
73
|
-
exit(127, `Command not found "${command}"`);
|
|
74
|
-
} // attempt to start percy if enabled
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (!percy) {
|
|
78
|
-
log.warn('Percy is disabled');
|
|
79
|
-
} else {
|
|
80
|
-
try {
|
|
81
|
-
yield* percy.start();
|
|
82
|
-
} catch (error) {
|
|
83
|
-
if (error.canceled) throw error;
|
|
84
|
-
log.warn('Skipping visual tests');
|
|
85
|
-
log.error(error);
|
|
86
|
-
}
|
|
87
|
-
} // provide SDKs with useful env vars
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
env.PERCY_SERVER_ADDRESS = percy === null || percy === void 0 ? void 0 : percy.address();
|
|
91
|
-
env.PERCY_LOGLEVEL = log.loglevel(); // run the provided command
|
|
92
|
-
|
|
93
|
-
log.info(`Running "${[command, ...args].join(' ')}"`);
|
|
94
|
-
let [status, error] = yield* spawn(command, args); // stop percy if running (force stop if there is an error);
|
|
95
|
-
|
|
96
|
-
await (percy === null || percy === void 0 ? void 0 : percy.stop(!!error)); // forward any returned status code
|
|
97
|
-
|
|
98
|
-
if (status) exit(status, error);
|
|
99
|
-
}); // Spawn a command with cross-spawn and return an array containing the resulting status code along
|
|
100
|
-
// with any error encountered while running. Uses a generator pattern to handle interupt signals.
|
|
101
|
-
|
|
102
|
-
exports.exec = exec;
|
|
103
|
-
|
|
104
|
-
async function* spawn(cmd, args) {
|
|
105
|
-
let {
|
|
106
|
-
default: crossSpawn
|
|
107
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('cross-spawn')));
|
|
108
|
-
let proc, closed, error;
|
|
109
|
-
|
|
110
|
-
try {
|
|
111
|
-
proc = crossSpawn(cmd, args, {
|
|
112
|
-
stdio: 'inherit'
|
|
113
|
-
});
|
|
114
|
-
proc.on('close', code => closed = code);
|
|
115
|
-
proc.on('error', err => error = err); // run until an event is triggered
|
|
116
|
-
|
|
117
|
-
/* eslint-disable-next-line no-unmodified-loop-condition */
|
|
118
|
-
|
|
119
|
-
while (closed == null && error == null) {
|
|
120
|
-
yield new Promise(r => setImmediate(r));
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (error) throw error;
|
|
124
|
-
return [closed];
|
|
125
|
-
} catch (err) {
|
|
126
|
-
if (!err.signal) return [1, err];
|
|
127
|
-
proc.kill(err.signal);
|
|
128
|
-
return [0, err];
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
var _default = exec;
|
|
133
|
-
exports.default = _default;
|
package/dist/index.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "default", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _exec.default;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "exec", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
return _exec.exec;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "ping", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () {
|
|
21
|
-
return _ping.ping;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "start", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () {
|
|
27
|
-
return _start.start;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "stop", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _stop.stop;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
var _exec = _interopRequireWildcard(require("./exec"));
|
|
38
|
-
|
|
39
|
-
var _start = require("./start");
|
|
40
|
-
|
|
41
|
-
var _stop = require("./stop");
|
|
42
|
-
|
|
43
|
-
var _ping = require("./ping");
|
|
44
|
-
|
|
45
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
46
|
-
|
|
47
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
package/dist/ping.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ping = exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
|
|
9
|
-
|
|
10
|
-
var common = _interopRequireWildcard(require("./common"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
-
|
|
16
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
-
|
|
18
|
-
const ping = (0, _cliCommand.default)('ping', {
|
|
19
|
-
description: 'Pings a local running Percy snapshot server',
|
|
20
|
-
flags: common.flags,
|
|
21
|
-
percy: true
|
|
22
|
-
}, async ({
|
|
23
|
-
flags,
|
|
24
|
-
percy,
|
|
25
|
-
log,
|
|
26
|
-
exit
|
|
27
|
-
}) => {
|
|
28
|
-
if (!percy) exit(0, 'Percy is disabled');
|
|
29
|
-
let {
|
|
30
|
-
request
|
|
31
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('@percy/core/dist/utils')));
|
|
32
|
-
let ping = `http://localhost:${flags.port}/percy/healthcheck`;
|
|
33
|
-
|
|
34
|
-
try {
|
|
35
|
-
await request(ping, {
|
|
36
|
-
retryNotFound: true,
|
|
37
|
-
noProxy: true
|
|
38
|
-
});
|
|
39
|
-
} catch (err) {
|
|
40
|
-
log.error('Percy is not running');
|
|
41
|
-
log.debug(err);
|
|
42
|
-
exit(1);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
log.info('Percy is running');
|
|
46
|
-
});
|
|
47
|
-
exports.ping = ping;
|
|
48
|
-
var _default = ping;
|
|
49
|
-
exports.default = _default;
|
package/dist/start.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.start = exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
|
|
9
|
-
|
|
10
|
-
var common = _interopRequireWildcard(require("./common"));
|
|
11
|
-
|
|
12
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
-
|
|
14
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
const start = (0, _cliCommand.default)('start', {
|
|
19
|
-
description: 'Starts a local Percy snapshot server',
|
|
20
|
-
flags: common.flags,
|
|
21
|
-
examples: ['$0 &> percy.log'],
|
|
22
|
-
percy: {
|
|
23
|
-
server: true
|
|
24
|
-
}
|
|
25
|
-
}, async function* ({
|
|
26
|
-
percy,
|
|
27
|
-
exit
|
|
28
|
-
}) {
|
|
29
|
-
if (!percy) exit(0, 'Percy is disabled'); // start percy
|
|
30
|
-
|
|
31
|
-
yield* percy.start();
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
// run until stopped or terminated
|
|
35
|
-
while (percy.readyState < 3) {
|
|
36
|
-
yield new Promise(r => setImmediate(r));
|
|
37
|
-
}
|
|
38
|
-
} catch (error) {
|
|
39
|
-
await percy.stop(true);
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
exports.start = start;
|
|
44
|
-
var _default = start;
|
|
45
|
-
exports.default = _default;
|
package/dist/stop.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.stop = exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _cliCommand = _interopRequireDefault(require("@percy/cli-command"));
|
|
9
|
-
|
|
10
|
-
var common = _interopRequireWildcard(require("./common"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
-
|
|
16
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
-
|
|
18
|
-
const stop = (0, _cliCommand.default)('stop', {
|
|
19
|
-
description: 'Stops a local running Percy snapshot server',
|
|
20
|
-
flags: common.flags,
|
|
21
|
-
percy: true
|
|
22
|
-
}, async ({
|
|
23
|
-
flags,
|
|
24
|
-
percy,
|
|
25
|
-
log,
|
|
26
|
-
exit
|
|
27
|
-
}) => {
|
|
28
|
-
if (!percy) exit(0, 'Percy is disabled');
|
|
29
|
-
let {
|
|
30
|
-
request
|
|
31
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('@percy/core/dist/utils')));
|
|
32
|
-
let stop = `http://localhost:${flags.port}/percy/stop`;
|
|
33
|
-
let ping = `http://localhost:${flags.port}/percy/healthcheck`;
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
await request(stop, {
|
|
37
|
-
method: 'POST',
|
|
38
|
-
noProxy: true
|
|
39
|
-
});
|
|
40
|
-
} catch (err) {
|
|
41
|
-
log.error('Percy is not running');
|
|
42
|
-
log.debug(err);
|
|
43
|
-
exit(1);
|
|
44
|
-
} // retry heathcheck until it fails
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
await new Promise(function check(resolve) {
|
|
48
|
-
return request(ping, {
|
|
49
|
-
noProxy: true
|
|
50
|
-
}).then(() => setTimeout(check, 100, resolve)).catch(resolve);
|
|
51
|
-
});
|
|
52
|
-
log.info('Percy has stopped');
|
|
53
|
-
});
|
|
54
|
-
exports.stop = stop;
|
|
55
|
-
var _default = stop;
|
|
56
|
-
exports.default = _default;
|