Changeset View
Changeset View
Standalone View
Standalone View
swh/provenance/cli.py
Show First 20 Lines • Show All 124 Lines • ▼ Show 20 Lines | |||||
@cli.command(name="iter-revisions") | @cli.command(name="iter-revisions") | ||||
@click.argument("filename") | @click.argument("filename") | ||||
@click.option("-a", "--track-all", default=True, type=bool) | @click.option("-a", "--track-all", default=True, type=bool) | ||||
@click.option("-l", "--limit", type=int) | @click.option("-l", "--limit", type=int) | ||||
@click.option("-m", "--min-depth", default=1, type=int) | @click.option("-m", "--min-depth", default=1, type=int) | ||||
@click.option("-r", "--reuse", default=True, type=bool) | @click.option("-r", "--reuse", default=True, type=bool) | ||||
@click.option("-s", "--min-size", default=0, type=int) | |||||
@click.pass_context | @click.pass_context | ||||
def iter_revisions( | def iter_revisions( | ||||
ctx: click.core.Context, | ctx: click.core.Context, | ||||
filename: str, | filename: str, | ||||
track_all: bool, | track_all: bool, | ||||
limit: Optional[int], | limit: Optional[int], | ||||
min_depth: int, | min_depth: int, | ||||
reuse: bool, | reuse: bool, | ||||
min_size: int, | |||||
) -> None: | ) -> None: | ||||
# TODO: add file size filtering | |||||
"""Process a provided list of revisions.""" | """Process a provided list of revisions.""" | ||||
from . import get_archive, get_provenance | from . import get_archive, get_provenance | ||||
from .revision import CSVRevisionIterator, revision_add | from .revision import CSVRevisionIterator, revision_add | ||||
archive = get_archive(**ctx.obj["config"]["provenance"]["archive"]) | archive = get_archive(**ctx.obj["config"]["provenance"]["archive"]) | ||||
revisions_provider = generate_revision_tuples(filename) | revisions_provider = generate_revision_tuples(filename) | ||||
revisions = CSVRevisionIterator(revisions_provider, limit=limit) | revisions = CSVRevisionIterator(revisions_provider, limit=limit) | ||||
with get_provenance(**ctx.obj["config"]["provenance"]["storage"]) as provenance: | with get_provenance(**ctx.obj["config"]["provenance"]["storage"]) as provenance: | ||||
for revision in revisions: | for revision in revisions: | ||||
revision_add( | revision_add( | ||||
provenance, | provenance, | ||||
archive, | archive, | ||||
[revision], | [revision], | ||||
trackall=track_all, | trackall=track_all, | ||||
lower=reuse, | lower=reuse, | ||||
mindepth=min_depth, | mindepth=min_depth, | ||||
minsize=min_size, | |||||
) | ) | ||||
def generate_revision_tuples( | def generate_revision_tuples( | ||||
filename: str, | filename: str, | ||||
) -> Generator[Tuple[Sha1Git, datetime, Sha1Git], None, None]: | ) -> Generator[Tuple[Sha1Git, datetime, Sha1Git], None, None]: | ||||
for line in open(filename, "r"): | for line in open(filename, "r"): | ||||
if line.strip(): | if line.strip(): | ||||
▲ Show 20 Lines • Show All 71 Lines • Show Last 20 Lines |