def main_add(ctx, # type: click.Context
options, # type: Dict[str, Any]
build, # type: bool
editable, # type: Iterable[str]
tag, # type: Iterable[str]
install, # type: bool
pre, # type: bool
resolve_canonical_names, # type: bool
resolve_versions, # type: bool
specifiers, # type: Tuple[str, ...]
):
# type: (...) -> None
"""Add packages to requirement source files."""
if not options['directory'].exists():
console.error('run `{} init\' first', ctx.find_root().info_name)
ctx.abort()
specifiers = tuple('-e {}'.format(e) for e in editable) + specifiers
if install:
pip_args = tuple(shlex.split(' '.join(specifiers)))
if pre:
pip_args = ('--pre',) + pip_args
pip_install(ctx, *pip_args)
if not tag:
tag = ('main',)
pip_options, session = reqwire.helpers.requirements.build_pip_session()
src_dir = options['directory'] / options['source_dir']
lookup_index_urls = set() # type: Set[str]
for tag_name in tag:
filename = src_dir / ''.join((tag_name, options['extension']))
if not filename.exists():
continue
_, finder = reqwire.helpers.requirements.parse_requirements(
filename=str(filename))
lookup_index_urls |= set(finder.index_urls)
try:
for tag_name in tag:
console.info('saving requirement(s) to {}', tag_name)
reqwire.scaffold.extend_source_file(
working_directory=str(options['directory']),
tag_name=tag_name,
specifiers=specifiers,
extension=options['extension'],
lookup_index_urls=lookup_index_urls,
prereleases=pre,
resolve_canonical_names=resolve_canonical_names,
resolve_versions=resolve_versions)
except piptools.exceptions.NoCandidateFound as err:
console.error(str(err))
ctx.abort()
if build:
ctx.invoke(main_build, all=False, tag=tag)
评论列表
文章目录