Merge branch 'feat/attach_cmd' into develop

main
Olivier Mangin 12 years ago
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

@ -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,9 +13,7 @@ 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_paper_with_docfile(repo, paper, docfile=None, copy=False): def add_docfile_to_paper(repo, paper, docfile, copy=False):
repo.add_paper(paper)
if docfile is not None:
if copy: if copy:
repo.import_document(paper.citekey, docfile) repo.import_document(paper.citekey, docfile)
else: else:
@ -22,6 +21,12 @@ def add_paper_with_docfile(repo, paper, docfile=None, copy=False):
repo.add_or_update(paper) 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:
add_docfile_to_paper(repo, paper, docfile, copy=copy)
def extract_doc_path_from_bibdata(paper, ui): def extract_doc_path_from_bibdata(paper, ui):
try: try:
file_path = paper.get_document_file_from_bibdata(remove=True) file_path = paper.get_document_file_from_bibdata(remove=True)

@ -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…
Cancel
Save