Daemon mode should monitor all user's repositories if specific repository haven't been specified #37
|
@ -25,7 +25,10 @@ def parse_args():
|
||||||
help='Base URL for the Gitea instance, e.g., https://gitfub.space/api/v1',
|
help='Base URL for the Gitea instance, e.g., https://gitfub.space/api/v1',
|
||||||
)
|
)
|
||||||
parser.add_argument('--owner', required=True, help='Owner of the repository')
|
parser.add_argument('--owner', required=True, help='Owner of the repository')
|
||||||
parser.add_argument('--repo', required=True, help='Repository name')
|
parser.add_argument(
|
||||||
|
'--repo',
|
||||||
|
help='Repository name. If not specified, all repositories for the owner will be scanned.',
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--base-branch',
|
'--base-branch',
|
||||||
default='main',
|
default='main',
|
||||||
|
@ -58,15 +61,36 @@ def main():
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
|
if args.repo:
|
||||||
logger.info('Checking for new issues...')
|
logger.info('Checking for new issues...')
|
||||||
handle_issues(args, client, seen_issues_db)
|
handle_issues(args, client, seen_issues_db)
|
||||||
logger.info(f'Sleeping for {args.interval} seconds...')
|
logger.info(f'Sleeping for {args.interval} seconds...')
|
||||||
time.sleep(args.interval)
|
time.sleep(args.interval)
|
||||||
|
else:
|
||||||
|
repositories = client.get_user_repositories(args.owner)
|
||||||
|
for repo in repositories:
|
||||||
|
args_copy = argparse.Namespace()
|
||||||
|
args_copy.gitea_url = args.gitea_url
|
||||||
|
args_copy.owner = args.owner
|
||||||
|
args_copy.repo = repo
|
||||||
|
args_copy.base_branch = args.base_branch
|
||||||
|
handle_issues(args_copy, client, seen_issues_db)
|
||||||
|
time.sleep(args.interval)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
logger.exception('Daemon stopped by user')
|
logger.exception('Daemon stopped by user')
|
||||||
else:
|
else:
|
||||||
# One-off run
|
# One-off run
|
||||||
|
if args.repo:
|
||||||
handle_issues(args, client, seen_issues_db)
|
handle_issues(args, client, seen_issues_db)
|
||||||
|
else:
|
||||||
|
repositories = client.get_user_repositories(args.owner)
|
||||||
|
for repo in repositories:
|
||||||
|
args_copy = argparse.Namespace()
|
||||||
|
args_copy.gitea_url = args.gitea_url
|
||||||
|
args_copy.owner = args.owner
|
||||||
|
args_copy.repo = repo
|
||||||
|
args_copy.base_branch = args.base_branch
|
||||||
|
handle_issues(args_copy, client, seen_issues_db)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -106,3 +106,19 @@ class GiteaClient:
|
||||||
if any(label.get('name') == 'aider' for label in issue.get('labels', []))
|
if any(label.get('name') == 'aider' for label in issue.get('labels', []))
|
||||||
]
|
]
|
||||||
return issues
|
return issues
|
||||||
|
|
||||||
|
def get_user_repositories(self, owner: str) -> list:
|
||||||
|
"""
|
||||||
|
Get a list of repositories for a given user.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
owner (str): The owner of the repositories.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list: A list of repository names.
|
||||||
|
"""
|
||||||
|
url = f'{self.gitea_url}/users/{owner}/repos'
|
||||||
|
response = self.session.get(url)
|
||||||
|
response.raise_for_status()
|
||||||
|
repos = response.json()
|
||||||
|
return [repo['name'] for repo in repos]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user