def item_info(item, name, show_hash=False, commit_hash=False, long_fmt=False, classification=None, numeric_ids=False, human_readable=False): """Return bytes containing the information to display for the VFS item. Classification may be "all", "type", or None. """ result = b'' if show_hash: oid = item_hash(item, commit_hash) result += b'%s ' % (hexlify(oid) if oid else b'0000000000000000000000000000000000000000') if long_fmt: meta = item.meta.copy() meta.path = name # FIXME: need some way to track fake vs real meta items? result += metadata.summary_bytes(meta, numeric_ids=numeric_ids, classification=classification, human_readable=human_readable) else: result += name if classification: cls = xstat.classification_str(vfs.item_mode(item), classification == 'all') result += cls.encode('ascii') return result
def item_info(item, name, show_hash = False, commit_hash=False, long_fmt = False, classification = None, numeric_ids = False, human_readable = False): """Return a string containing the information to display for the VFS item. Classification may be "all", "type", or None. """ result = '' if show_hash: oid = item_hash(item, commit_hash) result += '%s ' % (oid.encode('hex') if oid else '0000000000000000000000000000000000000000') if long_fmt: meta = item.meta.copy() meta.path = name # FIXME: need some way to track fake vs real meta items? result += metadata.summary_str(meta, numeric_ids=numeric_ids, classification=classification, human_readable=human_readable) else: result += name if classification: result += xstat.classification_str(vfs.item_mode(item), classification == 'all') return result
def summary_bytes(meta, numeric_ids=False, classification=None, human_readable=False): """Return bytes containing the "ls -l" style listing for meta. Classification may be "all", "type", or None.""" user_str = group_str = size_or_dev_str = b'?' symlink_target = None if meta: name = meta.path mode_str = xstat.mode_str(meta.mode).encode('ascii') symlink_target = meta.symlink_target mtime_secs = xstat.fstime_floor_secs(meta.mtime) mtime_str = strftime('%Y-%m-%d %H:%M', time.localtime(mtime_secs)).encode('ascii') if meta.user and not numeric_ids: user_str = meta.user elif meta.uid != None: user_str = str(meta.uid).encode() if meta.group and not numeric_ids: group_str = meta.group elif meta.gid != None: group_str = str(meta.gid).encode() if stat.S_ISCHR(meta.mode) or stat.S_ISBLK(meta.mode): if meta.rdev: size_or_dev_str = ( '%d,%d' % (os.major(meta.rdev), os.minor(meta.rdev))).encode() elif meta.size != None: if human_readable: size_or_dev_str = format_filesize(meta.size).encode() else: size_or_dev_str = str(meta.size).encode() else: size_or_dev_str = b'-' if classification: classification_str = \ xstat.classification_str(meta.mode, classification == 'all').encode() else: mode_str = b'?' * 10 mtime_str = b'????-??-?? ??:??' classification_str = b'?' name = name or b'' if classification: name += classification_str if symlink_target: name += b' -> ' + meta.symlink_target return b'%-10s %-11s %11s %16s %s' % (mode_str, user_str + b'/' + group_str, size_or_dev_str, mtime_str, name)
def summary_str(meta, numeric_ids = False, classification = None, human_readable = False): """Return a string containing the "ls -l" style listing for meta. Classification may be "all", "type", or None.""" user_str = group_str = size_or_dev_str = '?' symlink_target = None if meta: name = meta.path mode_str = xstat.mode_str(meta.mode) symlink_target = meta.symlink_target mtime_secs = xstat.fstime_floor_secs(meta.mtime) mtime_str = time.strftime('%Y-%m-%d %H:%M', time.localtime(mtime_secs)) if meta.user and not numeric_ids: user_str = meta.user elif meta.uid != None: user_str = str(meta.uid) if meta.group and not numeric_ids: group_str = meta.group elif meta.gid != None: group_str = str(meta.gid) if stat.S_ISCHR(meta.mode) or stat.S_ISBLK(meta.mode): if meta.rdev: size_or_dev_str = '%d,%d' % (os.major(meta.rdev), os.minor(meta.rdev)) elif meta.size != None: if human_readable: size_or_dev_str = format_filesize(meta.size) else: size_or_dev_str = str(meta.size) else: size_or_dev_str = '-' if classification: classification_str = \ xstat.classification_str(meta.mode, classification == 'all') else: mode_str = '?' * 10 mtime_str = '????-??-?? ??:??' classification_str = '?' name = name or '' if classification: name += classification_str if symlink_target: name += ' -> ' + meta.symlink_target return '%-10s %-11s %11s %16s %s' % (mode_str, user_str + "/" + group_str, size_or_dev_str, mtime_str, name)