@x-ray/core
Version:
X-Ray Core
70 lines (54 loc) • 1.84 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.xRay = void 0;
var _path = _interopRequireDefault(require("path"));
var _web = require("@rebox/web");
var _prettyMs = _interopRequireDefault(require("pretty-ms"));
var _rsolve = require("rsolve");
var _constants = require("./constants");
var _run = require("./server/run");
const xRay = plugin => async files => {
const startTime = Date.now();
const status = {
ok: 0,
new: 0,
diff: 0,
deleted: 0
};
const totalResults = await plugin.getResults(files);
for (const result of totalResults.values()) {
status.ok += result.status.ok;
status.new += result.status.new;
status.diff += result.status.diff;
status.deleted += result.status.deleted;
}
console.log(`ok: ${status.ok}`);
console.log(`new: ${status.new}`);
console.log(`diff: ${status.diff}`);
console.log(`deleted: ${status.deleted}`);
console.log(`done in ${(0, _prettyMs.default)(Date.now() - startTime)}`);
if (status.new === 0 && status.diff === 0 && status.deleted === 0) {
return;
}
const savePromise = await (0, _run.runServer)({
results: totalResults,
pluginName: plugin.name,
encoding: plugin.encoding
});
const entryPointPath = await (0, _rsolve.rsolve)('@x-ray/ui', 'browser');
const htmlTemplatePath = _path.default.join(_path.default.dirname(entryPointPath), 'index.html');
const closeRebox = await (0, _web.runWebApp)({
htmlTemplatePath,
entryPointPath: plugin.appEntryPointPath,
isQuiet: true
});
console.log(`open http://${_constants.UI_HOST}:${_constants.UI_PORT}/ to approve or discard changes`);
try {
await savePromise();
} finally {
await closeRebox();
}
};
exports.xRay = xRay;