path type now support custom backup locations and path support absoule path
This commit is contained in:
@@ -5,7 +5,8 @@ programs:
|
|||||||
files:
|
files:
|
||||||
- BGI.gdb # path to a file/folder. All subfolders will include if it is a folder. Must be relative path.
|
- BGI.gdb # path to a file/folder. All subfolders will include if it is a folder. Must be relative path.
|
||||||
- type: path
|
- type: path
|
||||||
path: folder # path to a file/folder. All subfolders will include if it is a folder. Must be relative path.
|
path: folder # path to a file/folder. All subfolders will include if it is a folder. Must be relative path if name not found.
|
||||||
|
name: folder2 # path to the backup files. Shoule be a relative path
|
||||||
- type: leveldb # module plyvel is needed to support this type. This will store leveldb database to a single file database (sqlite3)
|
- type: leveldb # module plyvel is needed to support this type. This will store leveldb database to a single file database (sqlite3)
|
||||||
path: leveldb # path to leveldb. Must be relative path.
|
path: leveldb # path to leveldb. Must be relative path.
|
||||||
domains: # optional. Just backup minor domains in localstorage database. Only chromium is tested.
|
domains: # optional. Just backup minor domains in localstorage database. Only chromium is tested.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ try:
|
|||||||
from yaml import CSafeLoader as SafeLoader
|
from yaml import CSafeLoader as SafeLoader
|
||||||
except Exception:
|
except Exception:
|
||||||
from yaml import SafeLoader
|
from yaml import SafeLoader
|
||||||
from os.path import join, relpath, isfile, isdir
|
from os.path import join, relpath, isfile, isdir, isabs
|
||||||
from typing import List, Union
|
from typing import List, Union
|
||||||
from game_backuper.file import listdirs
|
from game_backuper.file import listdirs
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
@@ -47,6 +47,8 @@ class Program:
|
|||||||
for i in self.data[ke]:
|
for i in self.data[ke]:
|
||||||
b = self.base
|
b = self.base
|
||||||
if isinstance(i, str):
|
if isinstance(i, str):
|
||||||
|
if isabs(i):
|
||||||
|
raise ValueError('Absolute path must need a name.')
|
||||||
bp = join(b, i)
|
bp = join(b, i)
|
||||||
if isfile(bp):
|
if isfile(bp):
|
||||||
r.append(ConfigNormalFile(i, bp))
|
r.append(ConfigNormalFile(i, bp))
|
||||||
@@ -57,13 +59,20 @@ class Program:
|
|||||||
elif isinstance(i, dict):
|
elif isinstance(i, dict):
|
||||||
t = i['type']
|
t = i['type']
|
||||||
if t == 'path':
|
if t == 'path':
|
||||||
bp = join(b, i['path'])
|
if isabs(i['path']):
|
||||||
|
if 'name' not in i or not isinstance(i['name'], str) or i['name'] == '': # noqa: E501
|
||||||
|
raise ValueError('Absolute path must need a name.')
|
||||||
|
bp = i['path']
|
||||||
|
name = i['name']
|
||||||
|
else:
|
||||||
|
bp = join(b, i['path'])
|
||||||
|
name = i['path']
|
||||||
if isfile(bp):
|
if isfile(bp):
|
||||||
r.append(ConfigNormalFile(i['path'], bp))
|
r.append(ConfigNormalFile(name, bp))
|
||||||
elif isdir(bp):
|
elif isdir(bp):
|
||||||
ll = listdirs(bp)
|
ll = listdirs(bp)
|
||||||
for ii in ll:
|
for ii in ll:
|
||||||
r.append(ConfigNormalFile(relpath(ii, b), ii))
|
r.append(ConfigNormalFile(join(name, relpath(ii, bp)), ii)) # noqa: E501
|
||||||
elif t == 'leveldb':
|
elif t == 'leveldb':
|
||||||
p = join(b, i['path'])
|
p = join(b, i['path'])
|
||||||
dms = None
|
dms = None
|
||||||
|
|||||||
Reference in New Issue
Block a user