def collect_git_repos(self): """ for every entry, get all git :return: """ git_repos = [] for entry in self.entries: repos = entry['Code repository'] for repo in repos: repo = repo.split(' ')[0].strip() url = osg.git_repo(repo) if url: git_repos.append(repo) # sort them alphabetically (and remove duplicates) git_repos = sorted(list(set(git_repos)), key=str.casefold) # write them to code/git json_path = os.path.join(c.root_path, 'code', 'git_repositories.json') text = json.dumps(git_repos, indent=1) utils.write_text(json_path, text)
def update_repos(self): """ export to json for local repository update of primary repos """ if not self.entries: print('entries not yet loaded') return primary_repos = {'git': [], 'svn': [], 'hg': []} unconsumed_entries = [] # for every entry filter those that are known git repositories (add additional repositories) for entry in self.entries: repos = entry['Code repository'] repos = [x.value for x in repos] # keep the first and all others containing @add if not repos: continue repos = [repos[0]] + [x for x in repos[1:] if "@add" in x] for repo in repos: consumed = False repo = repo.split(' ')[0].strip() url = osg.git_repo(repo) if url: primary_repos['git'].append(url) consumed = True continue url = osg.svn_repo(repo) if url: primary_repos['svn'].append(url) consumed = True continue url = osg.hg_repo(repo) if url: primary_repos['hg'].append(url) consumed = True continue if not consumed: unconsumed_entries.append([entry['Title'], repo]) print('Entry "{}" unconsumed repo: {}'.format( entry['File'], repo)) # sort them alphabetically (and remove duplicates) for k, v in primary_repos.items(): primary_repos[k] = sorted(set(v)) # statistics of gits git_repos = primary_repos['git'] print('{} Git repositories'.format(len(git_repos))) for domain in ('repo.or.cz', 'anongit.kde.org', 'bitbucket.org', 'git.code.sf.net', 'git.savannah', 'git.tuxfamily', 'github.com', 'gitlab.com', 'gitlab.com/osgames', 'gitlab.gnome.org'): print('{} on {}'.format( sum(1 if domain in x else 0 for x in git_repos), domain)) # write them to code/git json_path = os.path.join(c.root_path, 'code', 'archives.json') text = json.dumps(primary_repos, indent=1) utils.write_text(json_path, text) print('Repositories updated')