From 1ab43eb00f762d12fcb554e37a646e6ba5b1cbda Mon Sep 17 00:00:00 2001 From: Amber Date: Wed, 27 Nov 2024 09:38:02 +0100 Subject: [PATCH] treehash from list to dict --- src/lib/sclient/agent.py | 15 ++++++++------- src/lib/tree/treehash.py | 15 ++++++++++----- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/lib/sclient/agent.py b/src/lib/sclient/agent.py index a38d847..e1b2538 100644 --- a/src/lib/sclient/agent.py +++ b/src/lib/sclient/agent.py @@ -211,11 +211,9 @@ class AdvancedSftpClientAgent(BaseAgent): return (io.BytesIO(buf), dig) - def generate_tree_oversftp(self, root_path :str, treemap :list=[]): + def generate_tree_structure_oversftp(self, root_path :str): ''' @param root_path string - generate an ordered list of entries, similar to `find ~/sharednotes_dev/ -print` - command ''' if not root_path.endswith(os.path.sep): root_path = root_path + os.path.sep @@ -224,6 +222,8 @@ class AdvancedSftpClientAgent(BaseAgent): # treemap = [] sftpc = self.get_sftp_client() + treemap = {} + for item in sftpc.listdir_attr(root_path): # absolute_item_path = root_path + item.filename # print('absolute_item_path: %s, item %s, isdir: %s' % (absolute_item_path, item.filename, stat.S_ISDIR(item.st_mode))) @@ -236,14 +236,15 @@ class AdvancedSftpClientAgent(BaseAgent): continue absolute_item_path = root_path + item.filename # print('absolute_item_path: %s, item %s, isdir: %s' % (absolute_item_path, item, os.path.isdir(absolute_item_path))) - treemap.append(absolute_item_path) - if not stat.S_ISDIR(item.st_mode): continue + if not stat.S_ISDIR(item.st_mode): + treemap[absolute_item_path] = "" + continue - self.generate_tree_oversftp(absolute_item_path, treemap) + treemap[absolute_item_path] = self.generate_tree_structure_oversftp(absolute_item_path) return treemap - def generate_hash_tree_oversftp(self, root_path: str): + def generate_tree_structure_hash_oversftp(self, root_path: str): root_path = _path_utils.normalize_path(root_path) tree = self.generate_tree_oversftp(root_path) pickled = pickle.dumps(tree) diff --git a/src/lib/tree/treehash.py b/src/lib/tree/treehash.py index 20110b9..ca992e8 100644 --- a/src/lib/tree/treehash.py +++ b/src/lib/tree/treehash.py @@ -4,7 +4,7 @@ import hashlib from lib.utils import path_utils as _path_utils -def generate_tree(root_path :str, treemap :list=[]): +def generate_tree_structure(root_path :str): ''' @param root_path string generate an ordered list of entries, similar to `find ~/sharednotes_dev/ -print` @@ -13,20 +13,25 @@ def generate_tree(root_path :str, treemap :list=[]): root_path = _path_utils.normalize_path(root_path) items = os.listdir(root_path) + + treemap = {} + for item in sorted(items): ## exclude folder for the tree if item in ['.masy']: continue absolute_item_path = root_path + item print('absolute_item_path: %s, item %s, isdir: %s' % (absolute_item_path, item, os.path.isdir(absolute_item_path))) - treemap.append(absolute_item_path) - if not os.path.isdir(absolute_item_path): continue + # treemap.append(absolute_item_path) + if not os.path.isdir(absolute_item_path): + treemap[absolute_item_path] = '' + continue - generate_tree(absolute_item_path, treemap) + treemap[absolute_item_path] = generate_tree(absolute_item_path) return treemap -def generate_hash_tree(root_path: str): +def generate_tree_structure_hash(root_path: str): root_path = _path_utils.check_isdir(root_path) root_path = _path_utils.normalize_path(root_path) base_path = root_path