1
votes

New to AppleScript but I'm trying to migrate over from terminal scripting. After much research I am having issues trying to get a shell script running from within the .app file.

What I have so far:

to the_foo()
    tell application "Finder"
        set current_path to container of (path to me) as alias
        set path_in_posix to POSIX path of current_path
    end tell

    tell application "Terminal"
        set new_terminal to do script " "
        activate
        do script "cd " & path_in_posix in window 1
        do shell script "ls " & POSIX path of (path to me) & "Contents/Resources/Scripts/foobar.sh" in window 1
    end tell
end the_foo

The error I am getting:

enter image description here

Learned to open a new terminal with: Applescript to open a NEW terminal window in current space

I added in window 1 when I learned that do script opens a new terminal window every time, referenced: applescript and terminal ( run several do shell script in one terminal window )

I originally tried:

set script_Location to path to resource "Contents:Resources:Scripts:"
set run_Script to (quoted form of script_Location) & "foobar.sh"
do shell script run_Script

after referencing: How to change AppleScript path to a Terminal-style path? but when I run it I get the same error.

So how can I run the shell script located within the Scripts folder within the same window 1? I would ideally like to set a variable for the path so I can put multiple shells scripts in the Scripts folder.

2

2 Answers

1
votes

It's probably just a typo

 do script "ls " & POSIX path of (path to me) & "Contents/Resources/Scripts/foobar.sh" in window 1

rather than

 do shell script "ls " & ...

I recommend to use System Events instead of the Finder to get the container of the script

tell application "System Events"
    set path_in_posix to POSIX path of container of (path to me)
end tell
1
votes

Vadian had the correct and better approach in a one liner. I did change

"Contents/Resources/Scripts/foobar.sh"

to

set script_Location to "Contents/Resources/Scripts/"
set foobar to do script "bash " & POSIX path of (path to me) & script_Location & "foobar.sh" in window 1

this approach helps if I want to add more than one shell script in the Scripts folder.