scai
Version:
> **AI-powered CLI for local code analysis, commit message suggestions, and natural-language queries.** 100% local, private, GDPR-friendly, made in Denmark/EU with ❤️.
41 lines (40 loc) • 1.3 kB
JavaScript
// src/db/backup.ts
import fs from 'fs';
import path from 'path';
import os from 'os';
export async function backupScaiFolder() {
try {
const homeDir = os.homedir();
const scaiDir = path.join(homeDir, '.scai');
// Ensure the .scai folder exists
if (!fs.existsSync(scaiDir)) {
console.error(`⚠️ No .scai folder found at ${scaiDir}`);
return false;
}
// Backup path: ~/.scai_backup_<timestamp>
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
const backupDir = path.join(homeDir, `.scai_backup_${timestamp}`);
// Recursive copy
copyRecursiveSync(scaiDir, backupDir);
return true;
}
catch (err) {
console.error(`⚠️ Failed to back up .scai folder:`, err);
return false;
}
}
function copyRecursiveSync(src, dest) {
const stats = fs.statSync(src);
if (stats.isDirectory()) {
fs.mkdirSync(dest, { recursive: true });
const entries = fs.readdirSync(src);
for (const entry of entries) {
const srcPath = path.join(src, entry);
const destPath = path.join(dest, entry);
copyRecursiveSync(srcPath, destPath);
}
}
else {
fs.copyFileSync(src, dest);
}
}