Tenho vários arquivos que executam vários testes e retornam resultados em um arquivo de log.
Tenho funções auxiliares que criam um arquivo de log e adicionam dados a ele.
Quero nomear dinamicamente esse arquivo de log, com base na hora e data em que o script é executado. Para isso, preciso armazenar o nome do arquivo em uma variável no arquivo que dispara todos os testes ( main.js
) e torná-lo disponível para as funções no meu helper-function.js
arquivo.
Tenho experimentado definir uma variável de ambiente, main.js
mas não obtive sucesso em fazer com que todas as funções auxiliares a leiam.
Embora pareça que eu possa defini-lo em main.js e fazer com que a função createLogs() o use, a updateLogs()
função subsequente, que é exportada ( module.exports = {updateLogs}
) para outros arquivos, não pode. Estou supondo que os outros arquivos simplesmente não estão "cientes" da variável de ambiente.
No entanto, codificar a variável de ambiente helper-functions.js
funciona - ambas as funções auxiliares podem vê-la e usá-la.
Alguém sabe como posso definir process.env.LOGFILE
um valor dinâmico e torná-lo disponível para todas as funções auxiliares? (Observação: devido a restrições de segurança, não posso usar pacotes de terceiros para fazer isso).
Meus arquivos são assim:
//main.js
const d = new Date();
const logName = "fooBar";
process.env.LOGFILE = logName + "-" + d.getDay() + "-" + d.getMonth() + "-" + d.getFullYear() + ".json";
createLogs(logName);
// Running tests on other files...
funções-auxiliares.js
//If I uncomment the below it works, but file name is hard coded.
//process.env.LOGFILE = "customLogs.json";
//Create log file when scripts are first run
const createLogs = (logName) => {
exec('git branch --show-current', (err, stdout, stderr) => {
if (err) {
console.log("Error getting git branch:" + stderr);
}
const startTime = ((Date()).toLocaleString()).split('GMT')[0];
const branchName = stdout ? stdout.replace(/(\r\n|\n|\r)/gm,"") : "no-branch";
let repObjString = `{"details":{"name": "${logName}","time": "${startTime}","branch": "${branchName}"},"report":{}}`;
const logFileName = `logs/${process.env.LOGFILE}`; //<== THIS WORKS
if (!fs.existsSync(logFileName)) {
console.log("Log doesnt exist. Making one...");
fs.writeFile(logFileName, repObjString, function (err) {
if (err) throw err;
console.log('Creating file!');
});
}
});
}
// Update logs
const updateLogs = (logObj) => {
const logName = `logs/${process.env.LOGFILE}`; //<== THIS DOES NOT WORK
fs.readFile(logName, 'utf8', function (err, logData) {
if (err) throw err;
Object.assign(logData["report"], logObj);
fs.writeFile (logName, logData, function(err) {
if (err) throw err;
console.log('Log updated');
});
});
}
1 respostas