describe stuff

This commit is contained in:
Ville Rantanen
2020-09-16 16:43:16 +03:00
parent 8156ff57a2
commit 24dd87219c

35
flit.py
View File

@@ -10,6 +10,7 @@ from urllib.parse import quote
DEL_TIME = '.delete_in' DEL_TIME = '.delete_in'
DESCRIPTION = '.description'
def parse_opts(): def parse_opts():
class _HelpAction(argparse._HelpAction): class _HelpAction(argparse._HelpAction):
@@ -64,6 +65,14 @@ def parse_opts():
default = 30, default = 30,
nargs = '?' 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 = subparsers.add_parser('list', add_help=False)
list_parser.add_argument( list_parser.add_argument(
'--verbose', '-v', '--verbose', '-v',
@@ -85,26 +94,37 @@ def random_name():
return ''.join(chars) return ''.join(chars)
def create_new(p, days): def create_new(p, days, description):
os.mkdir(p) os.mkdir(p)
with open(os.path.join(p, DEL_TIME), 'wt') as fp: with open(os.path.join(p, DEL_TIME), 'wt') as fp:
fp.write(str(days)) 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): def get_stats(p):
# TODO: named tuple
try: try:
with open(os.path.join(p, DEL_TIME), 'rt') as fp: with open(os.path.join(p, DEL_TIME), 'rt') as fp:
do_del = int(fp.read(64)) do_del = int(fp.read(64))
desc = get_description(os.path.join(p, DESCRIPTION))
now = datetime.now() now = datetime.now()
mtime = datetime.fromtimestamp( os.path.getmtime(os.path.join(p, DEL_TIME)) ) mtime = datetime.fromtimestamp( os.path.getmtime(os.path.join(p, DEL_TIME)) )
del_delta = timedelta(days = do_del) del_delta = timedelta(days = do_del)
del_time = mtime + del_delta del_time = mtime + del_delta
to_del_time = del_time - now to_del_time = del_time - now
is_due = now > del_time 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: except Exception as e:
print(e) print(e)
return (None, None, False) return (None, None, False, False, "-")
def get_sub_files(p): def get_sub_files(p):
@@ -126,14 +146,15 @@ def list_folders(root_folder, verbose = False):
for p in names: for p in names:
stats = get_stats(p) stats = get_stats(p)
sub_files = get_sub_files(p) sub_files = get_sub_files(p)
due = "*" if stats[3] else "" due = "*" if stats[3] else " "
print("{}/{}/ {} {} {: 3d}d{}".format( print("{}/{}/ {} {} {: 4d}d{} {}".format(
root_folder, root_folder,
p, p,
stats[0].isoformat()[0:10], stats[0].isoformat()[0:10],
stats[1].isoformat()[0:10], stats[1].isoformat()[0:10],
stats[2].days, stats[2].days,
due due,
stats[4]
)) ))
if verbose: if verbose:
for sp in sub_files: for sp in sub_files:
@@ -158,7 +179,7 @@ if __name__ == '__main__':
new_name = random_name() new_name = random_name()
while os.path.exists(new_name): while os.path.exists(new_name):
new_name = random_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(os.path.abspath(new_name))
print(opts.root + "/" + new_name) print(opts.root + "/" + new_name)