From cdd267637b9bf1a32f3b8c311aede0abf8015840 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 25 Jul 2014 09:24:26 +0530 Subject: [PATCH] calibre-customize: When building plugins from a directory, exclude known version control subdirectories --- src/calibre/customize/ui.py | 2 +- src/calibre/utils/zipfile.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/calibre/customize/ui.py b/src/calibre/customize/ui.py index bf0b709277..346b60c4b7 100644 --- a/src/calibre/customize/ui.py +++ b/src/calibre/customize/ui.py @@ -619,7 +619,7 @@ def build_plugin(path): raise SystemExit(1) t = PersistentTemporaryFile(u'.zip') with ZipFile(t, u'w', ZIP_STORED) as zf: - zf.add_dir(path) + zf.add_dir(path, simple_filter=lambda x:x in {'.git', '.bzr', '.svn', '.hg'}) t.close() plugin = add_plugin(t.name) os.remove(t.name) diff --git a/src/calibre/utils/zipfile.py b/src/calibre/utils/zipfile.py index 566823b639..97d500713a 100644 --- a/src/calibre/utils/zipfile.py +++ b/src/calibre/utils/zipfile.py @@ -1303,7 +1303,7 @@ class ZipFile: self.filelist.append(zinfo) self.NameToInfo[zinfo.filename] = zinfo - def add_dir(self, path, prefix=''): + def add_dir(self, path, prefix='', simple_filter=lambda x:False): ''' Add a directory recursively to the zip file with an optional prefix. ''' @@ -1314,9 +1314,11 @@ class ZipFile: os.chdir(path) fp = (prefix + ('/' if prefix else '')).replace('//', '/') for f in os.listdir('.'): + if simple_filter(f): # Added by Kovid + continue arcname = fp + f if os.path.isdir(f): - self.add_dir(f, prefix=arcname) + self.add_dir(f, prefix=arcname, simple_filter=simple_filter) else: self.write(f, arcname) finally: