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/b37b646c-eef2-419b-aef1-f6af1658dc98n%40googlegroups.com.