deep-package-manager
Version:
DEEP Package Manager
109 lines (87 loc) • 2.32 kB
JavaScript
/**
* Created by CCristi on 3/27/17.
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AbstractStrategy = undefined;
var _deepCore = require('deep-core');
var _deepCore2 = _interopRequireDefault(_deepCore);
var _os = require('os');
var _os2 = _interopRequireDefault(_os);
var _Prompt = require('../../Helpers/Terminal/Prompt');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class AbstractStrategy extends _deepCore2.default.OOP.Interface {
/**
* @param {Replication/Instance} replication
* @param {Boolean} skipDNSActions
*/
constructor(replication, skipDNSActions) {
super(['publish', 'update', 'config']);
this._replication = replication;
this._skipDNSActions = skipDNSActions;
this._config = {
hash: replication.hashCode
};
}
/**
* @returns {Boolean|*}
*/
get skipDNSActions() {
return this._skipDNSActions;
}
/**
* @returns {Replication/Instance|*}
*/
get replication() {
return this._replication;
}
/**
* @param {Number} percentage
* @returns {AbstractStrategy}
*/
static chooseStrategyProto(percentage) {
if (percentage === 100) {
return require('./CompleteStrategy').CompleteStrategy;
} else {
return require('./BalancedStrategy').BalancedStrategy;
}
}
/**
* @param {RecordSetAction[]} recordSetActions
* @returns {Boolean}
*/
askRecordChangePermissions(recordSetActions) {
let promptQuestion = ['Following Route53 actions are going to be executed: '].concat(recordSetActions.map(rSetA => rSetA.toString())).concat('Please confirm those changes').join(_os2.default.EOL);
let prompt = new _Prompt.Prompt(promptQuestion);
let confirmBool = null;
prompt.syncMode = true;
prompt.readConfirm(confirm => {
confirmBool = confirm;
});
return confirmBool;
}
/**
* @param {Object} config
* @returns {AbstractStrategy|BalancedStrategy}
*/
updateConfig(config) {
this._config = config;
this._onConfigUpdate(config);
return this;
}
/**
* @returns {Object}
*/
config() {
return this._config;
}
/**
* @private
*/
_onConfigUpdate() {
// inherit this
}
}
exports.AbstractStrategy = AbstractStrategy;