1
0
Fork 0
mirror of https://github.com/clockfort/GitHub-Backup.git synced 2025-03-16 00:00:06 +01:00

fixing usage for different cases

Signed-off-by: Ildar Valiullin <preved.911@gmail.com>
This commit is contained in:
Ildar Valiullin 2022-02-27 03:40:30 +03:00
parent e8cf9a6f2a
commit 46d67e2e0b

View file

@ -71,14 +71,13 @@ def main():
args.backupdir = args.backupdir.rstrip("/")
# Make the connection to Github here.
config = {}
config = {'login_or_token': args.login_or_token}
if args.password == False:
# no password option given, continue unauthenticated
# unauthenticated users can only use http git method
args.type = 'http'
elif args.password == None:
# password option given, but no password value given
config = {'login_or_token': args.login_or_token}
if os.path.isfile(CONFFILE):
cfg = ConfigParser()
cfg.read(CONFFILE)
@ -91,7 +90,6 @@ def main():
if password:
config['password'] = password
else:
config = {'login_or_token': args.login_or_token}
config['password'] = args.password
LOGGER.debug("Github config: %r", config)
@ -101,28 +99,33 @@ def main():
if not os.path.exists(args.backupdir):
mkdir_p(args.backupdir)
if args.organization:
if args.password:
account = gh.get_organization(args.organization)
else:
account = gh.get_organization(args.login_or_token)
else:
if args.username:
account = gh.get_user(args.username)
elif config.get('password', None):
account = gh.get_user()
else:
account = gh.get_user(args.login_or_token)
while True:
try:
if args.organization:
account = gh.get_organization(args.organization)
else:
if args.username:
account = gh.get_user(args.username)
elif config.get('password', None):
account = gh.get_user()
else:
account = gh.get_user(args.login_or_token)
IS_AUTHORIZED = isinstance(account, github.AuthenticatedUser.AuthenticatedUser)
assert not (bool(config.get('password', None)) ^ IS_AUTHORIZED), account
break
except github.BadCredentialsException:
LOGGER.info("Given login_or_token is not authenticated, ignoring...")
# Reset gh client, try without auth
gh = github.Github()
IS_AUTHORIZED = isinstance(account, (github.AuthenticatedUser.AuthenticatedUser, github.Organization.Organization))
assert (bool(config.get('password', None)) or IS_AUTHORIZED), account
if args.include_keys and not IS_AUTHORIZED:
LOGGER.info("Cannot backup keys with unauthenticated account, ignoring...")
args.include_keys = False
filters = {}
if IS_AUTHORIZED:
if isinstance(account, github.AuthenticatedUser.AuthenticatedUser):
# Get all repos
filters = {
'affiliation': ','.join(args.affiliation),
@ -329,12 +332,12 @@ class RepositoryBackup(object):
if self.is_gist:
url = repo.git_pull_url
elif args.type == 'http' or not IS_AUTHORIZED:
url = repo.clone_url
elif args.type == 'ssh':
url = repo.ssh_url
elif args.type == 'git':
url = repo.git_url
elif args.type == 'http' or not IS_AUTHORIZED:
url = repo.clone_url
self.url = url
self.wiki_url = None