84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const { execSync } = require('child_process');
|
|
|
|
const versionFilePath = path.resolve(__dirname, 'version.json');
|
|
const deploysFilePath = path.resolve(__dirname, 'deploys.json');
|
|
|
|
// 1. Obter informações de commit do Git
|
|
let commitHash = 'unknown';
|
|
let commitMessage = 'unknown';
|
|
let author = 'unknown';
|
|
|
|
try {
|
|
commitHash = execSync('git rev-parse --short HEAD').toString().trim();
|
|
commitMessage = execSync('git log -1 --pretty=format:"%s"').toString().trim();
|
|
author = execSync('git log -1 --pretty=format:"%an"').toString().trim();
|
|
} catch (e) {
|
|
console.error('Falha ao obter detalhes do git:', e.message);
|
|
}
|
|
|
|
// 2. Carregar versão atual ou inicializar
|
|
let data = {
|
|
version: 'v1.0.0',
|
|
buildCount: 0,
|
|
lastDeploy: ''
|
|
};
|
|
|
|
if (fs.existsSync(versionFilePath)) {
|
|
try {
|
|
data = JSON.parse(fs.readFileSync(versionFilePath, 'utf8'));
|
|
} catch (e) {
|
|
console.error('Falha ao analisar version.json, reiniciando.');
|
|
}
|
|
}
|
|
|
|
// 3. Incrementar buildCount (+1) e atualizar versão v1.0.x
|
|
data.buildCount = (data.buildCount || 0) + 1;
|
|
data.version = `v1.0.${data.buildCount}`; // v1.+1
|
|
data.lastDeploy = new Date().toISOString();
|
|
data.lastCommit = {
|
|
hash: commitHash,
|
|
message: commitMessage,
|
|
author: author
|
|
};
|
|
|
|
// 4. Salvar version.json local
|
|
fs.writeFileSync(versionFilePath, JSON.stringify(data, null, 2), 'utf8');
|
|
|
|
// Copiar para a pasta pública do frontend para que fique exposto via HTTP
|
|
const publicVersionPath = path.resolve(__dirname, 'frontend/public/version.json');
|
|
fs.mkdirSync(path.dirname(publicVersionPath), { recursive: true });
|
|
fs.writeFileSync(publicVersionPath, JSON.stringify(data, null, 2), 'utf8');
|
|
|
|
// 5. Adicionar entrada de histórico no deploys.json
|
|
let deploys = [];
|
|
if (fs.existsSync(deploysFilePath)) {
|
|
try {
|
|
deploys = JSON.parse(fs.readFileSync(deploysFilePath, 'utf8'));
|
|
} catch (e) {
|
|
console.error('Falha ao analisar deploys.json');
|
|
}
|
|
}
|
|
|
|
deploys.unshift({
|
|
version: data.version,
|
|
buildCount: data.buildCount,
|
|
timestamp: data.lastDeploy,
|
|
commitHash,
|
|
commitMessage,
|
|
author,
|
|
status: 'Sucesso'
|
|
});
|
|
|
|
// Limitar o histórico de deploys a 30 registros
|
|
deploys = deploys.slice(0, 30);
|
|
|
|
fs.writeFileSync(deploysFilePath, JSON.stringify(deploys, null, 2), 'utf8');
|
|
|
|
// Copiar deploys.json histórico para a pasta pública do frontend
|
|
const publicDeploysPath = path.resolve(__dirname, 'frontend/public/deploys.json');
|
|
fs.writeFileSync(publicDeploysPath, JSON.stringify(deploys, null, 2), 'utf8');
|
|
|
|
console.log(`Versão atualizada para ${data.version} (build #${data.buildCount})`);
|