zerobyte/apps/agent/src/restic/deps.ts

20 lines
993 B
TypeScript

import path from "node:path";
import type { ResticDeps } from "@zerobyte/core/restic";
import { resolveResticHostname } from "./hostname";
const REPOSITORY_BASE = process.env.ZEROBYTE_REPOSITORIES_DIR || "/var/lib/zerobyte/repositories";
const RESTIC_CACHE_DIR = process.env.RESTIC_CACHE_DIR || "/var/lib/zerobyte/restic/cache";
const RESTIC_PASS_FILE = process.env.RESTIC_PASS_FILE || "/var/lib/zerobyte/data/restic.pass";
const RCLONE_CONFIG_DIR = process.env.RCLONE_CONFIG_DIR || "/root/.config/rclone";
const RCLONE_CONFIG_FILE = path.join(RCLONE_CONFIG_DIR, "rclone.conf");
const DEFAULT_EXCLUDES = [RESTIC_PASS_FILE, REPOSITORY_BASE];
export const resticDeps = (password: string): ResticDeps => ({
resolveSecret: async (encrypted) => encrypted,
getOrganizationResticPassword: async () => password,
resticCacheDir: RESTIC_CACHE_DIR,
resticPassFile: RESTIC_PASS_FILE,
defaultExcludes: DEFAULT_EXCLUDES,
hostname: resolveResticHostname(),
rcloneConfigFile: RCLONE_CONFIG_FILE,
});