mirror of
https://github.com/josegonzalez/python-github-backup.git
synced 2025-12-05 16:18:02 +01:00
Support changing the log level to the desired value easily. For example, this is useful to suppress progress messages but keep logging warnings and errors.
58 lines
1.5 KiB
Python
Executable File
58 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os, sys, logging
|
|
|
|
from github_backup.github_backup import (
|
|
backup_account,
|
|
backup_repositories,
|
|
check_git_lfs_install,
|
|
filter_repositories,
|
|
get_authenticated_user,
|
|
log_info,
|
|
log_warning,
|
|
mkdir_p,
|
|
parse_args,
|
|
retrieve_repositories,
|
|
)
|
|
|
|
logging.basicConfig(
|
|
format='%(asctime)s.%(msecs)03d: %(message)s',
|
|
datefmt='%Y-%m-%dT%H:%M:%S',
|
|
level=logging.INFO
|
|
)
|
|
|
|
def main():
|
|
args = parse_args()
|
|
|
|
output_directory = os.path.realpath(args.output_directory)
|
|
if not os.path.isdir(output_directory):
|
|
log_info('Create output directory {0}'.format(output_directory))
|
|
mkdir_p(output_directory)
|
|
|
|
if args.lfs_clone:
|
|
check_git_lfs_install()
|
|
|
|
if args.log_level:
|
|
log_level = logging.getLevelName(args.log_level.upper())
|
|
if isinstance(log_level, int):
|
|
logging.root.setLevel(log_level)
|
|
|
|
if not args.as_app:
|
|
log_info('Backing up user {0} to {1}'.format(args.user, output_directory))
|
|
authenticated_user = get_authenticated_user(args)
|
|
else:
|
|
authenticated_user = {'login': None}
|
|
|
|
repositories = retrieve_repositories(args, authenticated_user)
|
|
repositories = filter_repositories(args, repositories)
|
|
backup_repositories(args, output_directory, repositories)
|
|
backup_account(args, output_directory)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
main()
|
|
except Exception as e:
|
|
log_warning(str(e))
|
|
sys.exit(1)
|