2020-06-01 15:08:06 +00:00
|
|
|
"""
|
|
|
|
A very simple `ls` clone.
|
|
|
|
|
|
|
|
If your terminal supports hyperlinks you should be able to launch files by clicking the filename
|
|
|
|
(usually with cmd / ctrl).
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
2020-05-31 11:56:25 +00:00
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
|
|
|
from rich import print
|
|
|
|
from rich.columns import Columns
|
2020-06-01 15:08:06 +00:00
|
|
|
from rich.text import Text
|
2020-05-31 11:56:25 +00:00
|
|
|
|
2020-06-01 15:08:06 +00:00
|
|
|
try:
|
|
|
|
root_path = sys.argv[1]
|
|
|
|
except IndexError:
|
|
|
|
print("Usage: python listdir.py DIRECTORY")
|
2020-05-31 11:56:25 +00:00
|
|
|
else:
|
2020-06-01 15:08:06 +00:00
|
|
|
|
|
|
|
def make_filename_text(filename):
|
|
|
|
path = os.path.abspath(os.path.join(root_path, filename))
|
|
|
|
text = Text(filename, style="bold blue" if os.path.isdir(path) else "default")
|
2020-07-23 15:49:07 +00:00
|
|
|
text.stylize(f"link file://{path}")
|
2020-06-01 15:08:06 +00:00
|
|
|
text.highlight_regex(r"\..*?$", "bold")
|
|
|
|
return text
|
|
|
|
|
|
|
|
filenames = [
|
2020-06-04 15:49:39 +00:00
|
|
|
filename for filename in os.listdir(root_path) if not filename.startswith(".")
|
2020-06-01 15:08:06 +00:00
|
|
|
]
|
|
|
|
filenames.sort(key=lambda filename: filename.lower())
|
|
|
|
filename_text = [make_filename_text(filename) for filename in filenames]
|
2020-10-03 15:39:52 +00:00
|
|
|
columns = Columns(filename_text, equal=True, column_first=True, expand=True)
|
2020-05-31 11:56:25 +00:00
|
|
|
print(columns)
|