-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfind_repos.py
More file actions
71 lines (60 loc) · 2.04 KB
/
find_repos.py
File metadata and controls
71 lines (60 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python
import argparse
import asyncio
import logging
import sys
from src.mining.repository_finder import RepositoryFinder
def _get_parameters():
parser = argparse.ArgumentParser(
description="Find repositories on GitHub.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
)
parser.add_argument(
"--github_token",
required=True,
type=str,
help="Personal GitHub token. For information on how to create one, visit: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token"
)
parser.add_argument(
"--language",
required=True,
type=str,
help="Programming language to find repositories for.",
)
parser.add_argument(
"--organisation",
"--org",
type=str,
default=RepositoryFinder.APACHE_ORGANISATION,
help="Organisation to find repositories for."
)
parser.add_argument(
"--pagination",
type=int,
default = 100,
help="Pagination for retrieving repositories."
)
parser.add_argument(
"--maximum",
"--max",
type=int,
help="Maximum number of repositories to find."
)
args = parser.parse_args()
if args.pagination < 1:
raise argparse.ArgumentError(None, "--pagination cannot be lower than 1.")
if args.maximum is not None and args.maximum < 1:
raise argparse.ArgumentError(None, "--maximum cannot be lower than 1.")
return args
async def main():
try:
args = _get_parameters()
repository_finder = RepositoryFinder(args.github_token)
repository_finder.extract_repositories(args.organisation.lower(), args.pagination, args.language.lower(), args.maximum)
print("Repository find complete.")
except Exception as e:
logging.exception(e)
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
asyncio.run(main())