import subprocess from .. import repo from ..paper import NoDocumentFile from ..configs import config from .. import color from .helpers import add_references_argument, parse_reference 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, help='command to use to open the document file') add_references_argument(parser, single=True) return parser 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().open_cmd try: filepath = paper.get_document_path() subprocess.Popen([with_command, filepath]) ui.print_('{} opened.'.format(color.dye(filepath, color.filepath))) except NoDocumentFile: ui.error('No document associated with the entry {}.'.format( color.dye(key, color.citekey))) ui.exit() except OSError: ui.error("Command does not exist: %s." % with_command) ui.exit(127)