diff --git a/pubs/commands/__init__.py b/pubs/commands/__init__.py index 150dae5..cd17fa3 100644 --- a/pubs/commands/__init__.py +++ b/pubs/commands/__init__.py @@ -15,5 +15,6 @@ from . import export_cmd from . import import_cmd # bonus from . import websearch_cmd +from . import url_cmd from . import edit_cmd diff --git a/pubs/commands/url_cmd.py b/pubs/commands/url_cmd.py new file mode 100644 index 0000000..716653f --- /dev/null +++ b/pubs/commands/url_cmd.py @@ -0,0 +1,35 @@ +from __future__ import unicode_literals + +import webbrowser + +from .. import p3 +from .. import repo +from ..uis import get_ui +from ..utils import resolve_citekey, resolve_citekey_list + + + +def parser(subparsers, conf): + parser = subparsers.add_parser('url', + help="open the url in the browser") + parser.add_argument("citekey", nargs = '*', + help="one or more citeKeys to open") + return parser + + +def command(conf, args): + """Open the url for a publication.""" + + ui = get_ui() + rp = repo.Repository(conf) + + for key in resolve_citekey_list(rp, args.citekey, ui=ui, exit_on_fail=True): + try: + paper = rp.pull_paper(key) + url = paper.bibdata['url'] + webbrowser.open(url) + + except KeyError as e: + ui.error(key, 'has no url') + + rp.close() diff --git a/pubs/pubs_cmd.py b/pubs/pubs_cmd.py index 8955cfb..949fd4a 100644 --- a/pubs/pubs_cmd.py +++ b/pubs/pubs_cmd.py @@ -29,6 +29,7 @@ CORE_CMDS = collections.OrderedDict([ ('import', commands.import_cmd), ('websearch', commands.websearch_cmd), + ('url', commands.url_cmd), ('edit', commands.edit_cmd), ])