commands updated to new config, new repo
This commit is contained in:
parent
164816a910
commit
e4f7017fdb
@ -1,11 +1,11 @@
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from .. import files
|
from .. import files
|
||||||
from ..paper import Paper, NoDocumentFile, get_bibentry_from_string
|
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
|
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 = subparsers.add_parser('add', help='add a paper to the repository')
|
||||||
parser.add_argument('-b', '--bibfile',
|
parser.add_argument('-b', '--bibfile',
|
||||||
help='bibtex, bibtexml or bibyaml file', default=None)
|
help='bibtex, bibtexml or bibyaml file', default=None)
|
||||||
@ -19,14 +19,14 @@ def parser(subparsers, config):
|
|||||||
return parser
|
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 bibfile: bibtex file (in .bib, .bibml or .yaml format.
|
||||||
:param docfile: path (no url yet) to a pdf or ps file
|
:param docfile: path (no url yet) to a pdf or ps file
|
||||||
"""
|
"""
|
||||||
if copy is None:
|
if copy is None:
|
||||||
copy = config.get(configs.MAIN_SECTION, 'import-copy')
|
copy = config().import_copy
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository(config())
|
||||||
if bibfile is None:
|
if bibfile is None:
|
||||||
cont = True
|
cont = True
|
||||||
bibstr = ''
|
bibstr = ''
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from ..paper import Paper
|
from ..paper import Paper
|
||||||
|
from ..configs import config
|
||||||
|
|
||||||
|
def parser(subparsers):
|
||||||
def parser(subparsers, config):
|
|
||||||
parser = subparsers.add_parser('add_library',
|
parser = subparsers.add_parser('add_library',
|
||||||
help='add a set of papers to the repository')
|
help='add a set of papers to the repository')
|
||||||
parser.add_argument('bibfile', help='bibtex, bibtexml or bibyaml file')
|
parser.add_argument('bibfile', help='bibtex, bibtexml or bibyaml file')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, bibfile):
|
def command(ui, bibfile):
|
||||||
"""
|
"""
|
||||||
:param bibtex bibtex file (in .bib, .bibml or .yaml format.
|
: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):
|
for p in Paper.many_from_bib(bibfile):
|
||||||
rp.add_paper(p)
|
rp.add_paper(p)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from .. import configs
|
from ..configs import config
|
||||||
from .helpers import (add_references_argument, parse_reference,
|
from .helpers import (add_references_argument, parse_reference,
|
||||||
add_docfile_to_paper)
|
add_docfile_to_paper)
|
||||||
|
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
parser = subparsers.add_parser('attach',
|
parser = subparsers.add_parser('attach',
|
||||||
help='attach a document to an existing paper')
|
help='attach a document to an existing paper')
|
||||||
parser.add_argument('-c', '--copy', action='store_true', default=None,
|
parser.add_argument('-c', '--copy', action='store_true', default=None,
|
||||||
@ -16,14 +16,14 @@ def parser(subparsers, config):
|
|||||||
return parser
|
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 bibfile: bibtex file (in .bib, .bibml or .yaml format.
|
||||||
:param docfile: path (no url yet) to a pdf or ps file
|
:param docfile: path (no url yet) to a pdf or ps file
|
||||||
"""
|
"""
|
||||||
if copy is None:
|
if copy is None:
|
||||||
copy = config.get(configs.MAIN_SECTION, 'import-copy')
|
copy = config().import_copy
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository(config())
|
||||||
key = parse_reference(ui, rp, reference)
|
key = parse_reference(ui, rp, reference)
|
||||||
paper = rp.get_paper(key)
|
paper = rp.get_paper(key)
|
||||||
try:
|
try:
|
||||||
|
@ -2,9 +2,10 @@ from ..files import editor_input
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from ..paper import get_bibentry_from_string, get_safe_metadata_from_content
|
from ..paper import get_bibentry_from_string, get_safe_metadata_from_content
|
||||||
from .helpers import add_references_argument, parse_reference
|
from .helpers import add_references_argument, parse_reference
|
||||||
|
from ..configs import config
|
||||||
|
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
parser = subparsers.add_parser('edit',
|
parser = subparsers.add_parser('edit',
|
||||||
help='open the paper bibliographic file in an editor')
|
help='open the paper bibliographic file in an editor')
|
||||||
parser.add_argument('-m', '--meta', action='store_true', default=False,
|
parser.add_argument('-m', '--meta', action='store_true', default=False,
|
||||||
@ -13,8 +14,8 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, meta, reference):
|
def command(ui, meta, reference):
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository.from_directory(config())
|
||||||
key = parse_reference(ui, rp, reference)
|
key = parse_reference(ui, rp, reference)
|
||||||
paper = rp.get_paper(key)
|
paper = rp.get_paper(key)
|
||||||
to_edit = 'bib'
|
to_edit = 'bib'
|
||||||
@ -25,7 +26,7 @@ def command(config, ui, meta, reference):
|
|||||||
content = f.read()
|
content = f.read()
|
||||||
while True:
|
while True:
|
||||||
# Get new content from user
|
# Get new content from user
|
||||||
content = editor_input(config, content)
|
content = editor_input(config().edit_cmd, content)
|
||||||
new_key = key
|
new_key = key
|
||||||
bib = None
|
bib = None
|
||||||
metadata = None
|
metadata = None
|
||||||
|
@ -5,9 +5,9 @@ from pybtex.database import BibliographyData
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from .. import files
|
from .. import files
|
||||||
from .helpers import parse_references, add_references_argument
|
from .helpers import parse_references, add_references_argument
|
||||||
|
from ..configs import config
|
||||||
|
|
||||||
|
def parser(subparsers):
|
||||||
def parser(subparsers, config):
|
|
||||||
parser = subparsers.add_parser('export',
|
parser = subparsers.add_parser('export',
|
||||||
help='export bibliography')
|
help='export bibliography')
|
||||||
parser.add_argument('-f', '--bib-format', default='bibtex',
|
parser.add_argument('-f', '--bib-format', default='bibtex',
|
||||||
@ -16,11 +16,11 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, bib_format, references):
|
def command(ui, bib_format, references):
|
||||||
"""
|
"""
|
||||||
:param bib_format (in 'bibtex', 'yaml')
|
:param bib_format (in 'bibtex', 'yaml')
|
||||||
"""
|
"""
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository.from_directory(config())
|
||||||
papers = [rp.get_paper(c)
|
papers = [rp.get_paper(c)
|
||||||
for c in parse_references(ui, rp, references)]
|
for c in parse_references(ui, rp, references)]
|
||||||
if len(papers) == 0:
|
if len(papers) == 0:
|
||||||
|
@ -42,7 +42,7 @@ def extract_doc_path_from_bibdata(paper, ui):
|
|||||||
|
|
||||||
def parse_reference(ui, rp, ref):
|
def parse_reference(ui, rp, ref):
|
||||||
try:
|
try:
|
||||||
return rp.citekey_from_ref(ref)
|
return rp.ref2citekey(ref)
|
||||||
except InvalidReference:
|
except InvalidReference:
|
||||||
ui.error("no paper with reference: %s."
|
ui.error("no paper with reference: %s."
|
||||||
% color.dye(ref, color.citekey))
|
% color.dye(ref, color.citekey))
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from ..paper import Paper
|
from ..paper import Paper
|
||||||
from .helpers import add_paper_with_docfile, extract_doc_path_from_bibdata
|
from .helpers import add_paper_with_docfile, extract_doc_path_from_bibdata
|
||||||
from .. import configs
|
from ..configs import config
|
||||||
|
|
||||||
|
def parser(subparsers):
|
||||||
def parser(subparsers, config):
|
|
||||||
parser = subparsers.add_parser('import',
|
parser = subparsers.add_parser('import',
|
||||||
help='import paper(s) to the repository')
|
help='import paper(s) to the repository')
|
||||||
parser.add_argument('bibpath',
|
parser.add_argument('bibpath',
|
||||||
@ -16,13 +15,13 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, bibpath, copy):
|
def command(ui, bibpath, copy):
|
||||||
"""
|
"""
|
||||||
:param bibpath: path (no url yet) to a bibliography file
|
:param bibpath: path (no url yet) to a bibliography file
|
||||||
"""
|
"""
|
||||||
if copy is None:
|
if copy is None:
|
||||||
copy = config.get(configs.MAIN_SECTION, 'import-copy')
|
copy = config().import_copy
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository.from_directory(config())
|
||||||
# Extract papers from bib
|
# Extract papers from bib
|
||||||
papers = Paper.many_from_path(bibpath, fatal=False)
|
papers = Paper.many_from_path(bibpath, fatal=False)
|
||||||
for p in papers:
|
for p in papers:
|
||||||
|
@ -3,10 +3,11 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from ..repo import Repository
|
from ..repo import Repository
|
||||||
from .. import configs
|
from ..configs import config
|
||||||
from .. import color
|
from .. import color
|
||||||
|
from .. import files
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
parser = subparsers.add_parser('init',
|
parser = subparsers.add_parser('init',
|
||||||
help="initialize the papers directory")
|
help="initialize the papers directory")
|
||||||
parser.add_argument('-p', '--path', default=None,
|
parser.add_argument('-p', '--path', default=None,
|
||||||
@ -17,21 +18,19 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, path, doc_dir):
|
def command(ui, path, doc_dir):
|
||||||
"""Create a .papers directory"""
|
"""Create a .papers directory"""
|
||||||
if path is None:
|
if path is not None:
|
||||||
papersdir = config.get('papers', 'papers-directory')
|
config().papers_dir = files.clean_path(os.getcwd(), path)
|
||||||
else:
|
ppd = config().papers_dir
|
||||||
papersdir = os.path.join(os.getcwd(), path)
|
if os.path.exists(ppd) and len(os.listdir(ppd)) > 0:
|
||||||
configs.add_and_write_option('papers', 'papers-directory', papersdir)
|
|
||||||
if os.path.exists(papersdir):
|
|
||||||
if len(os.listdir(papersdir)) > 0:
|
|
||||||
ui.error('directory {} is not empty.'.format(
|
ui.error('directory {} is not empty.'.format(
|
||||||
color.dye(papersdir, color.filepath)))
|
color.dye(ppd, color.filepath)))
|
||||||
ui.exit()
|
ui.exit()
|
||||||
|
|
||||||
ui.print_('Initializing papers in {}.'.format(
|
ui.print_('Initializing papers in {}.'.format(
|
||||||
color.dye(papersdir, color.filepath)))
|
color.dye(ppd, color.filepath)))
|
||||||
repo = Repository()
|
|
||||||
repo.init(papersdir) # Creates directories
|
repo = Repository(config(), load = False)
|
||||||
repo.save() # Saves empty repository description
|
repo.save()
|
||||||
|
config().save()
|
||||||
|
@ -2,9 +2,10 @@ from .. import pretty
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from .. import color
|
from .. import color
|
||||||
from . import helpers
|
from . import helpers
|
||||||
|
from ..configs import config
|
||||||
|
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
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, dest='citekeys',
|
default=False, dest='citekeys',
|
||||||
@ -14,8 +15,8 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, citekeys, query):
|
def command(ui, citekeys, query):
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository(config())
|
||||||
papers = [(n, p) for n, p in enumerate(rp.all_papers())
|
papers = [(n, p) for n, p in enumerate(rp.all_papers())
|
||||||
if test_paper(query, p)]
|
if test_paper(query, p)]
|
||||||
ui.print_('\n'.join(helpers.paper_oneliner(p, n = n, citekey_only = citekeys) for n, p in papers))
|
ui.print_('\n'.join(helpers.paper_oneliner(p, n = n, citekey_only = citekeys) for n, p in papers))
|
||||||
|
@ -2,12 +2,12 @@ import subprocess
|
|||||||
|
|
||||||
from .. import repo
|
from .. import repo
|
||||||
from ..paper import NoDocumentFile
|
from ..paper import NoDocumentFile
|
||||||
from .. import configs
|
from ..configs import config
|
||||||
from .. import color
|
from .. import color
|
||||||
from .helpers import add_references_argument, parse_reference
|
from .helpers import add_references_argument, parse_reference
|
||||||
|
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
parser = subparsers.add_parser('open',
|
parser = subparsers.add_parser('open',
|
||||||
help='open the paper in a pdf viewer')
|
help='open the paper in a pdf viewer')
|
||||||
parser.add_argument('-w', '--with', dest='with_command', default=None,
|
parser.add_argument('-w', '--with', dest='with_command', default=None,
|
||||||
@ -16,12 +16,12 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, with_command, reference):
|
def command(ui, with_command, reference):
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository.from_directory(config)
|
||||||
key = parse_reference(ui, rp, reference)
|
key = parse_reference(ui, rp, reference)
|
||||||
paper = rp.get_paper(key)
|
paper = rp.get_paper(key)
|
||||||
if with_command is None:
|
if with_command is None:
|
||||||
with_command = config.get(configs.MAIN_SECTION, 'open-cmd')
|
with_command = config().open_cmd
|
||||||
try:
|
try:
|
||||||
filepath = paper.get_document_path()
|
filepath = paper.get_document_path()
|
||||||
subprocess.Popen([with_command, filepath])
|
subprocess.Popen([with_command, filepath])
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from .. import color
|
from .. import color
|
||||||
from .. import configs
|
from ..configs import config
|
||||||
from .helpers import add_references_argument, parse_references
|
from .helpers import add_references_argument, parse_references
|
||||||
|
|
||||||
from ..events import RemoveEvent
|
from ..events import RemoveEvent
|
||||||
|
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
parser = subparsers.add_parser('remove', help='removes a paper')
|
parser = subparsers.add_parser('remove', help='removes a paper')
|
||||||
parser.add_argument('-f', '--force', action='store_true', default=None,
|
parser.add_argument('-f', '--force', action='store_true', default=None,
|
||||||
help="does not prompt for confirmation.")
|
help="does not prompt for confirmation.")
|
||||||
@ -14,8 +14,8 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, force, references):
|
def command(ui, force, references):
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository(config())
|
||||||
citekeys = parse_references(ui, rp, references)
|
citekeys = parse_references(ui, rp, references)
|
||||||
if force is None:
|
if force is None:
|
||||||
are_you_sure = ("Are you sure you want to delete paper(s) [%s]"
|
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')
|
sure = ui.input_yn(question=are_you_sure, default='n')
|
||||||
if force or sure:
|
if force or sure:
|
||||||
for c in citekeys:
|
for c in citekeys:
|
||||||
rmevent = RemoveEvent(config, ui, c)
|
rmevent = RemoveEvent(ui, c)
|
||||||
rmevent.send()
|
rmevent.send()
|
||||||
|
|
||||||
rp.remove(c)
|
rp.remove_paper(c)
|
||||||
|
@ -19,8 +19,9 @@ The different use cases are :
|
|||||||
|
|
||||||
from ..repo import Repository, InvalidReference
|
from ..repo import Repository, InvalidReference
|
||||||
from . import helpers
|
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 = subparsers.add_parser('tag', help="add, remove and show tags")
|
||||||
parser.add_argument('referenceOrTag', nargs='?', default = None,
|
parser.add_argument('referenceOrTag', nargs='?', default = None,
|
||||||
help='reference to the paper (citekey or number), or '
|
help='reference to the paper (citekey or number), or '
|
||||||
@ -43,12 +44,12 @@ def _parse_tags(s):
|
|||||||
for m in re.finditer(r'[+-]', s):
|
for m in re.finditer(r'[+-]', s):
|
||||||
if m.start() == last:
|
if m.start() == last:
|
||||||
if last != 0:
|
if last != 0:
|
||||||
raise ValueError, 'could not match tag expression'
|
raise ValueError('could not match tag expression')
|
||||||
else:
|
else:
|
||||||
tags.append(s[last:(m.start())])
|
tags.append(s[last:(m.start())])
|
||||||
last = m.start()
|
last = m.start()
|
||||||
if last == len(s):
|
if last == len(s):
|
||||||
raise ValueError, 'could not match tag expression'
|
raise ValueError('could not match tag expression')
|
||||||
else:
|
else:
|
||||||
tags.append(s[last:])
|
tags.append(s[last:])
|
||||||
return tags
|
return tags
|
||||||
@ -63,16 +64,16 @@ def _tag_groups(tags):
|
|||||||
minus_tags.append(tag[1:])
|
minus_tags.append(tag[1:])
|
||||||
return set(plus_tags), set(minus_tags)
|
return set(plus_tags), set(minus_tags)
|
||||||
|
|
||||||
def command(config, ui, referenceOrTag, tags):
|
def command(ui, referenceOrTag, tags):
|
||||||
"""Add, remove and show tags"""
|
"""Add, remove and show tags"""
|
||||||
rp = Repository.from_directory(config)
|
rp = Repository(config())
|
||||||
|
|
||||||
if referenceOrTag is None:
|
if referenceOrTag is None:
|
||||||
for tag in rp.get_tags():
|
for tag in rp.get_tags():
|
||||||
ui.print_(tag)
|
ui.print_(tag)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
citekey = rp.citekey_from_ref(referenceOrTag)
|
citekey = rp.ref2citekey(referenceOrTag)
|
||||||
p = rp.get_paper(citekey)
|
p = rp.get_paper(citekey)
|
||||||
if tags is None:
|
if tags is None:
|
||||||
ui.print_(' '.join(p.tags))
|
ui.print_(' '.join(p.tags))
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
from .. import repo
|
from .. import repo
|
||||||
from .. import color
|
from .. import color
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
parser = subparsers.add_parser('update', help='update the repository to the lastest format')
|
parser = subparsers.add_parser('update', help='update the repository to the lastest format')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui):
|
def command(ui):
|
||||||
rp = repo.Repository.from_directory(config)
|
rp = repo.Repository.from_directory(config)
|
||||||
msg = ("You should backup the paper directory {} before continuing."
|
msg = ("You should backup the paper directory {} before continuing."
|
||||||
"Continue ?").format(color.dye(rp.papersdir, color.filepath))
|
"Continue ?").format(color.dye(rp.papersdir, color.filepath))
|
||||||
|
@ -2,7 +2,7 @@ import webbrowser
|
|||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
|
|
||||||
def parser(subparsers, config):
|
def parser(subparsers):
|
||||||
parser = subparsers.add_parser('websearch',
|
parser = subparsers.add_parser('websearch',
|
||||||
help="launch a search on Google Scholar")
|
help="launch a search on Google Scholar")
|
||||||
parser.add_argument("search_string", nargs = '*',
|
parser.add_argument("search_string", nargs = '*',
|
||||||
@ -10,7 +10,7 @@ def parser(subparsers, config):
|
|||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def command(config, ui, search_string):
|
def command(ui, search_string):
|
||||||
print search_string
|
print search_string
|
||||||
url = ("https://scholar.google.fr/scholar?q=%s&lr="
|
url = ("https://scholar.google.fr/scholar?q=%s&lr="
|
||||||
% (urllib.quote_plus(' '.join(search_string))))
|
% (urllib.quote_plus(' '.join(search_string))))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user