From 67d2af6c0e77df221e4d5debabaef4d66bf0b1b2 Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Sun, 14 Oct 2018 08:09:11 +0300 Subject: [PATCH] ls: show HMS if sorted by time --- pupy/modules/lib/__init__.py | 7 +++++-- pupy/modules/ls.py | 18 +++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/pupy/modules/lib/__init__.py b/pupy/modules/lib/__init__.py index 28bf1c6d..142e1fc2 100644 --- a/pupy/modules/lib/__init__.py +++ b/pupy/modules/lib/__init__.py @@ -13,10 +13,13 @@ def size_human_readable(num, suffix='B'): except: return '0.00 B' -def file_timestamp(timestamp): +def file_timestamp(timestamp, time=False): try: d = datetime.fromtimestamp(timestamp) - return str(d.strftime("%d/%m/%y")) + if time: + return str(d.strftime('%d/%m/%y %H:%M:%S')) + else: + return str(d.strftime('%d/%m/%y')) except: return '00/00/00' diff --git a/pupy/modules/ls.py b/pupy/modules/ls.py index 70ff4997..87cc9db9 100644 --- a/pupy/modules/ls.py +++ b/pupy/modules/ls.py @@ -24,7 +24,7 @@ T_TARFILE = 13 # TODO: Rewrite using tables -def output_format(file, windows=False, archive=None): +def output_format(file, windows=False, archive=None, time=False): if file[T_TYPE] == 'X': return '--- TRUNCATED ---' @@ -33,15 +33,17 @@ def output_format(file, windows=False, archive=None): if archive: name += u' \u25bb ' + archive + timestamp_field = u'{:<18}' if time else u'{:<10}' + if windows: out = u' {}{}{}{}'.format( - u'{:<10}'.format(file_timestamp(file[T_TIMESTAMP])), + timestamp_field.format(file_timestamp(file[T_TIMESTAMP], time)), u'{:<3}'.format(file[T_TYPE]), u'{:<11}'.format(size_human_readable(file[T_SIZE])), u'{:<40}'.format(name)) else: out = u' {}{}{}{}{}{}{}'.format( - u'{:<10}'.format(file_timestamp(file[T_TIMESTAMP])), + timestamp_field.format(file_timestamp(file[T_TIMESTAMP], time)), u'{:<3}'.format(file[T_TYPE]), u'{:<5}'.format(file[T_UID]), u'{:<5}'.format(file[T_GID]), @@ -119,6 +121,8 @@ class ls(PupyModule): files_cnt = 0 dirs_cnt = 0 + show_time = args.sort == T_TIMESTAMP + for r in results: if T_FILES in r: archive = None @@ -153,10 +157,10 @@ class ls(PupyModule): files_cnt += 1 for f in sorted(dirs, key=lambda x: to_utf8(x.get(T_NAME)), reverse=args.reverse): - self.log(output_format(f, is_windows)) + self.log(output_format(f, is_windows, time=show_time)) for f in sorted(files, key=lambda x: to_utf8(x.get(T_NAME)), reverse=args.reverse): - self.log(output_format(f, is_windows)) + self.log(output_format(f, is_windows, time=show_time)) if truncated: self.warning('Folder is too big. Not listed: {} (-L {})'.format( @@ -177,7 +181,7 @@ class ls(PupyModule): truncated = True continue - self.log(output_format(f, is_windows)) + self.log(output_format(f, is_windows, time=show_time)) if truncated: self.log('--- TRUNCATED ---') @@ -191,7 +195,7 @@ class ls(PupyModule): elif T_TARFILE in r: archive = 'TAR' is_windows = False - self.log(output_format(r[T_FILE], is_windows, archive)) + self.log(output_format(r[T_FILE], is_windows, archive, show_time)) else: self.error('Old format. Update pupyutils.basic_cmds') return