From 6384d1815135649af4fa647f3205c16ed7dce95a Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Sat, 24 Mar 2018 18:00:27 +0100 Subject: Add extract command to extract the DOI --- bibtool/cli.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'bibtool/cli.py') diff --git a/bibtool/cli.py b/bibtool/cli.py index 6fe0890..63e3d5b 100644 --- a/bibtool/cli.py +++ b/bibtool/cli.py @@ -19,13 +19,29 @@ def cli(): pass +@cli.command('extract') +@click.argument('filename', type=TYPE_FILE) +@click.option('--all/--single', '-a/-s', 'print_all', default=False) +def _extract(filename, print_all): + for doi in bibtool.extract.get_doi_generator(filename): + print(doi) + if not print_all: + return + + @cli.command('import') @click.argument('filename', type=TYPE_FILE) @click.option('--directory', type=TYPE_DIR, default=os.getcwd()) @click.option('--delete/--no-delete', default=False) @click.option('--doi', type=str, default=None) def _import(filename, directory, delete, doi): - bibtex_data = bibtool.extract.get_bibtex_data(filename, doi) + doi_generator = bibtool.extract.get_doi_generator(filename) + try: + doi = next(doi_generator) + except StopIteration: + raise Exception('Could not extract a DOI from {}'.format(filename)) + + bibtex_data = bibtool.extract.get_bibtex_data(doi) if not bibtex_data.entries: raise Exception('Did not find any Bibtex entry.') -- cgit v1.2.1