Thanks Jean - `nohup` is the solution.

I changed your scripts a bit, so that the starts is restarting quarto if it 
is running:

#!/bin/bash
pid=$(ps -A -mm | grep -v grep | grep "quarto.js preview ${BB_DOC_PATH}" | 
awk '{print $1}')

if [ -z "$pid" ]; then
    pkill -F "$pidfile"
fi

nohup quarto preview "$BB_DOC_PATH" >& /dev/null &  

and to stop:

#!/bin/bash
pid=$(ps -A -mm | grep -v grep | grep "quarto.js preview ${BB_DOC_PATH}" | 
awk '{print $1}')
kill -9 $pid


Thanks a lot for your input,

Rainer

On Thursday, March 24, 2022 at 5:03:58 PM UTC+1 jj wrote:

> Added a test to 00) Start Quarto Preview.sh so the previewer will not be 
> launched more than once.
>
>     #!/bin/bash
>     pid=$(ps -A -mm | grep -v grep | grep 
> "/Applications/quarto/bin/quarto.js preview ${BB_DOC_PATH}" | awk '{print 
> $1}')
>     if [ -z "$pid" ]; then
>
>         nohup quarto preview "$BB_DOC_PATH" >& /dev/null & 
>     fi
>
> Jean
> On Thursday, March 24, 2022 at 4:48:57 PM UTC+1 jj wrote:
>
>> Hi Rainer,
>>
>> Good to see your are getting somewhere.
>>
>> I tested this on my setup and it seems to do what you are after (no pid 
>> file needed, no dialog):
>>
>> Start quarto preview:
>>
>>     #!/bin/bash
>>     nohup quarto preview "$BB_DOC_PATH" >& /dev/null & 
>>
>> Stop quarto preview:
>>
>>     #!/bin/bash
>>     pid=$(ps -A -mm | grep -v grep | grep 
>> "/Applications/quarto/bin/quarto.js preview ${BB_DOC_PATH}" | awk '{print 
>> $1}')
>>     kill -9 $pid
>>
>> HTH,
>>
>> Jean Jourdain
>> On Thursday, March 24, 2022 at 11:51:17 AM UTC+1 Rainer Krug wrote:
>>
>>> OK - Please see the scripts here: 
>>> https://github.com/rkrug/R-BBEdit/tree/main/R.bbpackage/Contents/Scripts/Quarto
>>>
>>> Start quart preview:
>>> ```
>>> #!/bin/bash
>>> quarto preview "$BB_DOC_PATH" & 
>>>
>>> pid=$(ps -A -mm | grep -v grep | grep "quarto" | grep "preview 
>>> ${BB_DOC_PATH}" | awk '{print $1}')
>>>
>>> pidfile=$(dirname "${BB_DOC_PATH}")/quarto.$BB_DOC_NAME.pid 
>>>
>>> echo pid: $pid 
>>>
>>> echo pidfile: "$pidfile"
>>> ```
>>>
>>> and
>>>
>>> Stop quarto preview:
>>> ```
>>> #!/bin/bash
>>>
>>> pidfile="$(dirname "${BB_DOC_PATH}")/quarto.$BB_DOC_NAME.pid"
>>>
>>> pkill -F "$pidfile"
>>>
>>> rm -f "$pidfile"
>>> ```
>>>
>>> They run nicely, only the initial backgrounding is not working and I 
>>> have to Cancel the dialog box.
>>>
>>> Also, I do not see a dialog box in the Stop script.
>>>
>>> But I am happy with how it works (although automatic backgrounding ad 
>>> closing ot=f the dialog box would be nice).
>>>
>>> Thanks,
>>>
>>> Rainer
>>> On Thursday, March 24, 2022 at 10:30:44 AM UTC+1 Rainer Krug wrote:
>>>
>>>> Shellcheck is great - thanks. I am using it now!
>>>>
>>>> Concerning disown: I tried to add the `disown -a` command, but still 
>>>> had to quit with the Cancel button.
>>>>
>>>> On Wednesday, March 23, 2022 at 7:10:23 PM UTC+1 Sam Hathaway wrote:
>>>>
>>>>> I don’t recall the details of this, but you may need to disown the 
>>>>> quarto process so that bash doesn’t wait around for it to finish before 
>>>>> exiting.
>>>>>
>>>>> P.S.: Shell scripting is a minefield and I suggest taking a look at 
>>>>> shellcheck <https://www.shellcheck.net/> if you haven’t already.
>>>>>
>>>>> Cheers,
>>>>> -sam
>>>>>
>>>>> On 23 Mar 2022, at 4:55, Rainer Krug wrote:
>>>>>
>>>>> Thanks Jean - these sound interesting options and definitely worth 
>>>>> following. But thew (especially the launch agent approach) made me 
>>>>> thinking: what if I background the quarto process?
>>>>>
>>>>> I have now written the following script to start the previewer:
>>>>>
>>>>> #!/bin/bash
>>>>>
>>>>> quarto preview $BB_DOC_PATH & 
>>>>> pid=$! 
>>>>> pidfile=$(dirname "${BB_DOC_PATH}")/quarto.$BB_DOC_NAME.pid 
>>>>> echo pid: $pid 
>>>>> echo pidfile: $pidfile 
>>>>> echo $pid > $pidfile
>>>>>
>>>>> But it has two problems:
>>>>>
>>>>> 1) I still have to click "cancel", but the previewer continues 
>>>>> running, 
>>>>> which is nice. 
>>>>> 2) the file .pid does not contain the pid of the quarto process
>>>>>
>>>>> The second one, I will solve with quarto, and the first one, I can 
>>>>> live 
>>>>> with. It would be nice, to have a message pops up which tells the user 
>>>>> to 
>>>>> close the dialog once the preview is visible?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Rainer
>>>>>
>>>>> On Tuesday, March 22, 2022 at 8:12:56 PM UTC+1 jj wrote:
>>>>>
>>>>> Hi Rainer,
>>>>>
>>>>> I suspect that BBEdit's Script menu will always be blocking because as 
>>>>> far 
>>>>> as I know it uses an XPCService. (This should be checked with Bare 
>>>>> Bones 
>>>>> support though!)
>>>>>
>>>>> I think of 2 other options that you could try:
>>>>>
>>>>> *Option 1. Use the menubar Script Menu.* 
>>>>>
>>>>> • Activate the menubar Script Menu in Script Editor > Preferences > 
>>>>> General > Script Menu.
>>>>>
>>>>> • Create BBEdit's application scripts directory :
>>>>>
>>>>> % mkdir -p ~/Library/Scripts/Applications/BBEdit
>>>>>
>>>>> • Scripts placed in this directory should appear in the menubar Script 
>>>>> Menu when BBEdit is the frontmost application. Generally they act as 
>>>>> if 
>>>>> they where run from the Script Editor.
>>>>>
>>>>> • Sometimes this allows you to do things you couldn't do from BBEdit's 
>>>>> Script menu (like restarting BBEdit for example).
>>>>>
>>>>> *Option 2. Create a launchAgent that watches the folder containing 
>>>>> your 
>>>>>
>>>>> quarto files and that executes a script whenever a file is saved and 
>>>>> thus 
>>>>>
>>>>> refreshes the preview. *(Replace '<rainer>' with your user account in 
>>>>> the 
>>>>> below paths.)
>>>>>
>>>>> • Save this launchAgent in ~/Library/LaunchAgents/quarto_watcher.plist
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?> 
>>>>> <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN 
>>>>> http://www.apple.com/DTDs/PropertyList-1.0.dtd> 
>>>>> <plist version="1.0"> 
>>>>> <dict> 
>>>>> <key>Label</key> 
>>>>> <string>quarto_watcher</string> 
>>>>> <key>ProgramArguments</key> 
>>>>> <array> 
>>>>> <string>/Users/<rainer>/Library/Application 
>>>>> Support/BBEdit/Scripts/quarto_previewer.sh</string> 
>>>>> </array> 
>>>>> <key>WatchPaths</key> 
>>>>> <array> 
>>>>> <string>/Users/<rainer>/Documents/Quarto</string> 
>>>>> </array> 
>>>>> </dict> 
>>>>> </plist>
>>>>>
>>>>> • Save this script in ~/Library/Application 
>>>>> Support/BBEdit/Scripts/quarto_previewer.sh and give it the execution 
>>>>> permission.
>>>>>
>>>>> #!/usr/bin/env sh
>>>>>
>>>>> DOCPATH=$(osascript -e 'tell application "BBEdit" to (URL of first 
>>>>> document) as string') 
>>>>> EXTENSION="${DOCPATH##*.}"
>>>>>
>>>>> #echo $DOCPATH 
>>>>> #echo $EXTENSION
>>>>>
>>>>> if [ $EXTENSION == "quarto" ]; then 
>>>>> /usr/bin/open -a quarto "$DOCPATH" 
>>>>> fi
>>>>>
>>>>> • Create the /Users/<rainer>/Documents/Quarto directory. (Or some 
>>>>> other 
>>>>> directory and change the launchAgent accordingly.)
>>>>>
>>>>> • Start the launchAgent in the terminal with:
>>>>>
>>>>> % launchctl load 
>>>>> /Users/<rainer>/Library/LaunchAgents/quarto_watcher.plist
>>>>>
>>>>> • Now whenever a file with extension ".quarto" is saved in the 
>>>>> ~/Documents/Quarto directory, the quarto_previewer.sh script should 
>>>>> execute and open or reload this file in quarto.
>>>>>
>>>>> HTH
>>>>>
>>>>> Jean Jourdain
>>>>>
>>>>> On Tuesday, March 22, 2022 at 2:52:19 PM UTC+1 Rainer Krug wrote:
>>>>>
>>>>> I have an using quarto <https://quarto.org> to render technical 
>>>>>
>>>>> documents (it is very nice!) and writing them in BBEdit.
>>>>>
>>>>> Now I have a script which I want to start from BBEdit as I do with all 
>>>>> scripts, but this script runs continuously and updates the preview. I 
>>>>> would 
>>>>> very much like to have this in BBEdit (in the Scripts Menu), but when 
>>>>> I 
>>>>> start this script, it blocks BBEdit.
>>>>>
>>>>> Is there a way of having that dialog non-blocking? Or is there another 
>>>>> way of running that script (at the moment I am running it from a 
>>>>> different 
>>>>> terminal)?
>>>>>
>>>>> Thanks.
>>>>>
>>>>>

-- 
This is the BBEdit Talk public discussion group. If you have a feature request 
or need technical support, please email "[email protected]" rather than 
posting here. Follow @bbedit on Twitter: <https://twitter.com/bbedit>
--- 
You received this message because you are subscribed to the Google Groups 
"BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/bbedit/139f8eaf-da26-4d42-ac7d-aa51d7b09df0n%40googlegroups.com.

Reply via email to