From e4f7017fdbe1df26285f6d87cf5380f49841dca0 Mon Sep 17 00:00:00 2001 From: Fabien Benureau Date: Tue, 2 Jul 2013 14:04:05 +0100 Subject: [PATCH] commands updated to new config, new repo --- papers/commands/add_cmd.py | 10 +++++----- papers/commands/add_library_cmd.py | 8 ++++---- papers/commands/attach_cmd.py | 10 +++++----- papers/commands/edit_cmd.py | 9 +++++---- papers/commands/export_cmd.py | 8 ++++---- papers/commands/helpers.py | 2 +- papers/commands/import_cmd.py | 11 +++++------ papers/commands/init_cmd.py | 29 ++++++++++++++--------------- papers/commands/list_cmd.py | 7 ++++--- papers/commands/open_cmd.py | 8 ++++---- papers/commands/remove_cmd.py | 12 ++++++------ papers/commands/tag_cmd.py | 13 +++++++------ papers/commands/update_cmd.py | 4 ++-- papers/commands/websearch_cmd.py | 4 ++-- 14 files changed, 68 insertions(+), 67 deletions(-) diff --git a/papers/commands/add_cmd.py b/papers/commands/add_cmd.py index 8a97537..838e090 100644 --- a/papers/commands/add_cmd.py +++ b/papers/commands/add_cmd.py @@ -1,11 +1,11 @@ from .. import repo from .. import files from ..paper import Paper, NoDocumentFile, get_bibentry_from_string -from .. import configs +from ..configs import config from .helpers import add_paper_with_docfile, extract_doc_path_from_bibdata -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('add', help='add a paper to the repository') parser.add_argument('-b', '--bibfile', help='bibtex, bibtexml or bibyaml file', default=None) @@ -19,14 +19,14 @@ def parser(subparsers, config): return parser -def command(config, ui, bibfile, docfile, tags, copy): +def command(ui, bibfile, docfile, tags, copy): """ :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) + copy = config().import_copy + rp = repo.Repository(config()) if bibfile is None: cont = True bibstr = '' diff --git a/papers/commands/add_library_cmd.py b/papers/commands/add_library_cmd.py index 3161d50..7fbdd9e 100644 --- a/papers/commands/add_library_cmd.py +++ b/papers/commands/add_library_cmd.py @@ -1,18 +1,18 @@ from .. import repo from ..paper import Paper +from ..configs import config - -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('add_library', help='add a set of papers to the repository') parser.add_argument('bibfile', help='bibtex, bibtexml or bibyaml file') return parser -def command(config, ui, bibfile): +def command(ui, bibfile): """ :param bibtex bibtex file (in .bib, .bibml or .yaml format. """ - rp = repo.Repository.from_directory(config) + rp = repo.Repository.from_directory(config()) for p in Paper.many_from_bib(bibfile): rp.add_paper(p) diff --git a/papers/commands/attach_cmd.py b/papers/commands/attach_cmd.py index b0d8eb3..3b51945 100644 --- a/papers/commands/attach_cmd.py +++ b/papers/commands/attach_cmd.py @@ -1,10 +1,10 @@ from .. import repo -from .. import configs +from ..configs import config from .helpers import (add_references_argument, parse_reference, add_docfile_to_paper) -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('attach', help='attach a document to an existing paper') parser.add_argument('-c', '--copy', action='store_true', default=None, @@ -16,14 +16,14 @@ def parser(subparsers, config): return parser -def command(config, ui, copy, reference, document): +def command(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) + copy = config().import_copy + rp = repo.Repository(config()) key = parse_reference(ui, rp, reference) paper = rp.get_paper(key) try: diff --git a/papers/commands/edit_cmd.py b/papers/commands/edit_cmd.py index dd630ef..2d379ca 100644 --- a/papers/commands/edit_cmd.py +++ b/papers/commands/edit_cmd.py @@ -2,9 +2,10 @@ from ..files import editor_input from .. import repo from ..paper import get_bibentry_from_string, get_safe_metadata_from_content from .helpers import add_references_argument, parse_reference +from ..configs import config -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('edit', help='open the paper bibliographic file in an editor') parser.add_argument('-m', '--meta', action='store_true', default=False, @@ -13,8 +14,8 @@ def parser(subparsers, config): return parser -def command(config, ui, meta, reference): - rp = repo.Repository.from_directory(config) +def command(ui, meta, reference): + rp = repo.Repository.from_directory(config()) key = parse_reference(ui, rp, reference) paper = rp.get_paper(key) to_edit = 'bib' @@ -25,7 +26,7 @@ def command(config, ui, meta, reference): content = f.read() while True: # Get new content from user - content = editor_input(config, content) + content = editor_input(config().edit_cmd, content) new_key = key bib = None metadata = None diff --git a/papers/commands/export_cmd.py b/papers/commands/export_cmd.py index 338026a..82e1f04 100644 --- a/papers/commands/export_cmd.py +++ b/papers/commands/export_cmd.py @@ -5,9 +5,9 @@ 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, config): +def parser(subparsers): parser = subparsers.add_parser('export', help='export bibliography') parser.add_argument('-f', '--bib-format', default='bibtex', @@ -16,11 +16,11 @@ def parser(subparsers, config): return parser -def command(config, ui, bib_format, references): +def command(ui, bib_format, references): """ :param bib_format (in 'bibtex', 'yaml') """ - rp = repo.Repository.from_directory(config) + rp = repo.Repository.from_directory(config()) papers = [rp.get_paper(c) for c in parse_references(ui, rp, references)] if len(papers) == 0: diff --git a/papers/commands/helpers.py b/papers/commands/helpers.py index 33988b4..c9df8a7 100644 --- a/papers/commands/helpers.py +++ b/papers/commands/helpers.py @@ -42,7 +42,7 @@ def extract_doc_path_from_bibdata(paper, ui): def parse_reference(ui, rp, ref): try: - return rp.citekey_from_ref(ref) + return rp.ref2citekey(ref) except InvalidReference: ui.error("no paper with reference: %s." % color.dye(ref, color.citekey)) diff --git a/papers/commands/import_cmd.py b/papers/commands/import_cmd.py index bb2a3cd..b883310 100644 --- a/papers/commands/import_cmd.py +++ b/papers/commands/import_cmd.py @@ -1,10 +1,9 @@ from .. import repo from ..paper import Paper from .helpers import add_paper_with_docfile, extract_doc_path_from_bibdata -from .. import configs +from ..configs import config - -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('import', help='import paper(s) to the repository') parser.add_argument('bibpath', @@ -16,13 +15,13 @@ def parser(subparsers, config): return parser -def command(config, ui, bibpath, copy): +def command(ui, bibpath, copy): """ :param bibpath: path (no url yet) to a bibliography file """ if copy is None: - copy = config.get(configs.MAIN_SECTION, 'import-copy') - rp = repo.Repository.from_directory(config) + copy = config().import_copy + rp = repo.Repository.from_directory(config()) # Extract papers from bib papers = Paper.many_from_path(bibpath, fatal=False) for p in papers: diff --git a/papers/commands/init_cmd.py b/papers/commands/init_cmd.py index 948a66b..d80f649 100644 --- a/papers/commands/init_cmd.py +++ b/papers/commands/init_cmd.py @@ -3,10 +3,11 @@ import os from ..repo import Repository -from .. import configs +from ..configs import config from .. import color +from .. import files -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('init', help="initialize the papers directory") parser.add_argument('-p', '--path', default=None, @@ -17,21 +18,19 @@ def parser(subparsers, config): return parser -def command(config, ui, path, doc_dir): +def command(ui, path, doc_dir): """Create a .papers directory""" - if path is None: - papersdir = config.get('papers', 'papers-directory') - else: - papersdir = os.path.join(os.getcwd(), path) - configs.add_and_write_option('papers', 'papers-directory', papersdir) - if os.path.exists(papersdir): - if len(os.listdir(papersdir)) > 0: + if path is not None: + config().papers_dir = files.clean_path(os.getcwd(), path) + ppd = config().papers_dir + if os.path.exists(ppd) and len(os.listdir(ppd)) > 0: ui.error('directory {} is not empty.'.format( - color.dye(papersdir, color.filepath))) + color.dye(ppd, color.filepath))) ui.exit() ui.print_('Initializing papers in {}.'.format( - color.dye(papersdir, color.filepath))) - repo = Repository() - repo.init(papersdir) # Creates directories - repo.save() # Saves empty repository description \ No newline at end of file + color.dye(ppd, color.filepath))) + + repo = Repository(config(), load = False) + repo.save() + config().save() diff --git a/papers/commands/list_cmd.py b/papers/commands/list_cmd.py index bfa8edd..88f4f4b 100644 --- a/papers/commands/list_cmd.py +++ b/papers/commands/list_cmd.py @@ -2,9 +2,10 @@ from .. import pretty from .. import repo from .. import color from . import helpers +from ..configs import config -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('list', help="list papers") parser.add_argument('-k', '--citekeys-only', action='store_true', default=False, dest='citekeys', @@ -14,8 +15,8 @@ def parser(subparsers, config): return parser -def command(config, ui, citekeys, query): - rp = repo.Repository.from_directory(config) +def command(ui, citekeys, query): + rp = repo.Repository(config()) papers = [(n, p) for n, p in enumerate(rp.all_papers()) if test_paper(query, p)] ui.print_('\n'.join(helpers.paper_oneliner(p, n = n, citekey_only = citekeys) for n, p in papers)) diff --git a/papers/commands/open_cmd.py b/papers/commands/open_cmd.py index ad1c832..26623d2 100644 --- a/papers/commands/open_cmd.py +++ b/papers/commands/open_cmd.py @@ -2,12 +2,12 @@ import subprocess from .. import repo from ..paper import NoDocumentFile -from .. import configs +from ..configs import config from .. import color from .helpers import add_references_argument, parse_reference -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('open', help='open the paper in a pdf viewer') parser.add_argument('-w', '--with', dest='with_command', default=None, @@ -16,12 +16,12 @@ def parser(subparsers, config): return parser -def command(config, ui, with_command, reference): +def command(ui, with_command, reference): rp = repo.Repository.from_directory(config) key = parse_reference(ui, rp, reference) paper = rp.get_paper(key) if with_command is None: - with_command = config.get(configs.MAIN_SECTION, 'open-cmd') + with_command = config().open_cmd try: filepath = paper.get_document_path() subprocess.Popen([with_command, filepath]) diff --git a/papers/commands/remove_cmd.py b/papers/commands/remove_cmd.py index 00147f6..8c38483 100644 --- a/papers/commands/remove_cmd.py +++ b/papers/commands/remove_cmd.py @@ -1,12 +1,12 @@ from .. import repo from .. import color -from .. import configs +from ..configs import config from .helpers import add_references_argument, parse_references from ..events import RemoveEvent -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('remove', help='removes a paper') parser.add_argument('-f', '--force', action='store_true', default=None, help="does not prompt for confirmation.") @@ -14,8 +14,8 @@ def parser(subparsers, config): return parser -def command(config, ui, force, references): - rp = repo.Repository.from_directory(config) +def command(ui, force, references): + rp = repo.Repository(config()) citekeys = parse_references(ui, rp, references) if force is None: are_you_sure = ("Are you sure you want to delete paper(s) [%s]" @@ -24,7 +24,7 @@ def command(config, ui, force, references): sure = ui.input_yn(question=are_you_sure, default='n') if force or sure: for c in citekeys: - rmevent = RemoveEvent(config, ui, c) + rmevent = RemoveEvent(ui, c) rmevent.send() - rp.remove(c) + rp.remove_paper(c) diff --git a/papers/commands/tag_cmd.py b/papers/commands/tag_cmd.py index d76deb4..0228ee3 100644 --- a/papers/commands/tag_cmd.py +++ b/papers/commands/tag_cmd.py @@ -19,8 +19,9 @@ The different use cases are : from ..repo import Repository, InvalidReference from . import helpers +from ..configs import config -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('tag', help="add, remove and show tags") parser.add_argument('referenceOrTag', nargs='?', default = None, help='reference to the paper (citekey or number), or ' @@ -43,12 +44,12 @@ def _parse_tags(s): for m in re.finditer(r'[+-]', s): if m.start() == last: if last != 0: - raise ValueError, 'could not match tag expression' + raise ValueError('could not match tag expression') else: tags.append(s[last:(m.start())]) last = m.start() if last == len(s): - raise ValueError, 'could not match tag expression' + raise ValueError('could not match tag expression') else: tags.append(s[last:]) return tags @@ -63,16 +64,16 @@ def _tag_groups(tags): minus_tags.append(tag[1:]) return set(plus_tags), set(minus_tags) -def command(config, ui, referenceOrTag, tags): +def command(ui, referenceOrTag, tags): """Add, remove and show tags""" - rp = Repository.from_directory(config) + rp = Repository(config()) if referenceOrTag is None: for tag in rp.get_tags(): ui.print_(tag) else: try: - citekey = rp.citekey_from_ref(referenceOrTag) + citekey = rp.ref2citekey(referenceOrTag) p = rp.get_paper(citekey) if tags is None: ui.print_(' '.join(p.tags)) diff --git a/papers/commands/update_cmd.py b/papers/commands/update_cmd.py index 6c521b9..041d955 100644 --- a/papers/commands/update_cmd.py +++ b/papers/commands/update_cmd.py @@ -1,12 +1,12 @@ from .. import repo from .. import color -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('update', help='update the repository to the lastest format') return parser -def command(config, ui): +def command(ui): rp = repo.Repository.from_directory(config) msg = ("You should backup the paper directory {} before continuing." "Continue ?").format(color.dye(rp.papersdir, color.filepath)) diff --git a/papers/commands/websearch_cmd.py b/papers/commands/websearch_cmd.py index be05e4e..1f61670 100644 --- a/papers/commands/websearch_cmd.py +++ b/papers/commands/websearch_cmd.py @@ -2,7 +2,7 @@ import webbrowser import urllib -def parser(subparsers, config): +def parser(subparsers): parser = subparsers.add_parser('websearch', help="launch a search on Google Scholar") parser.add_argument("search_string", nargs = '*', @@ -10,7 +10,7 @@ def parser(subparsers, config): return parser -def command(config, ui, search_string): +def command(ui, search_string): print search_string url = ("https://scholar.google.fr/scholar?q=%s&lr=" % (urllib.quote_plus(' '.join(search_string))))