Files
vitruvio-cli/src/commands/update-base.js
T
2026-04-14 16:06:19 -03:00

77 lines
2.4 KiB
JavaScript

'use strict';
var path = require('path');
var fs = require('fs');
var fse = require('fs-extra');
var { cloneWithFallback, cleanupTemp } = require('../utils/git');
var { getPlatformDir } = require('../utils/platform');
var SSH_URL = 'ssh://git@git.davinti.com.br:2222/davinTI/base-claude.git';
var HTTPS_URL = 'https://git.davinti.com.br/davinTI/base-claude.git';
// Directories inside the platform dir that are fully managed by this command.
// Each of these is replaced in its entirety — files removed from the source
// are also removed locally. Directories not in this list are never touched.
var MANAGED_DIRS = ['libs', 'docs', 'examples'];
function register(program) {
program
.command('update-base')
.description('Sincroniza os diretórios gerenciados do diretório de plataforma Vitruvio com o repositório base-claude')
.action(function () {
var platformDir;
try {
platformDir = getPlatformDir();
} catch (e) {
console.error('Erro: ' + e.message);
process.exit(1);
}
console.log('Diretório de plataforma: ' + platformDir);
console.log('Buscando repositório base-claude...');
var tmpDir = null;
try {
tmpDir = cloneWithFallback(SSH_URL, HTTPS_URL);
} catch (e) {
console.error('Erro: não foi possível clonar o repositório base-claude.');
console.error(e.message);
process.exit(1);
}
try {
fse.ensureDirSync(platformDir);
var results = [];
MANAGED_DIRS.forEach(function (dirName) {
var src = path.join(tmpDir, dirName);
var dest = path.join(platformDir, dirName);
if (!fs.existsSync(src)) {
results.push({ dir: dirName, status: 'não encontrado no repositório' });
return;
}
// Full replacement: remove existing dir, copy fresh from source
if (fs.existsSync(dest)) {
fse.removeSync(dest);
}
fse.copySync(src, dest);
results.push({ dir: dirName, status: 'atualizado' });
});
console.log('');
results.forEach(function (r) {
console.log(' ' + r.dir + '/ — ' + r.status);
});
console.log('');
console.log('Atualização concluída.');
} finally {
cleanupTemp(tmpDir);
}
});
}
module.exports = { register: register };