33 lines
1014 B
JavaScript
33 lines
1014 B
JavaScript
import grabDBDir from "../utils/grab-db-dir";
|
|
import fs from "fs";
|
|
function stripBackupExtension(name) {
|
|
const lower = name.toLowerCase();
|
|
if (lower.endsWith(".tar.gz"))
|
|
return name.slice(0, -7);
|
|
if (lower.endsWith(".tgz"))
|
|
return name.slice(0, -4);
|
|
if (lower.endsWith(".tar"))
|
|
return name.slice(0, -4);
|
|
if (lower.endsWith(".zip"))
|
|
return name.slice(0, -4);
|
|
if (lower.endsWith(".sql"))
|
|
return name.slice(0, -4);
|
|
return name;
|
|
}
|
|
function backupTimestamp(name) {
|
|
const base = stripBackupExtension(name);
|
|
const ts = Number(base.split("-").pop());
|
|
return Number.isFinite(ts) ? ts : 0;
|
|
}
|
|
export default function grabSortedBackups({ config }) {
|
|
const { backup_dir } = grabDBDir({ config });
|
|
if (!fs.existsSync(backup_dir)) {
|
|
return [];
|
|
}
|
|
const backups = fs.readdirSync(backup_dir);
|
|
/**
|
|
* Order Backups. Most recent first.
|
|
*/
|
|
return backups.sort((a, b) => backupTimestamp(b) - backupTimestamp(a));
|
|
}
|