packagelister.whouses

 1import argparse
 2
 3from pathier import Pathier
 4
 5from packagelister import scan
 6
 7
 8def get_args() -> argparse.Namespace:
 9    parser = argparse.ArgumentParser()
10
11    parser.add_argument(
12        "package",
13        type=str,
14        help=""" Scan the current working directory for
15        project folders that use this package.""",
16    )
17
18    parser.add_argument(
19        "-i",
20        "--ignore",
21        nargs="*",
22        default=["pkgs", "envs"],
23        type=str,
24        help=""" Ignore these folders. """,
25    )
26    args = parser.parse_args()
27
28    return args
29
30
31def find(top_dir: Pathier, package: str, ignore: list[str]) -> list[str]:
32    """Find what sub-folders of top_dir, excluding those in ignore, use 'package'."""
33    package_users = []
34    for project in top_dir.iterdir():
35        if project.is_dir() and project.stem not in ignore:
36            if package in scan(project):
37                package_users.append(project.stem)
38    return package_users
39
40
41def main(args: argparse.Namespace = None):
42    if not args:
43        args = get_args()
44    package_users = find(Pathier.cwd(), args.package, args.ignore)
45    print(f"The following packages use {args.package}:")
46    print(*package_users, sep="\n")
47
48
49if __name__ == "__main__":
50    main(get_args())
def get_args() -> argparse.Namespace:
 9def get_args() -> argparse.Namespace:
10    parser = argparse.ArgumentParser()
11
12    parser.add_argument(
13        "package",
14        type=str,
15        help=""" Scan the current working directory for
16        project folders that use this package.""",
17    )
18
19    parser.add_argument(
20        "-i",
21        "--ignore",
22        nargs="*",
23        default=["pkgs", "envs"],
24        type=str,
25        help=""" Ignore these folders. """,
26    )
27    args = parser.parse_args()
28
29    return args
def find( top_dir: pathier.pathier.Pathier, package: str, ignore: list[str]) -> list[str]:
32def find(top_dir: Pathier, package: str, ignore: list[str]) -> list[str]:
33    """Find what sub-folders of top_dir, excluding those in ignore, use 'package'."""
34    package_users = []
35    for project in top_dir.iterdir():
36        if project.is_dir() and project.stem not in ignore:
37            if package in scan(project):
38                package_users.append(project.stem)
39    return package_users

Find what sub-folders of top_dir, excluding those in ignore, use 'package'.

def main(args: argparse.Namespace = None):
42def main(args: argparse.Namespace = None):
43    if not args:
44        args = get_args()
45    package_users = find(Pathier.cwd(), args.package, args.ignore)
46    print(f"The following packages use {args.package}:")
47    print(*package_users, sep="\n")