From 56f5423766e3cef76040dadb0287db3b03169172 Mon Sep 17 00:00:00 2001 From: "matthias@arch" Date: Fri, 1 Dec 2023 20:55:57 +0100 Subject: [PATCH] use argparse and allow sort into other dir --- imgsort/configs.py | 7 +++---- imgsort/sorter.py | 41 ++++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/imgsort/configs.py b/imgsort/configs.py index 59baf18..a337210 100755 --- a/imgsort/configs.py +++ b/imgsort/configs.py @@ -1,9 +1,8 @@ from os import path, getcwd, listdir, mkdir, makedirs, rename import re -def read_config(filepath): - if not path.isfile(filepath): - raise FileNotFoundError(f"read_config: Invalid filepath {filepath}") +def read_config(filepath, root_directory="."): + if not path.isfile(filepath): return False file = open(filepath, 'r') keys = {} @@ -12,7 +11,7 @@ def read_config(filepath): match = re.match(r". = /?([a-z-A-ZöÖäÄüÜ0-9/: _-]+/)*[a-zA-ZöÖäÄüÜ0-9/: _-]+/?", line) if match: key, value = line.split(" = ") - keys[key] = value + keys[key] = root_directory + "/" + value return keys def write_config(filepath, keys): diff --git a/imgsort/sorter.py b/imgsort/sorter.py index 91438c2..14afdd9 100755 --- a/imgsort/sorter.py +++ b/imgsort/sorter.py @@ -17,6 +17,8 @@ if __name__ == "__main__": # make relative imports work as described here: http from .configs import read_config, write_config, select_config, create_config +import argparse + settings = { "q": "quit", "s": "skip", @@ -219,6 +221,8 @@ class Sorter: for k, v in self.keys.items(): if i >= self.win_y - KEYS_BEGIN - FOOTER_HEIGHT: # dont write into footer break + # show only last part + v = v.split("/")[-1] if k == self.pressed_key: self.window.addnstr(KEYS_BEGIN + i, 0, f" {k}: {v}", SIDEBAR_WIDTH, c.A_STANDOUT) else: @@ -239,12 +243,15 @@ class Sorter: return new_path def quit(self, message = ""): +<<<<<<< HEAD print(message) print(f"Quitting imgsort {version}") exit(0) def __del__(self): +======= +>>>>>>> 1fd5e82 (use argparse and allow sort into other dir) self.window.clear() self.window.refresh() c.endwin() @@ -253,27 +260,26 @@ class Sorter: def main(): # set working directory - print(f"""=================================================================================================== -imgsort {version} - Image Sorter -===================================================================================================""") - # set directories - config_dir = os.path.join(os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), "regina") + print(""" +=================================================================================================== +Image Sorter +=================================================================================================== +""") + config_dir = os.path.join(os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), "imgsort") # check if environment variables are set and use them if they are if 'IMGSOSRT_CONFIG_DIR' in os.environ: config_dir = os.environ['IMGSORT_CONFIG_DIR'] - parser = argparse.ArgumentParser(prog="imgsort") - parser.add_argument("--config", "-c", action="store", help="name or path of config file", metavar="config file") - parser.add_argument("--dir", "-d", action="store", help="working directory", metavar="working directory") + parser = argparse.ArgumentParser("imgsort") + parser.add_argument("-c", "--config", action="store", help="name of the config file in ~/.config/imgsort") + parser.add_argument("-i", "--sort-dir", action="store", help="the directory where the folders from the config will be created") args = parser.parse_args() - # working directory - if args.dir: - if not path.isdir(args.dir): - parser.error(f"invalid working directory: {args.wdir}") - wd = path.abspath(args.dir) - os.chdir(wd) + wd = getcwd(); + + if args.sort_dir: + args.sort_dir = path.abspath(args.sort_dir) else: - wd = getcwd() + args.sort_dir = getcwd() # configuration if args.config: @@ -284,8 +290,9 @@ imgsort {version} - Image Sorter if not path.isfile(config_path): parser.error(f"invalid configuration path/name:'{config_path}'/'{args.config}'") else: - config_path = select_config() + args.config = select_config() print(config_path) + config = read_config(args.config, root_directory=args.sort_dir) if config_path is not None: config = read_config(config_path) else: @@ -293,7 +300,7 @@ imgsort {version} - Image Sorter if not config: print("Error reading the config:") - print(" Config Name:", config_path) + print(" Config Name:", args.config) print(" Config:", config) exit(1)