@gabrielvgx/tecfoodcli
Version:
Projeto para automatizar criação de ambientes TecFood
63 lines (50 loc) • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fs = _interopRequireDefault(require("fs"));
var _docker_mnemonics = _interopRequireDefault(require("./helpers/docker_mnemonics.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const mnemonic = {
CHR_START: '<>',
CHR_END: '<>',
readFile(fileName) {
return _fs.default.readFileSync(fileName, 'utf-8');
},
writeFile(fileName, content) {
_fs.default.writeFileSync(fileName, content);
},
replaceMnemonic(str, mnemonic, value) {
const pattern = new RegExp(`${this.CHR_START}${mnemonic}${this.CHR_END}`, 'gi');
return str.replace(pattern, value);
},
replaceFromMap(fileNameTemplate, objMnemonicAndValue, eventsCallback) {
let file = this.readFile(fileNameTemplate);
const {
onBeforeWrite
} = eventsCallback;
const ENV = Object.assign({}, objMnemonicAndValue, _docker_mnemonics.default.run(objMnemonicAndValue));
let newFileContent = file;
Object.keys(ENV).forEach(MNEMONIC => {
const VALUE = ENV[MNEMONIC];
newFileContent = this.replaceMnemonic(newFileContent, MNEMONIC, VALUE);
});
let newFileName = fileNameTemplate.replace(/\.template/gi, '');
if (typeof onBeforeWrite == 'function') newFileContent = onBeforeWrite.apply(null, [newFileContent]);
this.writeFile(newFileName, newFileContent);
return newFileContent;
},
listMnemonics(fileName) {
const fileContent = _fs.default.readFileSync(fileName, 'utf-8');
let mnemonics = fileContent.match(/<>.+<>/gi);
if (mnemonics) {
let uniqueMnemonics = Array.from(new Set(mnemonics));
return uniqueMnemonics.map(item => item.replace(/<>/gi, ''));
} else {
return [];
}
}
};
var _default = mnemonic;
exports.default = _default;