|
import functools
|
|
print = functools.partial(print,flush=True)
|
|
import read_env
|
|
import os
|
|
import argparse
|
|
from gitea_api import GiteaRepoManager
|
|
|
|
import logging
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
# Reads by default .env
|
|
read_env.load_env()
|
|
|
|
def parse_arguments() -> argparse.Namespace:
|
|
"""
|
|
Parse command-line arguments with defaults from environment variables.
|
|
|
|
Returns:
|
|
argparse.Namespace: Parsed arguments with attributes:
|
|
- gitea_username (str)
|
|
- gitea_password (str)
|
|
- gitea_api_url (str)
|
|
- gitea_api_token (str)
|
|
- dry_run (bool)
|
|
"""
|
|
parser = argparse.ArgumentParser(
|
|
description=(
|
|
"Manage Gitea repositories. "
|
|
"Configure via command-line arguments or environment variables. "
|
|
"Contact: retoor <retoor@molodetz.nl> for support."
|
|
)
|
|
)
|
|
|
|
# Add arguments with defaults from environment variables
|
|
parser.add_argument(
|
|
'--gitea-username',
|
|
type=str,
|
|
default=os.environ.get('GITEA_USERNAME'),
|
|
help='Gitea username (default: from GITEA_USERNAME env variable)'
|
|
)
|
|
parser.add_argument(
|
|
'--gitea-password',
|
|
type=str,
|
|
default=os.environ.get('GITEA_PASSWORD'),
|
|
help='Gitea password (default: from GITEA_PASSWORD env variable)'
|
|
)
|
|
parser.add_argument(
|
|
'--gitea-api-url',
|
|
type=str,
|
|
default=os.environ.get('GITEA_API_URL'),
|
|
help='Gitea API URL (default: from GITEA_API_URL env variable)'
|
|
)
|
|
parser.add_argument(
|
|
'--gitea-api-token',
|
|
type=str,
|
|
default=os.environ.get('GITEA_API_TOKEN'),
|
|
help='Gitea API token (default: from GITEA_API_TOKEN env variable)'
|
|
)
|
|
|
|
# Mutually exclusive dry-run flags
|
|
dry_run_group = parser.add_mutually_exclusive_group()
|
|
dry_run_group.add_argument(
|
|
'--dry-run',
|
|
dest='dry_run',
|
|
action='store_true',
|
|
help='Perform a dry run without making changes (default: enabled)'
|
|
)
|
|
dry_run_group.add_argument(
|
|
'--no-dry-run',
|
|
dest='dry_run',
|
|
action='store_false',
|
|
help='Disable dry run and make real changes'
|
|
)
|
|
parser.set_defaults(dry_run=True)
|
|
|
|
return parser.parse_args()
|
|
|
|
def main() -> None:
|
|
"""
|
|
Main function to initialize the GiteaRepoManager with parsed arguments
|
|
and manage repositories.
|
|
"""
|
|
args = parse_arguments()
|
|
|
|
# Initialize the manager with arguments
|
|
manager = GiteaRepoManager(
|
|
api_url=args.gitea_api_url,
|
|
token=args.gitea_api_token,
|
|
username=args.gitea_username,
|
|
password=args.gitea_password,
|
|
)
|
|
|
|
# Manage repositories with dry_run as specified
|
|
manager.manage_repositories(dry_run=args.dry_run)
|
|
#manager.delete_users_above_id(1337, not args.dry_run, args.dry_run)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|