Merge branch 'feat/attach_cmd' into develop
This commit is contained in:
commit
2209ee6dc1
@ -9,3 +9,4 @@ import edit_cmd
|
||||
import remove_cmd
|
||||
import websearch_cmd
|
||||
import tags_cmd
|
||||
import attach_cmd
|
||||
|
34
papers/commands/attach_cmd.py
Normal file
34
papers/commands/attach_cmd.py
Normal file
@ -0,0 +1,34 @@
|
||||
from .. import repo
|
||||
from .. import configs
|
||||
from .helpers import (add_references_argument, parse_reference,
|
||||
add_docfile_to_paper)
|
||||
|
||||
|
||||
def parser(subparsers, config):
|
||||
parser = subparsers.add_parser('attach',
|
||||
help='attach a document to an existing paper')
|
||||
parser.add_argument('-c', '--copy', action='store_true', default=None,
|
||||
help="copy document files into library directory (default)")
|
||||
parser.add_argument('-C', '--nocopy', action='store_false', dest='copy',
|
||||
help="don't copy document files (opposite of -c)")
|
||||
add_references_argument(parser, single=True)
|
||||
parser.add_argument('document', help='pdf or ps file')
|
||||
return parser
|
||||
|
||||
|
||||
def command(config, ui, copy, reference, document):
|
||||
"""
|
||||
:param bibfile: bibtex file (in .bib, .bibml or .yaml format.
|
||||
:param docfile: path (no url yet) to a pdf or ps file
|
||||
"""
|
||||
if copy is None:
|
||||
copy = config.get(configs.MAIN_SECTION, 'import-copy')
|
||||
rp = repo.Repository.from_directory(config)
|
||||
key = parse_reference(ui, rp, reference)
|
||||
paper = rp.get_paper(key)
|
||||
try:
|
||||
add_docfile_to_paper(rp, paper, docfile=document, copy=copy)
|
||||
except ValueError, v:
|
||||
ui.error(v.message)
|
||||
ui.exit(1)
|
||||
# TODO handle case where citekey exists
|
@ -1,6 +1,7 @@
|
||||
from .. import files
|
||||
from .. import color
|
||||
from ..repo import InvalidReference
|
||||
from ..paper import NoDocumentFile
|
||||
|
||||
|
||||
def add_references_argument(parser, single=False):
|
||||
@ -12,14 +13,18 @@ def add_references_argument(parser, single=False):
|
||||
help="one or several reference to export (citekeysor numbers)")
|
||||
|
||||
|
||||
def add_docfile_to_paper(repo, paper, docfile, copy=False):
|
||||
if copy:
|
||||
repo.import_document(paper.citekey, docfile)
|
||||
else:
|
||||
paper.set_external_document(docfile)
|
||||
repo.add_or_update(paper)
|
||||
|
||||
|
||||
def add_paper_with_docfile(repo, paper, docfile=None, copy=False):
|
||||
repo.add_paper(paper)
|
||||
if docfile is not None:
|
||||
if copy:
|
||||
repo.import_document(paper.citekey, docfile)
|
||||
else:
|
||||
paper.set_external_document(docfile)
|
||||
repo.add_or_update(paper)
|
||||
add_docfile_to_paper(repo, paper, docfile, copy=copy)
|
||||
|
||||
|
||||
def extract_doc_path_from_bibdata(paper, ui):
|
||||
|
@ -6,7 +6,7 @@ from .. import color
|
||||
def parser(subparsers, config):
|
||||
parser = subparsers.add_parser('list', help="list papers")
|
||||
parser.add_argument('-k', '--citekeys-only', action='store_true',
|
||||
default=False,
|
||||
default=False, dest='citekeys',
|
||||
help='Only returns citekeys of matching papers.')
|
||||
parser.add_argument('query', nargs='*',
|
||||
help='Paper query (e.g. "year: 2000" or "labels: math")')
|
||||
|
@ -21,6 +21,7 @@ cmds = collections.OrderedDict([
|
||||
('open', commands.open_cmd),
|
||||
('websearch', commands.websearch_cmd),
|
||||
('tags', commands.tags_cmd),
|
||||
('attach', commands.attach_cmd),
|
||||
])
|
||||
|
||||
config = configs.read_config()
|
||||
|
Loading…
x
Reference in New Issue
Block a user