'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 };