Skip to content

Instantly share code, notes, and snippets.

@elleryq
Created July 1, 2023 14:37
Show Gist options
  • Save elleryq/9985d04ccb6d3173837f19ab0794648f to your computer and use it in GitHub Desktop.
Save elleryq/9985d04ccb6d3173837f19ab0794648f to your computer and use it in GitHub Desktop.
shorten_path
#!/usr/bin/env python3
import argparse
import sys
import pathlib
def cut_path(path, limit):
if len(path)>limit:
parts = list(pathlib.PurePath(path).parts)
# print(parts)
#if len(parts) >= 4:
# parts [2:-1] = ['...']
new_parts = []
for part in parts[:-1]:
if len(part)>4:
new_parts.append(part[:4] + "..")
else:
new_parts.append(part)
new_parts.append(parts[-1])
#print(new_parts)
new_path = str(pathlib.PurePath(*new_parts))
#print(len(new_path))
if len(new_path) > limit:
parts[2:-1] = ['...']
return pathlib.PurePath(*parts)
return new_path
else:
return path
def main():
parser = argparse.ArgumentParser(
prog=sys.argv[0],
)
parser.add_argument('-l', '--limit', type=int, default=76)
parser.add_argument('filename')
args = parser.parse_args()
print(cut_path(args.filename, args.limit))
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment