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 remove_cmd
|
||||||
import websearch_cmd
|
import websearch_cmd
|
||||||
import tags_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 files
|
||||||
from .. import color
|
from .. import color
|
||||||
from ..repo import InvalidReference
|
from ..repo import InvalidReference
|
||||||
|
from ..paper import NoDocumentFile
|
||||||
|
|
||||||
|
|
||||||
def add_references_argument(parser, single=False):
|
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)")
|
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):
|
def add_paper_with_docfile(repo, paper, docfile=None, copy=False):
|
||||||
repo.add_paper(paper)
|
repo.add_paper(paper)
|
||||||
if docfile is not None:
|
if docfile is not None:
|
||||||
if copy:
|
add_docfile_to_paper(repo, paper, docfile, copy=copy)
|
||||||
repo.import_document(paper.citekey, docfile)
|
|
||||||
else:
|
|
||||||
paper.set_external_document(docfile)
|
|
||||||
repo.add_or_update(paper)
|
|
||||||
|
|
||||||
|
|
||||||
def extract_doc_path_from_bibdata(paper, ui):
|
def extract_doc_path_from_bibdata(paper, ui):
|
||||||
|
@ -6,7 +6,7 @@ from .. import color
|
|||||||
def parser(subparsers, config):
|
def parser(subparsers, config):
|
||||||
parser = subparsers.add_parser('list', help="list papers")
|
parser = subparsers.add_parser('list', help="list papers")
|
||||||
parser.add_argument('-k', '--citekeys-only', action='store_true',
|
parser.add_argument('-k', '--citekeys-only', action='store_true',
|
||||||
default=False,
|
default=False, dest='citekeys',
|
||||||
help='Only returns citekeys of matching papers.')
|
help='Only returns citekeys of matching papers.')
|
||||||
parser.add_argument('query', nargs='*',
|
parser.add_argument('query', nargs='*',
|
||||||
help='Paper query (e.g. "year: 2000" or "labels: math")')
|
help='Paper query (e.g. "year: 2000" or "labels: math")')
|
||||||
|
@ -21,6 +21,7 @@ cmds = collections.OrderedDict([
|
|||||||
('open', commands.open_cmd),
|
('open', commands.open_cmd),
|
||||||
('websearch', commands.websearch_cmd),
|
('websearch', commands.websearch_cmd),
|
||||||
('tags', commands.tags_cmd),
|
('tags', commands.tags_cmd),
|
||||||
|
('attach', commands.attach_cmd),
|
||||||
])
|
])
|
||||||
|
|
||||||
config = configs.read_config()
|
config = configs.read_config()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user