Coverage for src\pathier\__init__.py: 38%
26 statements
« prev ^ index » next coverage.py v7.2.2, created at 2024-05-09 16:46 -0500
« prev ^ index » next coverage.py v7.2.2, created at 2024-05-09 16:46 -0500
1import argparse
3import griddle
4import noiftimer
5import printbuddies
6import younotyou
8from .pathier import Pathier, Pathish, Pathy
10__all__ = ["Pathier", "Pathy", "Pathish"]
13@noiftimer.time_it()
14def sizeup():
15 """Print the sub-directories and their sizes of the current working directory."""
16 parser = argparse.ArgumentParser("sizeup")
17 parser.add_argument(
18 "-i",
19 "--ignore",
20 nargs="*",
21 default=[],
22 type=str,
23 help="Directory patterns to ignore.",
24 )
25 args = parser.parse_args()
26 matcher = younotyou.Matcher(exclude_patterns=args.ignore)
27 sizes: dict[str, int] = {}
28 folders = [
29 folder
30 for folder in Pathier.cwd().iterdir()
31 if folder.is_dir() and str(folder) in matcher
32 ]
33 print(f"Sizing up {len(folders)} directories...")
34 for folder in printbuddies.track(folders, "Scanning directories"):
35 try:
36 sizes[folder.name] = folder.size
37 except Exception as e:
38 pass
39 total_size = sum(sizes[folder] for folder in sizes)
40 size_list = [
41 (folder, Pathier.format_bytes(sizes[folder]))
42 for folder in sorted(list(sizes.keys()), key=lambda f: sizes[f], reverse=True)
43 ]
44 print(griddle.griddy(size_list, ["Dir", "Size"]))
45 print(f"Total size of '{Pathier.cwd()}': {Pathier.format_bytes(total_size)}")
48__version__ = "1.5.2"