func restoreBackup()

in pkg/backup/backup.go [73:99]


func restoreBackup(dir string) error {
	backupFiles, err := afero.Glob(filesystem.Fs, filepath.Join(dir, "*"+BackupExtension))
	if err != nil {
		return fmt.Errorf("cannot list backup files in %s:%+v", dir, err)
	}
	for _, backupFile := range backupFiles {
		// read the content of the backup file
		content, err := afero.ReadFile(filesystem.Fs, backupFile)
		if err != nil {
			return fmt.Errorf("cannot read backup file %s:%+v", backupFile, err)
		}
		// write the content to the original file
		originalFile := backupFile[:len(backupFile)-len(BackupExtension)] // remove the extension to get the original file name
		info, err := getFilePerm(originalFile, backupFile, err)
		if err != nil {
			return err
		}
		if err = afero.WriteFile(filesystem.Fs, originalFile, content, info.Mode()); err != nil {
			return fmt.Errorf("cannot write original file %s:%+v", originalFile, err)
		}
		// delete the backup file
		if err = filesystem.Fs.Remove(backupFile); err != nil {
			return fmt.Errorf("cannot delete backup file %s:%+v", backupFile, err)
		}
	}
	return nil
}