77 lines
2.4 KiB
JavaScript
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 };
|