From 7f3dccd16d2d1f22846c924dbbdd62c225b39f23 Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Tue, 9 Nov 2021 23:49:52 +0200 Subject: [PATCH] fix future problem of 999 index --- flit.py | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/flit.py b/flit.py index f3fabd5..e180794 100755 --- a/flit.py +++ b/flit.py @@ -123,7 +123,7 @@ def parse_opts(): type=str, help="List only named share", default=None, - nargs="?" + nargs="?", ) del_parser = subparsers.add_parser("del", add_help=False) @@ -157,13 +157,16 @@ def random_name(): """ while True: existing_names = [c["name"] for c in get_folders()] - index = 0 - for existing in existing_names: - try: - e_index = int(existing[0:3]) - index = max(e_index + 1, index) - except: - pass + existing_numbers = [ + tryint(num[0:3]) for num in existing_names if tryint(num[0:3]) != None + ] + + index = max(existing_numbers) + 1 + if index > 999: + for index in range(1000): + if not index in existing_numbers: + break + name = "{:03d}-{}-{}".format( index, "".join([random_char() for x in range(3)]), @@ -306,7 +309,7 @@ def list_folders(root_url, verbose=False, filter_name=None): folders = get_folders() header_format = "{:" + str(12 + len(root_url)) + "} {} {} {} {}" - print(header_format.format("URL","Created","ToDelete","InDays","Description")) + print(header_format.format("URL", "Created", "ToDelete", "InDays", "Description")) for c in folders: if filter_name is not None: if filter_name != c["name"]: @@ -382,6 +385,22 @@ def write_config(p, config): return json.dump(config, fp, indent=2, sort_keys=True) +def tryint(s): + """Return integer, or None + + Args: + s (str): Integer as string + + Returns: + Int or None + """ + + try: + return int(s, 10) + except Exception: + return None + + if __name__ == "__main__": opts = parse_opts() cwd = os.getcwd() @@ -391,7 +410,7 @@ if __name__ == "__main__": os.chdir(opts.home) if opts.command == "add": - """ Add a new share """ + """Add a new share""" new_name = random_name() create_new(new_name, opts.days, opts.description) @@ -401,19 +420,19 @@ if __name__ == "__main__": list_folders(opts.root, verbose=True, filter_name=new_name) if opts.command == "list" or opts.command is None: - """ List shares """ - + """List shares""" + name = None try: name = opts.name except AttributeError: - pass + pass if name: if os.path.isdir(os.path.join(cwd, name)): name = os.path.basename(os.path.realpath(os.path.join(cwd, name))) list_folders(opts.root, verbose=opts.verbose, filter_name=name) if opts.command == "del": - """ Delete due shares """ + """Delete due shares""" del_due_folders()