"use strict"; const progress = require("ember-cli/lib/utilities/heimdall-progress"); const CHECK_INTERVAL = 100; const LOG_DUPLICATE_AFTER_DURATION = 5000; const REPEAT_DUPLICATE_LOG_ITERATIONS = LOG_DUPLICATE_AFTER_DURATION / CHECK_INTERVAL; // If running in CI mode, this addon will poll the current build node and log it. // If the node runs for more than LOG_DUPLICATE_AFTER_DURATION, it will be logged again. module.exports = { name: require("./package").name, preBuild() { if (this.project.ui.ci) { this._startOutput(); } }, outputReady() { this._stopOutput(); }, buildError() { this._stopOutput(); }, _startOutput() { this._discourseProgressLoggerInterval = setInterval( this._handleProgress.bind(this), CHECK_INTERVAL ); }, _handleProgress() { const text = progress(); if ( text === this._lastText && this._sameOutputCount < REPEAT_DUPLICATE_LOG_ITERATIONS ) { this._sameOutputCount++; } else { process.stderr.write("..." + (text ? `[${text}]` : ".") + "\n"); this._sameOutputCount = 0; } this._lastText = text; }, _stopOutput() { clearInterval(this._discourseProgressLoggerInterval); }, };