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)
评论列表
文章目录