|
|
|
import sys
|
|
|
|
|
|
|
|
from pybtex.database import BibliographyData
|
|
|
|
|
|
|
|
from .. import repo
|
|
|
|
from .. import files
|
|
|
|
from .helpers import parse_references, add_references_argument
|
|
|
|
from ..configs import config
|
|
|
|
|
|
|
|
def parser(subparsers):
|
|
|
|
parser = subparsers.add_parser('export',
|
|
|
|
help='export bibliography')
|
|
|
|
parser.add_argument('-f', '--bib-format', default='bibtex',
|
|
|
|
help="export format")
|
|
|
|
add_references_argument(parser)
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
def command(ui, bib_format, references):
|
|
|
|
"""
|
|
|
|
:param bib_format (in 'bibtex', 'yaml')
|
|
|
|
"""
|
|
|
|
rp = repo.Repository.from_directory(config())
|
|
|
|
papers = [rp.get_paper(c)
|
|
|
|
for c in parse_references(ui, rp, references)]
|
|
|
|
if len(papers) == 0:
|
|
|
|
papers = rp.all_papers()
|
|
|
|
bib = BibliographyData()
|
|
|
|
for p in papers:
|
|
|
|
bib.add_entry(p.citekey, p.bibentry)
|
|
|
|
try:
|
|
|
|
files.write_bibdata(bib, sys.stdout, bib_format)
|
|
|
|
except KeyError:
|
|
|
|
ui.error("Invalid output format: %s." % bib_format)
|