From d6f204e83041a50dc65dad8779ef4faba6cfd297 Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Fri, 16 Nov 2018 15:48:34 -0600 Subject: [PATCH] added __ignore__ to ignore dir and all subdirectories --- .gitignore | 4 +++- ext_open/config.ini | 6 +++--- ext_open/ext_open.py | 3 ++- ext_open/update.py | 16 ++++++++++------ 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index e6424e0..a78d0f6 100644 --- a/.gitignore +++ b/.gitignore @@ -59,4 +59,6 @@ docs/_build/ # PyBuilder target/ /test/ -test_*.py \ No newline at end of file +test_*.py +__ignore__ +*.bak diff --git a/ext_open/config.ini b/ext_open/config.ini index 0eac6cf..86cafb4 100644 --- a/ext_open/config.ini +++ b/ext_open/config.ini @@ -6,14 +6,14 @@ ; path to database where file entries are to be stored db_path = %userprofile%\Documents\local_repo\windows\ext_open\ext_open\ext.db ; program or script used to update modified times - modified_time_updater = %userprofile%\portables\foldertimeupdate\FolderTimeUpdate.exe + modified_time_updater = "%userprofile%\portables\foldertimeupdate\FolderTimeUpdate.exe" /stext nul BaseFolder ; how many files inserted before committing commit_interval = 30 [exe] ; comma separated paths - paths = %userprofile%,%programfiles%,%programfiles(x86)%, + paths = %userprofile%,%programfiles%,%programfiles(x86)% [py] - paths = "%userprofile%\Documents\local_repo\windows\ext_open" + paths = "%userprofile%\Documents\local_repo\",%userprofile%\Google Drive\Python, ; editor = ${global:editor} idle_edit = pythonw -m idlelib -e execute = python diff --git a/ext_open/ext_open.py b/ext_open/ext_open.py index 5951d47..21d63b5 100644 --- a/ext_open/ext_open.py +++ b/ext_open/ext_open.py @@ -7,6 +7,7 @@ import pyperclip import searcher parser = argparse.ArgumentParser(prog='ext-open',prefix_chars=prefix_char) sub_parsers = parser.add_subparsers(dest='ext') +sub_parsers.required = True exe_parser = sub_parsers.add_parser('exe',prefix_chars=prefix_char) update_parser = sub_parsers.add_parser('update',prefix_chars=prefix_char) for opt in prefix: @@ -32,7 +33,7 @@ if __name__ == "__main__": elif args.trim_history.isdecimal: n = int(args.trim_history) s.clean(n) - s.update() + s.update(args.update_modified_times) else: s = searcher.Searcher(args.ext) if args.__dict__.pop('exact'): diff --git a/ext_open/update.py b/ext_open/update.py index a6e0be4..17ae064 100644 --- a/ext_open/update.py +++ b/ext_open/update.py @@ -4,20 +4,20 @@ import argparse import datetime import os import os.path as osp +import shlex import sqlite3 import subprocess import time import traceback FORCE_ADMIN = not config.getboolean('global','no_admin',fallback=False) -TEST = True DB_PATH = config.getpath('global','db_path') ext_database = sqlite3.connect(DB_PATH) EXE_PATH = config.getpath('global','modified_time_updater') - def update_mtimes(starts): + global EXE_PATH if not is_admin() and FORCE_ADMIN: raise Exception("Process must be admin") for start in starts: @@ -32,15 +32,20 @@ def build(after,starts): for path in starts: for root,dirs,files in os.walk(path,topdown=True): try: - for file in files: - yield os.path.join(root,file) - dirs[:] = list(filter(lambda p: osp.getmtime(osp.join(root,p)) > after,dirs)) + ignore = any('__ignore__' in files) + if ignore: + del dirs + else: + for file in files: + yield os.path.join(root,file) + dirs[:] = list(filter(lambda p: osp.getmtime(osp.join(root,p)) > after,dirs)) except: print('Error',root,sep= ': ') def _update(ext,starts,after,do_update_mtimes = False): if do_update_mtimes: update_mtimes(starts) + starts = no_parents(starts) files = build(after,starts) for file in files: if file.endswith(ext): @@ -92,7 +97,6 @@ def update(ext,do_update_mtimes): except Exception as e: set_updating(ext,ext_database,False) - traceback.print_exc() input() raise e