69 lines
2.5 KiB
JavaScript
Executable File
69 lines
2.5 KiB
JavaScript
Executable File
"use strict";
|
|
/**
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.subscribeToWorkflow = void 0;
|
|
const core_1 = require("@angular-devkit/core");
|
|
const color_1 = require("../../utilities/color");
|
|
function subscribeToWorkflow(workflow, logger) {
|
|
const files = new Set();
|
|
let error = false;
|
|
let logs = [];
|
|
const reporterSubscription = workflow.reporter.subscribe((event) => {
|
|
// Strip leading slash to prevent confusion.
|
|
const eventPath = event.path.charAt(0) === '/' ? event.path.substring(1) : event.path;
|
|
switch (event.kind) {
|
|
case 'error':
|
|
error = true;
|
|
const desc = event.description == 'alreadyExist' ? 'already exists' : 'does not exist';
|
|
logger.error(`ERROR! ${eventPath} ${desc}.`);
|
|
break;
|
|
case 'update':
|
|
logs.push(core_1.tags.oneLine `
|
|
${color_1.colors.cyan('UPDATE')} ${eventPath} (${event.content.length} bytes)
|
|
`);
|
|
files.add(eventPath);
|
|
break;
|
|
case 'create':
|
|
logs.push(core_1.tags.oneLine `
|
|
${color_1.colors.green('CREATE')} ${eventPath} (${event.content.length} bytes)
|
|
`);
|
|
files.add(eventPath);
|
|
break;
|
|
case 'delete':
|
|
logs.push(`${color_1.colors.yellow('DELETE')} ${eventPath}`);
|
|
files.add(eventPath);
|
|
break;
|
|
case 'rename':
|
|
const eventToPath = event.to.charAt(0) === '/' ? event.to.substring(1) : event.to;
|
|
logs.push(`${color_1.colors.blue('RENAME')} ${eventPath} => ${eventToPath}`);
|
|
files.add(eventPath);
|
|
break;
|
|
}
|
|
});
|
|
const lifecycleSubscription = workflow.lifeCycle.subscribe((event) => {
|
|
if (event.kind == 'end' || event.kind == 'post-tasks-start') {
|
|
if (!error) {
|
|
// Output the logging queue, no error happened.
|
|
logs.forEach((log) => logger.info(log));
|
|
}
|
|
logs = [];
|
|
error = false;
|
|
}
|
|
});
|
|
return {
|
|
files,
|
|
error,
|
|
unsubscribe: () => {
|
|
reporterSubscription.unsubscribe();
|
|
lifecycleSubscription.unsubscribe();
|
|
},
|
|
};
|
|
}
|
|
exports.subscribeToWorkflow = subscribeToWorkflow;
|