/
catch-exit-signals.js
54 lines (41 loc) · 1.58 KB
/
catch-exit-signals.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.catchExitSignals = exports.prematureEnd = void 0;
var _signalExit = _interopRequireDefault(require("signal-exit"));
var _redux = require("./redux");
var _actions = require("./redux/actions");
var _constants = require("./constants");
var _reporter = require("./reporter");
/*
* This module is used to catch if the user kills the gatsby process via cmd+c
* When this happens, there is some clean up logic we need to fire offf
*/
const interruptActivities = () => {
const {
activities
} = (0, _redux.getStore)().getState().logs;
Object.keys(activities).forEach(activityId => {
const activity = activities[activityId];
if (activity.status === _constants.ActivityStatuses.InProgress || activity.status === _constants.ActivityStatuses.NotStarted) {
_reporter.reporter.completeActivity(activityId, _constants.ActivityStatuses.Interrupted);
}
});
};
const prematureEnd = () => {
// hack so at least one activity is surely failed, so
// we are guaranteed to generate FAILED status
// if none of activity did explicitly fail
(0, _actions.createPendingActivity)({
id: `panic`,
status: _constants.ActivityStatuses.Failed
});
interruptActivities();
};
exports.prematureEnd = prematureEnd;
const catchExitSignals = () => {
(0, _signalExit.default)((code, signal) => {
if (code !== 0 && signal !== `SIGINT` && signal !== `SIGTERM`) prematureEnd();else interruptActivities();
});
};
exports.catchExitSignals = catchExitSignals;