Re: AppleScript After Launchd Job
Re: AppleScript After Launchd Job
- Subject: Re: AppleScript After Launchd Job
- From: Pierce Freeman <email@hidden>
- Date: Sat, 06 Jun 2009 15:57:47 -0700
- Thread-topic: AppleScript After Launchd Job
Title: Re: AppleScript After Launchd Job
Thanks once again for your reply Philip. That makes sense, and I am now using sh for the Program key. Just one question, though, which is how I can use cp in that same way to copy a file from one directory into the other. Your echo example works fine, but I just can’t figure out how to move it.
Thanks for all your help!
On 6/6/09 3:08 PM, "Philip Aker" <email@hidden> wrote:
On 2009-06-06, at 09:15:37, Pierce Freeman wrote:
My salient part of my code is below:
<dict>
<key>Program</key>
<string>bin/cp</string>
// What do I put for the AppleScript?
<key>ProgramArguments</key>
<array>
<string>cp</string>
<string>-Rf</string>
<string>Location</string>
<string>Location</string>
</array>
// What do I put for the AppleScript?
</dict>
</plist>
I added comments for where I think the AppleScript should go, though I may be very wrong about it. ;)
Close but no cigar.
- Firstly the form of the value for 'Program' should probably be a full path.
- Secondly, you have to use controller shell, like sh, bash, or tclsh, etc., to be able to call multiple tools. For such shells, usually the option specifying an inline script implies that the subsequent arguments are directed to that script. Hence a one line script is used in the case no arguments are needed.
Here something that works for me as a startup script (I'm using 10.5.7).
It's a LaunchAgent plist named 'ca.aker.startup.plist' (to coordinate with the 'Label' value) and placed in ~/Library/LaunchAgents.
I use the 'WorkingDirectory' key to have launchd cd to wherever and then run my script.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ca.aker.startup</string>
<key>Program</key>
<string>/bin/sh</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>echo `date +'%F %T'` > date.txt;/usr/bin/osascript -e 'tell application "TextEdit" to activate'</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/Users/me/Desktop</string>
</dict>
</plist>
Thanks for your reply. However, I am including the actual code in the
Launchd file (I know, I know) so how would this translate into that
scenario? I get what you are saying, however I am just not seeing
how that
could be translated into Launchd.
Maybe you'd better show the salient part of the LaunchAgent plist.
Inline scripts work kinda like NSTask.
One non-obvious part about shell scripts in that format is that they
have to be XML escaped.
Otherwise, it's just the same as the single line example but you would
use the -e option for osascript.
I am making a Launchd job, and want to run an AppleScript once it is
done
with it's main task. I want my cd job to run, and then a follow-up
AppleScript to run afterwards. My problem is that I don't know how
to use
two different "main codes" (ex. cd) to be run in one launchd.
I'm guessing you would want something like the following in your
shell
script:
cd /path/to/dir;
osascript /path/to/some.scpt;
To run multiple shell script calls from a single line it would be:
cd /path/to/dir;osascript /path/to/some.scpt;
The basic command separator is a semicolon.
Philip Aker
echo email@hidden@nl | tr a-z@. p-za-o.@
Democracy: Two wolves and a sheep voting on lunch.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users
This email sent to email@hidden