|
82 | 82 | import click
|
83 | 83 | from click import BadParameter
|
84 | 84 |
|
85 |
| -from renku.models._tabulate import tabulate |
86 |
| -from renku.models.datasets import Author |
87 |
| - |
88 | 85 | from ._client import pass_local_client
|
89 | 86 | from ._echo import progressbar
|
90 | 87 |
|
91 | 88 |
|
| 89 | +def _tabular(client, datasets=None): |
| 90 | + """Format datasets with a tabular output.""" |
| 91 | + from renku.models._tabulate import tabulate |
| 92 | + |
| 93 | + datasets = datasets or client.datasets |
| 94 | + |
| 95 | + click.echo( |
| 96 | + tabulate( |
| 97 | + datasets.values(), |
| 98 | + headers=OrderedDict(( |
| 99 | + ('short_id', 'id'), |
| 100 | + ('name', None), |
| 101 | + ('created', None), |
| 102 | + ('authors_csv', 'authors'), |
| 103 | + )), |
| 104 | + ) |
| 105 | + ) |
| 106 | + |
| 107 | + |
| 108 | +FORMATS = { |
| 109 | + 'tabular': _tabular, |
| 110 | +} |
| 111 | + |
| 112 | + |
92 | 113 | @click.group(invoke_without_command=True)
|
93 | 114 | @click.option('--datadir', default='data', type=click.Path(dir_okay=True))
|
| 115 | +@click.option( |
| 116 | + '--format', |
| 117 | + type=click.Choice(FORMATS), |
| 118 | + default='tabular', |
| 119 | + help='Choose an output format.' |
| 120 | +) |
94 | 121 | @pass_local_client(clean=False, commit=False)
|
95 | 122 | @click.pass_context
|
96 |
| -def dataset(ctx, client, datadir): |
| 123 | +def dataset(ctx, client, datadir, format): |
97 | 124 | """Handle datasets."""
|
98 | 125 | ctx.meta['renku.datasets.datadir'] = datadir
|
99 | 126 |
|
100 | 127 | if ctx.invoked_subcommand is not None:
|
101 | 128 | return
|
102 | 129 |
|
103 |
| - output = tabulate( |
104 |
| - client.datasets.values(), |
105 |
| - headers=OrderedDict((('short_id', 'id'), ('name', None), |
106 |
| - ('created', None), ('authors_csv', 'authors'))), |
107 |
| - ) |
108 |
| - click.echo(output) |
| 130 | + FORMATS[format](client) |
109 | 131 |
|
110 | 132 |
|
111 | 133 | @dataset.command()
|
112 | 134 | @click.argument('name')
|
113 | 135 | @pass_local_client(clean=True, commit=True)
|
114 | 136 | def create(client, name):
|
115 | 137 | """Create an empty dataset in the current repo."""
|
| 138 | + from renku.models.datasets import Author |
| 139 | + |
116 | 140 | with client.with_dataset(name=name) as dataset:
|
117 | 141 | click.echo('Creating a dataset ... ', nl=False)
|
118 | 142 | author = Author.from_git(client.repo)
|
|
0 commit comments