29 lines
701 B
JavaScript
29 lines
701 B
JavaScript
import assert from 'node:assert';
|
|
import BoxError from './boxerror.js';
|
|
import tgzFormat from './backupformat/tgz.js';
|
|
import rsyncFormat from './backupformat/rsync.js';
|
|
|
|
|
|
const FORMATS = { tgz: tgzFormat, rsync: rsyncFormat };
|
|
|
|
function api(format) {
|
|
assert.strictEqual(typeof format, 'string');
|
|
|
|
if (FORMATS[format]) return FORMATS[format];
|
|
|
|
throw new BoxError(BoxError.INTERNAL_ERROR, `Undefined format ${format}`);
|
|
}
|
|
|
|
function validateFormat(format) {
|
|
assert.strictEqual(typeof format, 'string');
|
|
|
|
if (format === 'tgz' || format == 'rsync') return null;
|
|
|
|
return new BoxError(BoxError.BAD_FIELD, 'Invalid backup format');
|
|
}
|
|
|
|
export default {
|
|
api,
|
|
validateFormat,
|
|
};
|