Exemple #1
0
def dataset_remove(
    client,
    short_names,
    with_output=False,
    datasetscontext=contextlib.nullcontext,
    referencescontext=contextlib.nullcontext,
    commit_message=None
):
    """Delete a dataset."""
    datasets = {name: client.get_dataset_path(name) for name in short_names}

    if not datasets:
        raise ParameterError(
            'use dataset short_name or identifier', param_hint='short_names'
        )

    unknown = [
        name
        for name, path in datasets.items() if not path or not path.exists()
    ]
    if unknown:
        raise ParameterError(
            'unknown datasets ' + ', '.join(unknown), param_hint='short_names'
        )

    datasets = set(datasets.values())
    references = list(LinkReference.iter_items(client, common_path='datasets'))

    if not with_output:
        for dataset in datasets:
            if dataset and dataset.exists():
                dataset.unlink()

        for ref in references:
            if ref.reference in datasets:
                ref.delete()

        return datasets, references

    datasets_c = datasetscontext(datasets)

    with datasets_c as bar:
        for dataset in bar:
            if dataset and dataset.exists():
                dataset.unlink()

    references_c = referencescontext(references)

    with references_c as bar:
        for ref in bar:
            if ref.reference in datasets:
                ref.delete()
Exemple #2
0
def workflow(ctx, client):
    """List or manage workflows with subcommands."""
    if ctx.invoked_subcommand is None:
        from renku.core.models.refs import LinkReference

        names = defaultdict(list)
        for ref in LinkReference.iter_items(client, common_path='workflows'):
            names[ref.reference.name].append(ref.name)

        for path in client.workflow_path.glob('*.cwl'):
            click.echo('{path}: {names}'.format(
                path=path.name,
                names=', '.join(
                    click.style(_deref(name), fg='green')
                    for name in names[path.name]),
            ))
def check_missing_references(client):
    """Find missing references."""
    from renku.core.models.refs import LinkReference

    missing = [
        ref for ref in LinkReference.iter_items(client)
        if not ref.reference.exists()
    ]

    if not missing:
        return True, None

    problems = ('\n' + WARNING + 'There are missing references.'
                '\n  (use "git rm <name>" to clean them)\n\n\t' + '\n\t'.join(
                    click.style(str(ref.path), fg='yellow') + ' -> ' +
                    click.style(str(ref.reference), fg='red')
                    for ref in missing) + '\n')
    return False, problems
Exemple #4
0
def check_missing_references(client):
    """Find missing references."""
    from renku.core.models.refs import LinkReference

    missing = [
        ref for ref in LinkReference.iter_items(client)
        if not ref.reference.exists()
    ]

    if not missing:
        return True, None

    problems = ("\n" + WARNING + "There are missing references."
                '\n  (use "git rm <name>" to clean them)\n\n\t' + "\n\t".join(
                    click.style(str(ref.path), fg="yellow") + " -> " +
                    click.style(str(ref.reference), fg="red")
                    for ref in missing) + "\n")
    return False, problems
Exemple #5
0
 def workflow_names(self):
     """Return index of workflow names."""
     names = defaultdict(list)
     for ref in LinkReference.iter_items(self, common_path='workflows'):
         names[str(ref.reference.relative_to(self.path))].append(ref.name)
     return names