blob: b5c7c93cb18f391a6def72a2d5304e47b6bf56a4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
from pathlib import Path
from os.path import join
from bundlewrap.items.files import File
def add_files_recursive(files, root, common={}, target_root="/", files_root=None):
if files_root == None:
files_root = root
root = Path(root)
for p in root.rglob("**/*"):
if not p.is_dir():
rel = str(p.relative_to(files_root))
key = join(target_root, rel)
files[key] = (files[key] if key in files else {}) | common | {
"source": rel,
}
def tree(root, common={}, target_dir="/",
keep_parent=True):
files = {}
root = Path(root)
for p in Path(root).rglob("**/*"):
if not p.is_dir():
key = join(target_dir, p.relative_to(
root.parent if keep_parent else root))
files[key] = (files[key] if key in files else {}) | common | {
"source": str(p),
}
return files
def merge(a, b):
for key in b.keys():
a[key] = (a[key] if key in a else {}) | b[key]
|