init.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:pomu 作者: Hummer12007 项目源码 文件源码
def init_portage_repo(create, repo, repo_dir):
    """
    Initialize a portage repository
    Parameters:
        create - if true, create a new portage repo with git,
                 else, reuse an existing one
        repo - name of the repository
        repo_dir - location of the newly created repository, if applicable
    """
    if not repo:
        return Result.Err('repository name required')
    rsets = portage.db[portage.root]['vartree'].settings.repositories
    if create:
        if repo in rsets.prepos_order:
            return Result.Err('a repository with such name already exists!')
        repo_path = path.join(repo_dir, repo)
        try:
            makedirs(repo_path)
        except PermissionError:
            return Result.Err('you do not have enough permissions to create the git repository')
        try:
            with open(path.join(portage.root, 'etc/portage/repos.conf', 'pomu.conf'), 'a') as f:
                f.write('[' + repo + ']' + '\n')
                f.write('location = ' + repo_path + '\n')
        except PermissionError:
            rmtree(repo_path)
            return Result.Err('you do not have enough permissions to setup a portage repo')
        Repo.init(repo_path)
        try:
            return Result.Ok(init_new(repo_path, repo).unwrap())
        except ResultException as e:
            rmtree(repo_path)
            return Result.Err(str(e))
    else:
        if repo not in rsets.prepos_order:
            return Result.Err('repository not found')
        return init_pomu(rsets.prepos[repo], repo)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号