Dear list, is there a way if a program is installed on the computer using Lua. I have the following sample: \starttext \startluacode filename = tex.jobname .. ".pdf" os.exec("dir " .. filename) \stopluacode \stoptext Is there a way to wrap os.exec() in the sample so that it only runs if "dir" is available? I know that os.name would be an option here, but not in my real world document. Many thanks for your help, Pablo -- http://www.ousia.tk
On 1 Nov 2021, at 14:26, Pablo Rodriguez via ntg-context
wrote: Dear list,
is there a way if a program is installed on the computer using Lua.
I have the following sample:
\starttext \startluacode filename = tex.jobname .. ".pdf" os.exec("dir " .. filename) \stopluacode \stoptext
Is there a way to wrap os.exec() in the sample so that it only runs if "dir" is available?
if os.which(‘dir’) then ... end But note that os.which() may be unreliable in various cases (like it will fail for shell/command interpreter builtins, in cron jobs, in special scripted environments, and may incorrectly succeed for disabled/forbidden commands), as it just runs through the PATH environment variable to check for executable file existence. Often times, it is better to just try to run the command to see if that produces satisfactory results. Best wishes, taco — Taco Hoekwater E: taco@bittext.nl genderfluid (all pronouns)
On 11/1/21 3:10 PM, Taco Hoekwater via ntg-context wrote:
[...] Is there a way to wrap os.exec() in the sample so that it only runs if "dir" is available?
if os.which(‘dir’) then ... end
But note that os.which() may be unreliable in various cases (like it will fail for shell/command interpreter builtins, in cron jobs, in special scripted environments, and may incorrectly succeed for disabled/forbidden commands), as it just runs through the PATH environment variable to check for executable file existence. Many thanks for your reply, Taco.
This is exactly what I needed.
Often times, it is better to just try to run the command to see if that produces satisfactory results. It makes sense, but I cannot do that on foreign computers.
Many thanks for your help again, Pablo -- http://www.ousia.tk
On 11/1/2021 2:26 PM, Pablo Rodriguez via ntg-context wrote:
Dear list,
is there a way if a program is installed on the computer using Lua.
I have the following sample:
\starttext \startluacode filename = tex.jobname .. ".pdf" os.exec("dir " .. filename) \stopluacode \stoptext
Is there a way to wrap os.exec() in the sample so that it only runs if "dir" is available?
I know that os.name would be an option here, but not in my real world document.
\starttext \startluacode if lfs.isfile(tex.jobname .. ".pdf") then context("YES") end if lfs.isfile(file.addsuffix(environment.outputfilename,"pdf")) then context("YES") end if #dir.glob(file.addsuffix(environment.outputfilename,"pdf")) > 0 then context("YES") end \stopluacode \stoptext ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 11/1/21 5:13 PM, Hans Hagen via ntg-context wrote:
On 11/1/2021 2:26 PM, Pablo Rodriguez via ntg-context wrote:
[...] Is there a way to wrap os.exec() in the sample so that it only runs if "dir" is available?
I know that os.name would be an option here, but not in my real world document.
\starttext \startluacode if lfs.isfile(tex.jobname .. ".pdf") then context("YES") end if lfs.isfile(file.addsuffix(environment.outputfilename,"pdf")) then context("YES") end if #dir.glob(file.addsuffix(environment.outputfilename,"pdf")) > 0 then context("YES") end \stopluacode \stoptext
Many thanks for your reply, Hans. I can see that I explained my question poorly, but your code fits me in other case. Many thanks for your help, Pablo -- http://www.ousia.tk
participants (3)
-
Hans Hagen
-
Pablo Rodriguez
-
Taco Hoekwater