I'm trying to write a Lua function for Neovim that, with the help of a few Bash commands, checks if a process is running; if it's running, close it, and if it's not, run a new instance.
Here's what I've managed to write so far:
isrunning = vim.cmd([[!pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false"]])
print(isrunning)
if isrunning == "true" then
print('Closing Livereload...')
vim.cmd('!killall livereload')
else
print('Opening Livereload...')
vim.cmd('!cd build; livereload &; firefox http://localhost:35729/"%<.html"')
end
The problem is that even if livereload is already running and the value of isrunning is "true", the first half of the if statement never runs, only what's after else. What do I need to change to fix that?
Update: Here's the output of :luafile %, when the above code is run in Neovim 0.5.0:
:!pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false"
true
:!cd build; livereload &; firefox http://localhost:35729/"livereload.html"
opening...
That made me think that the second line, true, must be the output of the command print(isrunning). After having some discussion in the comments section, I realized that this is not the case.
Here's the output when I change the print command to print("Answer: " .. isrunning .. "Length: " .. isrunning:len())
:!pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false"
true
Answer: Length: 0
:!cd build; livereload &; firefox http://localhost:35729/"livereload.html"
opening...
So, Neovim correctly shows the output of !pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false", but that output doesn't seem to be stored in the variable isrunning.