diff --git a/flit.py b/flit.py index 682bbec..713a537 100755 --- a/flit.py +++ b/flit.py @@ -10,6 +10,7 @@ from urllib.parse import quote DEL_TIME = '.delete_in' +DESCRIPTION = '.description' def parse_opts(): class _HelpAction(argparse._HelpAction): @@ -64,6 +65,14 @@ def parse_opts(): default = 30, nargs = '?' ) + add_parser.add_argument( + "description", + action = "store", + type = str, + help = "Describe share", + default = "-", + nargs = '?' + ) list_parser = subparsers.add_parser('list', add_help=False) list_parser.add_argument( '--verbose', '-v', @@ -85,26 +94,37 @@ def random_name(): return ''.join(chars) -def create_new(p, days): +def create_new(p, days, description): os.mkdir(p) with open(os.path.join(p, DEL_TIME), 'wt') as fp: fp.write(str(days)) + with open(os.path.join(p, DESCRIPTION), 'wt') as fp: + fp.write(description) +def get_description(f): + try: + with open(f) as fp: + return "".join(filter(lambda x: x in string.printable, fp.read(32).split("\n")[0])) + except: + return "-" + def get_stats(p): + # TODO: named tuple try: with open(os.path.join(p, DEL_TIME), 'rt') as fp: do_del = int(fp.read(64)) + desc = get_description(os.path.join(p, DESCRIPTION)) now = datetime.now() mtime = datetime.fromtimestamp( os.path.getmtime(os.path.join(p, DEL_TIME)) ) del_delta = timedelta(days = do_del) del_time = mtime + del_delta to_del_time = del_time - now is_due = now > del_time - return mtime, del_time, to_del_time, is_due + return mtime, del_time, to_del_time, is_due, desc except Exception as e: print(e) - return (None, None, False) + return (None, None, False, False, "-") def get_sub_files(p): @@ -126,14 +146,15 @@ def list_folders(root_folder, verbose = False): for p in names: stats = get_stats(p) sub_files = get_sub_files(p) - due = "*" if stats[3] else "" - print("{}/{}/ {} {} {: 3d}d{}".format( + due = "*" if stats[3] else " " + print("{}/{}/ {} {} {: 4d}d{} {}".format( root_folder, p, stats[0].isoformat()[0:10], stats[1].isoformat()[0:10], stats[2].days, - due + due, + stats[4] )) if verbose: for sp in sub_files: @@ -158,7 +179,7 @@ if __name__ == '__main__': new_name = random_name() while os.path.exists(new_name): new_name = random_name() - create_new(new_name, opts.days) + create_new(new_name, opts.days, opts.description) print(os.path.abspath(new_name)) print(opts.root + "/" + new_name)