| 
									
										
										
										
											2011-04-27 15:27:44 +02:00
										 |  |  | #! /bin/bash | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-19 19:04:36 +01:00
										 |  |  | # ugly escaping: for apple script \ and " need to be escaped, whereas %q takes care of all bash escaping | 
					
						
							|  |  |  | declare -a args | 
					
						
							|  |  |  | mydir=`pwd` | 
					
						
							|  |  |  | mydir=$(printf '%q' "$mydir") | 
					
						
							|  |  |  | mydir="${mydir//\\/\\\\}" | 
					
						
							|  |  |  | args[0]="cd ${mydir//\"/\\\"};" | 
					
						
							|  |  |  | for a in "$@" ; do | 
					
						
							|  |  |  |     x=$(printf '%q ' "$a") | 
					
						
							|  |  |  |     x="${x//\\/\\\\}" | 
					
						
							|  |  |  |     args[${#args[@]}]="${x//\"/\\\"}" | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | mArgs=${args[@]:0} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-27 15:27:44 +02:00
										 |  |  | osascript <<EOF | 
					
						
							|  |  |  |     --Terminal opens a window by default when it is not running, so check | 
					
						
							|  |  |  |     on applicationIsRunning(applicationName) | 
					
						
							|  |  |  |             tell application "System Events" to count (every process whose name is applicationName) | 
					
						
							|  |  |  |             return result is greater than 0 | 
					
						
							|  |  |  |     end applicationIsRunning | 
					
						
							|  |  |  |     set terminalWasRunning to applicationIsRunning("Terminal") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-19 19:04:36 +01:00
										 |  |  |     set cdScript to "$mArgs" | 
					
						
							| 
									
										
										
										
											2011-04-27 15:27:44 +02:00
										 |  |  |     tell application "Terminal" | 
					
						
							|  |  |  |         --do script will open a new window if none given, but terminal already opens one if not running | 
					
						
							|  |  |  |         if terminalWasRunning then | 
					
						
							|  |  |  |             do script cdScript | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             do script cdScript in first window | 
					
						
							|  |  |  |         end if | 
					
						
							|  |  |  |         set currentTab to the result | 
					
						
							|  |  |  |         set currentWindow to first window whose tabs contains currentTab | 
					
						
							|  |  |  |         activate | 
					
						
							|  |  |  |     end tell | 
					
						
							|  |  |  | EOF |