@percy/cli-exec 1.0.0-beta.9 → 1.0.2

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 CHANGED
@@ -1,87 +1,116 @@
1
1
  # @percy/cli-exec
2
2
 
3
- Percy CLI commands for running a local snapshot server using `@percy/core`.
3
+ Percy CLI commands for running a local snapshot server using [`@percy/core`](./packages/core).
4
4
 
5
5
  ## Commands
6
6
  <!-- commands -->
7
7
  * [`percy exec`](#percy-exec)
8
- * [`percy exec:ping`](#percy-execping)
9
8
  * [`percy exec:start`](#percy-execstart)
10
9
  * [`percy exec:stop`](#percy-execstop)
10
+ * [`percy exec:ping`](#percy-execping)
11
11
 
12
- ## `percy exec`
12
+ ### `percy exec`
13
13
 
14
14
  Start and stop Percy around a supplied command
15
15
 
16
16
  ```
17
- USAGE
18
- $ percy exec
19
-
20
- OPTIONS
21
- -c, --config=config configuration file path
22
- -h, --allowed-hostname=allowed-hostname allowed hostnames
23
- -p, --port=port [default: 5338] server port
24
- -q, --quiet log errors only
25
- -t, --network-idle-timeout=network-idle-timeout asset discovery idle timeout
26
- -v, --verbose log everything
27
- --disable-asset-cache disable asset discovery caches
28
- --silent log nothing
29
-
30
- EXAMPLES
17
+ Usage:
18
+ $ percy exec [options] -- <command>
19
+
20
+ Subcommands:
21
+ exec:start [options] Starts a local Percy snapshot server
22
+ exec:stop [options] Stops a local running Percy snapshot server
23
+ exec:ping [options] Pings a local running Percy snapshot server
24
+ help [command] Display command help
25
+
26
+ Options:
27
+ -P, --port [number] Local CLI server port (default: 5338)
28
+ --parallel Marks the build as one of many parallel builds
29
+ --partial Marks the build as a partial build
30
+
31
+ Percy options:
32
+ -c, --config <file> Config file path
33
+ -d, --dry-run Print snapshot names only
34
+ -h, --allowed-hostname <hostname> Allowed hostnames to capture in asset discovery
35
+ --disallowed-hostname <hostname> Disallowed hostnames to abort in asset discovery
36
+ -t, --network-idle-timeout <ms> Asset discovery network idle timeout
37
+ --disable-cache Disable asset discovery caches
38
+ --debug Debug asset discovery and do not upload snapshots
39
+
40
+ Global options:
41
+ -v, --verbose Log everything
42
+ -q, --quiet Log errors only
43
+ -s, --silent Log nothing
44
+ --help Display command help
45
+
46
+ Examples:
31
47
  $ percy exec -- echo "percy is running around this echo command"
32
48
  $ percy exec -- yarn test
33
49
  ```
34
50
 
35
- ## `percy exec:ping`
51
+ ### `percy exec:start`
36
52
 
37
- Pings a local running Percy snapshot server
53
+ Starts a local Percy snapshot server
38
54
 
39
55
  ```
40
- USAGE
41
- $ percy exec:ping
42
-
43
- OPTIONS
44
- -p, --port=port [default: 5338] server port
45
- -q, --quiet log errors only
46
- -v, --verbose log everything
47
- --silent log nothing
56
+ Usage:
57
+ $ percy exec:start [options]
58
+
59
+ Options:
60
+ -P, --port [number] Local CLI server port (default: 5338)
61
+
62
+ Percy options:
63
+ -c, --config <file> Config file path
64
+ -d, --dry-run Print snapshot names only
65
+ -h, --allowed-hostname <hostname> Allowed hostnames to capture in asset discovery
66
+ --disallowed-hostname <hostname> Disallowed hostnames to abort in asset discovery
67
+ -t, --network-idle-timeout <ms> Asset discovery network idle timeout
68
+ --disable-cache Disable asset discovery caches
69
+ --debug Debug asset discovery and do not upload snapshots
70
+
71
+ Global options:
72
+ -v, --verbose Log everything
73
+ -q, --quiet Log errors only
74
+ -s, --silent Log nothing
75
+ --help Display command help
76
+
77
+ Examples:
78
+ $ percy exec:start &> percy.log
48
79
  ```
49
80
 
50
- ## `percy exec:start`
81
+ ### `percy exec:stop`
51
82
 
52
- Starts a local Percy snapshot server
83
+ Stops a local running Percy snapshot server
53
84
 
54
85
  ```
55
- USAGE
56
- $ percy exec:start
57
-
58
- OPTIONS
59
- -c, --config=config configuration file path
60
- -h, --allowed-hostname=allowed-hostname allowed hostnames
61
- -p, --port=port [default: 5338] server port
62
- -q, --quiet log errors only
63
- -t, --network-idle-timeout=network-idle-timeout asset discovery idle timeout
64
- -v, --verbose log everything
65
- --disable-asset-cache disable asset discovery caches
66
- --silent log nothing
67
-
68
- EXAMPLES
69
- $ percy exec:start
70
- $ percy exec:start &> percy.log
86
+ Usage:
87
+ $ percy exec:stop [options]
88
+
89
+ Options:
90
+ -P, --port [number] Local CLI server port (default: 5338)
91
+
92
+ Global options:
93
+ -v, --verbose Log everything
94
+ -q, --quiet Log errors only
95
+ -s, --silent Log nothing
96
+ -h, --help Display command help
71
97
  ```
72
98
 
73
- ## `percy exec:stop`
99
+ ### `percy exec:ping`
74
100
 
75
- Stops a local running Percy snapshot server
101
+ Pings a local running Percy snapshot server
76
102
 
77
103
  ```
78
- USAGE
79
- $ percy exec:stop
80
-
81
- OPTIONS
82
- -p, --port=port [default: 5338] server port
83
- -q, --quiet log errors only
84
- -v, --verbose log everything
85
- --silent log nothing
104
+ Usage:
105
+ $ percy exec:ping [options]
106
+
107
+ Options:
108
+ -P, --port [number] Local CLI server port (default: 5338)
109
+
110
+ Global options:
111
+ -v, --verbose Log everything
112
+ -q, --quiet Log errors only
113
+ -s, --silent Log nothing
114
+ -h, --help Display command help
86
115
  ```
87
116
  <!-- commandsstop -->
package/dist/common.js ADDED
@@ -0,0 +1,10 @@
1
+ export const flags = [{
2
+ name: 'port',
3
+ description: 'Local CLI server port',
4
+ env: 'PERCY_SERVER_PORT',
5
+ percyrc: 'port',
6
+ type: 'number',
7
+ parse: Number,
8
+ default: 5338,
9
+ short: 'P'
10
+ }];
package/dist/exec.js ADDED
@@ -0,0 +1,114 @@
1
+ import command from '@percy/cli-command';
2
+ import * as common from './common.js';
3
+ import start from './start.js';
4
+ import stop from './stop.js';
5
+ import ping from './ping.js';
6
+ export const exec = command('exec', {
7
+ description: 'Start and stop Percy around a supplied command',
8
+ usage: '[options] -- <command>',
9
+ commands: [start, stop, ping],
10
+ flags: [...common.flags, {
11
+ name: 'parallel',
12
+ description: 'Marks the build as one of many parallel builds',
13
+ parse: () => {
14
+ var _process$env;
15
+
16
+ return !!((_process$env = process.env).PERCY_PARALLEL_TOTAL || (_process$env.PERCY_PARALLEL_TOTAL = '-1'));
17
+ }
18
+ }, {
19
+ name: 'partial',
20
+ description: 'Marks the build as a partial build',
21
+ parse: () => {
22
+ var _process$env2;
23
+
24
+ return !!((_process$env2 = process.env).PERCY_PARTIAL_BUILD || (_process$env2.PERCY_PARTIAL_BUILD = '1'));
25
+ }
26
+ }],
27
+ examples: ['$0 -- echo "percy is running around this echo command"', '$0 -- yarn test'],
28
+ loose: ['Warning: Missing command separator (--),', 'some command options may not work as expected'].join(' '),
29
+ percy: {
30
+ server: true
31
+ }
32
+ }, async function* ({
33
+ flags,
34
+ argv,
35
+ env,
36
+ percy,
37
+ log,
38
+ exit
39
+ }) {
40
+ let [command, ...args] = argv; // command is required
41
+
42
+ if (!command) {
43
+ log.error("You must supply a command to run after '--'");
44
+ log.info('Example:');
45
+ log.info(' $ percy exec -- npm test');
46
+ exit(1);
47
+ } // verify the provided command exists
48
+
49
+
50
+ let {
51
+ default: which
52
+ } = await import('which');
53
+
54
+ if (!which.sync(command, {
55
+ nothrow: true
56
+ })) {
57
+ exit(127, `Command not found "${command}"`);
58
+ } // attempt to start percy if enabled
59
+
60
+
61
+ if (!percy) {
62
+ log.warn('Percy is disabled');
63
+ } else {
64
+ try {
65
+ yield* percy.yield.start();
66
+ } catch (error) {
67
+ if (error.canceled) throw error;
68
+ log.warn('Skipping visual tests');
69
+ log.error(error);
70
+ }
71
+ } // provide SDKs with useful env vars
72
+
73
+
74
+ env.PERCY_SERVER_ADDRESS = percy === null || percy === void 0 ? void 0 : percy.address();
75
+ env.PERCY_LOGLEVEL = log.loglevel(); // run the provided command
76
+
77
+ log.info(`Running "${[command, ...args].join(' ')}"`);
78
+ let [status, error] = yield* spawn(command, args); // stop percy if running (force stop if there is an error);
79
+
80
+ await (percy === null || percy === void 0 ? void 0 : percy.stop(!!error)); // forward any returned status code
81
+
82
+ if (status) exit(status, error);
83
+ }); // Spawn a command with cross-spawn and return an array containing the resulting status code along
84
+ // with any error encountered while running. Uses a generator pattern to handle interupt signals.
85
+
86
+ async function* spawn(cmd, args) {
87
+ let {
88
+ default: crossSpawn
89
+ } = await import('cross-spawn');
90
+ let proc, closed, error;
91
+
92
+ try {
93
+ proc = crossSpawn(cmd, args, {
94
+ stdio: 'inherit'
95
+ });
96
+ proc.on('close', code => closed = code);
97
+ proc.on('error', err => error = err); // run until an event is triggered
98
+
99
+ /* eslint-disable-next-line no-unmodified-loop-condition */
100
+
101
+ while (closed == null && error == null) {
102
+ yield new Promise(r => setImmediate(r));
103
+ }
104
+
105
+ if (error) throw error;
106
+ return [closed];
107
+ } catch (err) {
108
+ if (!err.signal) return [1, err];
109
+ proc.kill(err.signal);
110
+ return [0, err];
111
+ }
112
+ }
113
+
114
+ export default exec;
package/dist/index.js CHANGED
@@ -1,8 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = {};
8
- exports.default = _default;
1
+ export { default, exec } from './exec.js';
2
+ export { start } from './start.js';
3
+ export { stop } from './stop.js';
4
+ export { ping } from './ping.js';
package/dist/ping.js ADDED
@@ -0,0 +1,32 @@
1
+ import command from '@percy/cli-command';
2
+ import * as common from './common.js';
3
+ export const ping = command('ping', {
4
+ description: 'Pings a local running Percy snapshot server',
5
+ flags: common.flags,
6
+ percy: true
7
+ }, async ({
8
+ flags,
9
+ percy,
10
+ log,
11
+ exit
12
+ }) => {
13
+ if (!percy) exit(0, 'Percy is disabled');
14
+ let {
15
+ request
16
+ } = await import('@percy/cli-command/utils');
17
+ let ping = `http://localhost:${flags.port}/percy/healthcheck`;
18
+
19
+ try {
20
+ await request(ping, {
21
+ retryNotFound: true,
22
+ noProxy: true
23
+ });
24
+ } catch (err) {
25
+ log.error('Percy is not running');
26
+ log.debug(err);
27
+ exit(1);
28
+ }
29
+
30
+ log.info('Percy is running');
31
+ });
32
+ export default ping;
package/dist/start.js ADDED
@@ -0,0 +1,28 @@
1
+ import command from '@percy/cli-command';
2
+ import * as common from './common.js';
3
+ export const start = command('start', {
4
+ description: 'Starts a local Percy snapshot server',
5
+ flags: common.flags,
6
+ examples: ['$0 &> percy.log'],
7
+ percy: {
8
+ server: true
9
+ }
10
+ }, async function* ({
11
+ percy,
12
+ exit
13
+ }) {
14
+ if (!percy) exit(0, 'Percy is disabled'); // start percy
15
+
16
+ yield* percy.yield.start();
17
+
18
+ try {
19
+ // run until stopped or terminated
20
+ while (percy.readyState < 3) {
21
+ yield new Promise(r => setImmediate(r));
22
+ }
23
+ } catch (error) {
24
+ await percy.stop(true);
25
+ throw error;
26
+ }
27
+ });
28
+ export default start;
package/dist/stop.js ADDED
@@ -0,0 +1,39 @@
1
+ import command from '@percy/cli-command';
2
+ import * as common from './common.js';
3
+ export const stop = command('stop', {
4
+ description: 'Stops a local running Percy snapshot server',
5
+ flags: common.flags,
6
+ percy: true
7
+ }, async ({
8
+ flags,
9
+ percy,
10
+ log,
11
+ exit
12
+ }) => {
13
+ if (!percy) exit(0, 'Percy is disabled');
14
+ let {
15
+ request
16
+ } = await import('@percy/cli-command/utils');
17
+ let stop = `http://localhost:${flags.port}/percy/stop`;
18
+ let ping = `http://localhost:${flags.port}/percy/healthcheck`;
19
+
20
+ try {
21
+ await request(stop, {
22
+ method: 'POST',
23
+ noProxy: true
24
+ });
25
+ } catch (err) {
26
+ log.error('Percy is not running');
27
+ log.debug(err);
28
+ exit(1);
29
+ } // retry heathcheck until it fails
30
+
31
+
32
+ await new Promise(function check(resolve) {
33
+ return request(ping, {
34
+ noProxy: true
35
+ }).then(() => setTimeout(check, 100, resolve)).catch(resolve);
36
+ });
37
+ log.info('Percy has stopped');
38
+ });
39
+ export default stop;
package/package.json CHANGED
@@ -1,44 +1,40 @@
1
1
  {
2
2
  "name": "@percy/cli-exec",
3
- "description": "capture and upload snapshots",
4
- "version": "1.0.0-beta.9",
3
+ "version": "1.0.2",
5
4
  "license": "MIT",
6
- "main": "dist/index.js",
7
- "files": [
8
- "dist",
9
- "oclif.manifest.json"
10
- ],
11
- "scripts": {
12
- "build": "babel --root-mode upward src --out-dir dist",
13
- "lint": "eslint --ignore-path ../../.gitignore .",
14
- "postbuild": "oclif-dev manifest",
15
- "readme": "oclif-dev readme",
16
- "pretest": "node ../../scripts/install-browser",
17
- "test": "cross-env NODE_ENV=test mocha",
18
- "test:coverage": "nyc yarn test"
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/percy/cli",
8
+ "directory": "packages/cli-exec"
19
9
  },
20
10
  "publishConfig": {
21
11
  "access": "public"
22
12
  },
23
- "mocha": {
24
- "require": "../../scripts/babel-register",
25
- "timeout": 10000
13
+ "engines": {
14
+ "node": ">=14"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "main": "./dist/index.js",
20
+ "type": "module",
21
+ "exports": "./dist/index.js",
22
+ "scripts": {
23
+ "build": "node ../../scripts/build",
24
+ "lint": "eslint --ignore-path ../../.gitignore .",
25
+ "readme": "percy-cli-readme",
26
+ "test": "node ../../scripts/test",
27
+ "test:coverage": "yarn test --coverage"
26
28
  },
27
- "oclif": {
28
- "bin": "percy",
29
- "commands": "./dist/commands",
30
- "topics": {
31
- "exec": {
32
- "description": "capture and upload snapshots"
33
- }
34
- }
29
+ "@percy/cli": {
30
+ "commands": [
31
+ "./dist/exec.js"
32
+ ]
35
33
  },
36
34
  "dependencies": {
37
- "@percy/cli-command": "^1.0.0-beta.9",
38
- "@percy/core": "^1.0.0-beta.9",
39
- "@percy/logger": "^1.0.0-beta.9",
40
- "cross-spawn": "^7.0.1",
35
+ "@percy/cli-command": "1.0.2",
36
+ "cross-spawn": "^7.0.3",
41
37
  "which": "^2.0.2"
42
38
  },
43
- "gitHead": "57a2eeb90c7f5cdf8827c78be1e5c12df581f4b5"
39
+ "gitHead": "7288764b8088e444e853d5d78756959e46516dc7"
44
40
  }
@@ -1,107 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Exec = void 0;
7
-
8
- var _cliCommand = _interopRequireWildcard(require("@percy/cli-command"));
9
-
10
- var _core = _interopRequireDefault(require("@percy/core"));
11
-
12
- var _logger = _interopRequireDefault(require("@percy/logger"));
13
-
14
- var _crossSpawn = _interopRequireDefault(require("cross-spawn"));
15
-
16
- var _which = _interopRequireDefault(require("which"));
17
-
18
- var _flags = _interopRequireDefault(require("../../flags"));
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
23
-
24
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
25
-
26
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
-
28
- class Exec extends _cliCommand.default {
29
- async run() {
30
- var _this$percy;
31
-
32
- let {
33
- argv
34
- } = this.parse(Exec);
35
- let command = argv.shift(); // validate the passed command
36
-
37
- if (!command) {
38
- _logger.default.error('You must supply a command to run after --');
39
-
40
- _logger.default.info('Example:');
41
-
42
- _logger.default.info('$ percy exec -- echo "run your test suite"');
43
-
44
- return this.exit(1);
45
- } else if (!_which.default.sync(command, {
46
- nothrow: true
47
- })) {
48
- _logger.default.error(`Error: command not found "${command}"`);
49
-
50
- return this.exit(127);
51
- } // attempt to start percy if enabled
52
-
53
-
54
- if (this.isPercyEnabled()) {
55
- try {
56
- this.percy = await _core.default.start({
57
- port: this.flags.port,
58
- config: false,
59
- ...this.percyrc()
60
- });
61
- } catch (err) {
62
- _logger.default.info(`Skipping visual tests - ${err.message}`);
63
- }
64
-
65
- _logger.default.info(`Running "${[command].concat(argv).join(' ')}"`);
66
- } // provide SDKs with useful env vars
67
-
68
-
69
- let env = { ...process.env,
70
- PERCY_CLI_API: (_this$percy = this.percy) === null || _this$percy === void 0 ? void 0 : _this$percy.apiAddress(),
71
- PERCY_LOGLEVEL: _logger.default.loglevel()
72
- }; // run the passed command async
73
-
74
- let status = await new Promise((resolve, reject) => {
75
- (0, _crossSpawn.default)(command, argv, {
76
- stdio: 'inherit',
77
- env
78
- }).on('error', reject).on('close', resolve);
79
- }); // forward status code
80
-
81
- if (status) {
82
- this.exit(status);
83
- }
84
- } // Called on error, interupt, or after running
85
-
86
-
87
- async finally() {
88
- var _this$percy2;
89
-
90
- await ((_this$percy2 = this.percy) === null || _this$percy2 === void 0 ? void 0 : _this$percy2.stop());
91
- }
92
-
93
- }
94
-
95
- exports.Exec = Exec;
96
-
97
- _defineProperty(Exec, "description", 'Start and stop Percy around a supplied command');
98
-
99
- _defineProperty(Exec, "strict", false);
100
-
101
- _defineProperty(Exec, "flags", { ..._cliCommand.flags.logging,
102
- ..._cliCommand.flags.discovery,
103
- ..._cliCommand.flags.config,
104
- ..._flags.default
105
- });
106
-
107
- _defineProperty(Exec, "examples", ['$ percy exec -- echo "percy is running around this echo command"', '$ percy exec -- yarn test']);
@@ -1,52 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Ping = void 0;
7
-
8
- var _cliCommand = _interopRequireWildcard(require("@percy/cli-command"));
9
-
10
- var _utils = require("@percy/client/dist/utils");
11
-
12
- var _logger = _interopRequireDefault(require("@percy/logger"));
13
-
14
- var _flags = _interopRequireDefault(require("../../flags"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
19
-
20
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
21
-
22
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
-
24
- class Ping extends _cliCommand.default {
25
- async run() {
26
- try {
27
- let {
28
- port
29
- } = this.flags;
30
- await (0, _utils.request)(`http://localhost:${port}/percy/healthcheck`, {
31
- method: 'GET'
32
- });
33
-
34
- _logger.default.info('Percy is running');
35
- } catch (err) {
36
- _logger.default.error('Percy is not running');
37
-
38
- _logger.default.debug(err);
39
-
40
- this.exit(1);
41
- }
42
- }
43
-
44
- }
45
-
46
- exports.Ping = Ping;
47
-
48
- _defineProperty(Ping, "description", 'Pings a local running Percy snapshot server');
49
-
50
- _defineProperty(Ping, "flags", { ..._cliCommand.flags.logging,
51
- ..._flags.default
52
- });
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Start = void 0;
7
-
8
- var _cliCommand = _interopRequireWildcard(require("@percy/cli-command"));
9
-
10
- var _core = _interopRequireDefault(require("@percy/core"));
11
-
12
- var _logger = _interopRequireDefault(require("@percy/logger"));
13
-
14
- var _flags = _interopRequireDefault(require("../../flags"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
19
-
20
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
21
-
22
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
-
24
- class Start extends _cliCommand.default {
25
- async run() {
26
- if (!this.isPercyEnabled()) {
27
- _logger.default.info('Percy has been disabled. Not starting');
28
-
29
- return;
30
- }
31
-
32
- let percy = await _core.default.start({
33
- port: this.flags.port,
34
- config: false,
35
- ...this.percyrc()
36
- }); // only stop when terminated
37
-
38
- let stop = () => percy.stop();
39
-
40
- process.on('SIGHUP', stop);
41
- process.on('SIGINT', stop);
42
- process.on('SIGTERM', stop);
43
- }
44
-
45
- }
46
-
47
- exports.Start = Start;
48
-
49
- _defineProperty(Start, "description", 'Starts a local Percy snapshot server');
50
-
51
- _defineProperty(Start, "flags", { ..._cliCommand.flags.logging,
52
- ..._cliCommand.flags.discovery,
53
- ..._cliCommand.flags.config,
54
- ..._flags.default
55
- });
56
-
57
- _defineProperty(Start, "examples", ['$ percy exec:start', '$ percy exec:start &> percy.log']);
@@ -1,58 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Stop = void 0;
7
-
8
- var _cliCommand = _interopRequireWildcard(require("@percy/cli-command"));
9
-
10
- var _utils = require("@percy/client/dist/utils");
11
-
12
- var _logger = _interopRequireDefault(require("@percy/logger"));
13
-
14
- var _flags = _interopRequireDefault(require("../../flags"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
19
-
20
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
21
-
22
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
-
24
- class Stop extends _cliCommand.default {
25
- async run() {
26
- if (!this.isPercyEnabled()) {
27
- _logger.default.info('Percy is disabled');
28
-
29
- return;
30
- }
31
-
32
- try {
33
- let {
34
- port
35
- } = this.flags;
36
- await (0, _utils.request)(`http://localhost:${port}/percy/stop`, {
37
- method: 'POST'
38
- });
39
-
40
- _logger.default.info('Percy has stopped');
41
- } catch (err) {
42
- _logger.default.error('Percy is not running');
43
-
44
- _logger.default.debug(err);
45
-
46
- this.exit(1);
47
- }
48
- }
49
-
50
- }
51
-
52
- exports.Stop = Stop;
53
-
54
- _defineProperty(Stop, "description", 'Stops a local running Percy snapshot server');
55
-
56
- _defineProperty(Stop, "flags", { ..._cliCommand.flags.logging,
57
- ..._flags.default
58
- });
package/dist/flags.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _cliCommand = require("@percy/cli-command");
9
-
10
- var _default = {
11
- port: _cliCommand.flags.integer({
12
- char: 'p',
13
- description: 'server port',
14
- default: process.env.PERCY_CLI_PORT || 5338
15
- })
16
- };
17
- exports.default = _default;
@@ -1 +0,0 @@
1
- {"version":"1.0.0-beta.9","commands":{"exec":{"id":"exec","description":"Start and stop Percy around a supplied command","pluginName":"@percy/cli-exec","pluginType":"core","aliases":[],"examples":["$ percy exec -- echo \"percy is running around this echo command\"","$ percy exec -- yarn test"],"flags":{"verbose":{"name":"verbose","type":"boolean","char":"v","description":"log everything","allowNo":false},"quiet":{"name":"quiet","type":"boolean","char":"q","description":"log errors only","allowNo":false},"silent":{"name":"silent","type":"boolean","description":"log nothing","allowNo":false},"allowed-hostname":{"name":"allowed-hostname","type":"option","char":"h","description":"allowed hostnames"},"network-idle-timeout":{"name":"network-idle-timeout","type":"option","char":"t","description":"asset discovery idle timeout"},"disable-asset-cache":{"name":"disable-asset-cache","type":"boolean","description":"disable asset discovery caches","allowNo":false},"config":{"name":"config","type":"option","char":"c","description":"configuration file path"},"port":{"name":"port","type":"option","char":"p","description":"server port","default":5338}},"args":[]},"exec:ping":{"id":"exec:ping","description":"Pings a local running Percy snapshot server","pluginName":"@percy/cli-exec","pluginType":"core","aliases":[],"flags":{"verbose":{"name":"verbose","type":"boolean","char":"v","description":"log everything","allowNo":false},"quiet":{"name":"quiet","type":"boolean","char":"q","description":"log errors only","allowNo":false},"silent":{"name":"silent","type":"boolean","description":"log nothing","allowNo":false},"port":{"name":"port","type":"option","char":"p","description":"server port","default":5338}},"args":[]},"exec:start":{"id":"exec:start","description":"Starts a local Percy snapshot server","pluginName":"@percy/cli-exec","pluginType":"core","aliases":[],"examples":["$ percy exec:start","$ percy exec:start &> percy.log"],"flags":{"verbose":{"name":"verbose","type":"boolean","char":"v","description":"log everything","allowNo":false},"quiet":{"name":"quiet","type":"boolean","char":"q","description":"log errors only","allowNo":false},"silent":{"name":"silent","type":"boolean","description":"log nothing","allowNo":false},"allowed-hostname":{"name":"allowed-hostname","type":"option","char":"h","description":"allowed hostnames"},"network-idle-timeout":{"name":"network-idle-timeout","type":"option","char":"t","description":"asset discovery idle timeout"},"disable-asset-cache":{"name":"disable-asset-cache","type":"boolean","description":"disable asset discovery caches","allowNo":false},"config":{"name":"config","type":"option","char":"c","description":"configuration file path"},"port":{"name":"port","type":"option","char":"p","description":"server port","default":5338}},"args":[]},"exec:stop":{"id":"exec:stop","description":"Stops a local running Percy snapshot server","pluginName":"@percy/cli-exec","pluginType":"core","aliases":[],"flags":{"verbose":{"name":"verbose","type":"boolean","char":"v","description":"log everything","allowNo":false},"quiet":{"name":"quiet","type":"boolean","char":"q","description":"log errors only","allowNo":false},"silent":{"name":"silent","type":"boolean","description":"log nothing","allowNo":false},"port":{"name":"port","type":"option","char":"p","description":"server port","default":5338}},"args":[]}}}