From e6703218e956db94d6db164e8686652f6341f39c Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Sat, 24 Mar 2018 19:29:47 +0100 Subject: Add fetch command to get BibTeX data for DOI --- bibtool/cli.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'bibtool/cli.py') diff --git a/bibtool/cli.py b/bibtool/cli.py index 63e3d5b..a6aa1bf 100644 --- a/bibtool/cli.py +++ b/bibtool/cli.py @@ -11,9 +11,22 @@ import click TYPE_FILE = click.Path(exists=True, file_okay=True, dir_okay=False) +TYPE_FILENAME = click.Path(exists=False, file_okay=True, dir_okay=False) TYPE_DIR = click.Path(exists=True, file_okay=False, dir_okay=True) +def _get_bibtex_filename(bibtex_data, directory, output=None): + assert bibtex_data.entries + + entry = bibtex_data.entries[0] + if not output: + output = os.path.join(directory, entry['ID'] + '.bib') + elif not os.path.isabs(output): + output = os.path.join(directory, output) + + return output + + @click.group() def cli(): pass @@ -29,6 +42,13 @@ def _extract(filename, print_all): return +@cli.command('fetch') +@click.argument('doi') +def _fetch(doi): + bibtex_data = bibtool.extract.get_bibtex_data(doi) + print(bibtexparser.dumps(bibtex_data)) + + @cli.command('import') @click.argument('filename', type=TYPE_FILE) @click.option('--directory', type=TYPE_DIR, default=os.getcwd()) @@ -43,11 +63,6 @@ def _import(filename, directory, delete, doi): bibtex_data = bibtool.extract.get_bibtex_data(doi) - if not bibtex_data.entries: - raise Exception('Did not find any Bibtex entry.') - if len(bibtex_data.entries) > 1: - raise Exception('Found more than one Bibtex entries.') - entry = bibtex_data.entries[0] click.echo('Found one Bibtex entry: ' + entry['ID']) if click.confirm('Do you want to edit the entry?'): @@ -66,7 +81,7 @@ def _import(filename, directory, delete, doi): click.confirm('Add {} to the repository?'.format(entry['ID']), default=True, abort=True) - bibfilename = os.path.join(directory, entry['ID'] + '.bib') + bibfilename = _get_bibtex_filename(bibtex_data, directory) outfileext = os.path.splitext(filename)[1] outfilename = os.path.join(directory, entry['ID'] + outfileext) -- cgit v1.2.1