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/458cb790-9491-4b75-af7e-46246b3c2f51n%40googlegroups.com.

Reply via email to