1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253(*---------------------------------------------------------------------------
Copyright (c) 2018 The b0 programmers. All rights reserved.
SPDX-License-Identifier: ISC
---------------------------------------------------------------------------*)openB0_stdopenResult.Syntax(* Show PDFs *)(* XXX support background reloads *)moduleEnv=structletpdfviewer="PDFVIEWER"endtypet=Cmd.tletenv_fallbackcmd=matchcmdwith|Some_asv->Okv|None->Os.Env.var'~empty_is_none:trueCmd.of_stringEnv.pdfviewerletfind?search?cmd()=let*cmd=env_fallbackcmdinmatchcmdwith|Somecmd->Os.Cmd.get?searchcmd|None->letcmds=[Cmd.tool"xdg-open";Cmd.tool"open"]inmatchOs.Cmd.find_first?searchcmdswith|Somev->Okv|None->ifSys.win32thenOkCmd.(arg"start"%"")(* XXX really ? *)elseFmt.error"No PDF viewer found. Set the %a environment variable."Fmt.codeEnv.pdfviewerletshowpdf_viewerfile=Os.Cmd.runCmd.(pdf_viewer%%pathfile)(* Cli interface *)letpdf_viewer?docs?(opts=["pdf-viewer"])()=letopenCmdlinerinletenv=Cmd.Env.infoEnv.pdfviewerinletdoc="The PDF viewer command $(docv) to use. If absent either one \
of $(b,xdg-open(1)) or $(b,open(1)) is used. If not found and \
on Windows $(b,start) is used."inletabsent="OS dependent fallback"inletcmd=Arg.conv'~docv:"CMD"(B0_std.Cmd.of_string,B0_std.Cmd.pp_dump)inArg.(value&opt(Arg.somecmd)None&infoopts~env~absent~doc?docs~docv:"CMD")