describe stuff
This commit is contained in:
35
flit.py
35
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user