Changeset View
Changeset View
Standalone View
Standalone View
swh/provenance/cli.py
Show First 20 Lines • Show All 123 Lines • ▼ Show 20 Lines | |||||
@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.pass_context | @click.pass_context | ||||
def iter_revisions(ctx, filename, track_all, limit, min_depth, reuse): | def iter_revisions(ctx, filename, track_all, limit, min_depth, reuse): | ||||
# TODO: add file size filtering | # 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 .provenance import revision_add | from .revision import CSVRevisionIterator, revision_add | ||||
from .revision import CSVRevisionIterator | |||||
archive = get_archive(**ctx.obj["config"]["archive"]) | archive = get_archive(**ctx.obj["config"]["archive"]) | ||||
provenance = get_provenance(**ctx.obj["config"]["provenance"]) | provenance = get_provenance(**ctx.obj["config"]["provenance"]) | ||||
revisions_provider = ( | revisions_provider = ( | ||||
line.strip().split(",") for line in open(filename, "r") if line.strip() | line.strip().split(",") for line in open(filename, "r") if line.strip() | ||||
) | ) | ||||
revisions = CSVRevisionIterator(revisions_provider, limit=limit) | revisions = CSVRevisionIterator(revisions_provider, limit=limit) | ||||
Show All 10 Lines | |||||
@cli.command(name="iter-origins") | @cli.command(name="iter-origins") | ||||
@click.argument("filename") | @click.argument("filename") | ||||
@click.option("-l", "--limit", type=int) | @click.option("-l", "--limit", type=int) | ||||
@click.pass_context | @click.pass_context | ||||
def iter_origins(ctx, filename, limit): | def iter_origins(ctx, filename, limit): | ||||
"""Process a provided list of origins.""" | """Process a provided list of origins.""" | ||||
from . import get_archive, get_provenance | from . import get_archive, get_provenance | ||||
from .origin import CSVOriginIterator | from .origin import CSVOriginIterator, origin_add | ||||
from .provenance import origin_add | |||||
archive = get_archive(**ctx.obj["config"]["archive"]) | archive = get_archive(**ctx.obj["config"]["archive"]) | ||||
provenance = get_provenance(**ctx.obj["config"]["provenance"]) | provenance = get_provenance(**ctx.obj["config"]["provenance"]) | ||||
origins_provider = ( | origins_provider = ( | ||||
line.strip().split(",") for line in open(filename, "r") if line.strip() | line.strip().split(",") for line in open(filename, "r") if line.strip() | ||||
) | ) | ||||
origins = CSVOriginIterator(origins_provider, limit=limit) | origins = CSVOriginIterator(origins_provider, limit=limit) | ||||
Show All 25 Lines | |||||
@cli.command(name="find-all") | @cli.command(name="find-all") | ||||
@click.argument("swhid") | @click.argument("swhid") | ||||
@click.option("-l", "--limit", type=int) | @click.option("-l", "--limit", type=int) | ||||
@click.pass_context | @click.pass_context | ||||
def find_all(ctx, swhid, limit): | def find_all(ctx, swhid, limit): | ||||
"""Find all occurrences of the requested blob.""" | """Find all occurrences of the requested blob.""" | ||||
from swh.provenance import get_provenance | from . import get_provenance | ||||
provenance = get_provenance(**ctx.obj["config"]["provenance"]) | provenance = get_provenance(**ctx.obj["config"]["provenance"]) | ||||
# TODO: return a dictionary with proper keys for each field | # TODO: return a dictionary with proper keys for each field | ||||
for row in provenance.content_find_all(hash_to_bytes(swhid), limit=limit): | for row in provenance.content_find_all(hash_to_bytes(swhid), limit=limit): | ||||
print( | print( | ||||
"swh:1:cnt:{cnt}, swh:1:rev:{rev}, {date}, {path}".format( | "swh:1:cnt:{cnt}, swh:1:rev:{rev}, {date}, {path}".format( | ||||
cnt=hash_to_hex(row[0]), | cnt=hash_to_hex(row[0]), | ||||
rev=hash_to_hex(row[1]), | rev=hash_to_hex(row[1]), | ||||
date=row[2], | date=row[2], | ||||
path=os.fsdecode(row[3]), | path=os.fsdecode(row[3]), | ||||
) | ) | ||||
) | ) |