def _make_repo_lookup(include_locals): data = {} for repo_id, entry in get_global_repositories_data().items(): if entry['enabled']: data.update({entry['id']: entry['path']}) if include_locals: # Having it here allows to override global repositories with local ones. data.update(get_user_config_repo_data().get('repos', {})) return data
def health_check(args): to_remove = [] data = get_user_config_repo_data() if not data: return for uuid, path in data.get('repos', {}).items(): if not os.path.isdir(path): print('Removing repository {uuid} => {path}'.format(uuid=uuid, path=path)) to_remove.append(uuid) for uuid in to_remove: data.get('repos', {}).pop(uuid, None) with open(get_user_config_repos(), 'w') as f: json.dump(data, f)
def list_repos(args): global_repos = {} if getattr(args, 'global', None) or args.all: global_repos = get_global_repositories_data() for entry in global_repos.values(): print('{name:<35} [{uuid}] => {path}'.format(name=entry['name'], path=entry['path'], uuid=entry['id'])) if not getattr(args, 'global', None): user_repos = get_user_config_repo_data() for path in user_repos.get('repos', {}).values(): if os.path.isdir(path): name = get_repository_name(path) uuid = get_repository_id(path) print('{name:<35} [{uuid}] => {path}'.format(name=name, path=path, uuid=uuid))
def link_repo(args): if not any((args.path, args.name, args.uuid)): raise UsageError( 'Please specify either --path, --name or --uuid to link another repository.' ) data = get_user_config_repo_data() path = args.path if not path: if args.uuid: path = data.get('repos', {}).get(args.uuid, None) elif args.name: for repository_path in data.get('repos', {}).values(): if os.path.isdir(repository_path): if args.name == get_repository_name(repository_path): path = repository_path break if not path: raise UsageError( 'Please specify a valid repository name, uuid or path') if add_repository_link('.', get_repository_id(path)): print('Added link to repository {path} - {name}'.format( path=path, name=get_repository_name(path)))