mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-04 14:29:45 +00:00
Feature/sdk improvements (#2879)
* sdk improvements * subcontainer fixes, disable wifi on migration if not in use, filterable interfaces
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import * as T from "../../../base/lib/types"
|
||||
import * as child_process from "child_process"
|
||||
import * as fs from "fs/promises"
|
||||
import { asError, StorePath } from "../util"
|
||||
import { Affine, asError, StorePath } from "../util"
|
||||
|
||||
export const DEFAULT_OPTIONS: T.SyncOptions = {
|
||||
delete: true,
|
||||
@@ -15,12 +15,18 @@ export type BackupSync<Volumes extends string> = {
|
||||
restoreOptions?: Partial<T.SyncOptions>
|
||||
}
|
||||
|
||||
export type BackupEffects = T.Effects & Affine<"Backups">
|
||||
|
||||
export class Backups<M extends T.SDKManifest> {
|
||||
private constructor(
|
||||
private options = DEFAULT_OPTIONS,
|
||||
private restoreOptions: Partial<T.SyncOptions> = {},
|
||||
private backupOptions: Partial<T.SyncOptions> = {},
|
||||
private backupSet = [] as BackupSync<M["volumes"][number]>[],
|
||||
private preBackup = async (effects: BackupEffects) => {},
|
||||
private postBackup = async (effects: BackupEffects) => {},
|
||||
private preRestore = async (effects: BackupEffects) => {},
|
||||
private postRestore = async (effects: BackupEffects) => {},
|
||||
) {}
|
||||
|
||||
static withVolumes<M extends T.SDKManifest = never>(
|
||||
@@ -93,6 +99,7 @@ export class Backups<M extends T.SDKManifest> {
|
||||
}
|
||||
|
||||
async createBackup(effects: T.Effects) {
|
||||
await this.preBackup(effects as BackupEffects)
|
||||
for (const item of this.backupSet) {
|
||||
const rsyncResults = await runRsync({
|
||||
srcPath: item.dataPath,
|
||||
@@ -116,6 +123,7 @@ export class Backups<M extends T.SDKManifest> {
|
||||
await fs.writeFile("/media/startos/backup/dataVersion.txt", dataVersion, {
|
||||
encoding: "utf-8",
|
||||
})
|
||||
await this.postBackup(effects as BackupEffects)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user