mirror of
				https://github.com/imezx/Warp.git
				synced 2025-11-04 03:49:17 +00:00 
			
		
		
		
	
		
			
	
	
		
			96 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			AppleScript
		
	
	
	
	
	
		
		
			
		
	
	
			96 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			AppleScript
		
	
	
	
	
	
| 
								 | 
							
								(*
							 | 
						||
| 
								 | 
							
								Copyright (c) 2015-present, Facebook, Inc.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This source code is licensed under the MIT license found in the
							 | 
						||
| 
								 | 
							
								LICENSE file at
							 | 
						||
| 
								 | 
							
								https://github.com/facebookincubator/create-react-app/blob/master/LICENSE
							 | 
						||
| 
								 | 
							
								*)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								property targetTab: null
							 | 
						||
| 
								 | 
							
								property targetTabIndex: -1
							 | 
						||
| 
								 | 
							
								property targetWindow: null
							 | 
						||
| 
								 | 
							
								property theProgram: "Google Chrome"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								on run argv
							 | 
						||
| 
								 | 
							
								  set theURL to item 1 of argv
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- Allow requested program to be optional,
							 | 
						||
| 
								 | 
							
								  -- default to Google Chrome
							 | 
						||
| 
								 | 
							
								  if (count of argv) > 1 then
							 | 
						||
| 
								 | 
							
								    set theProgram to item 2 of argv
							 | 
						||
| 
								 | 
							
								  end if
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  using terms from application "Google Chrome"
							 | 
						||
| 
								 | 
							
								    tell application theProgram
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (count every window) = 0 then
							 | 
						||
| 
								 | 
							
								        make new window
							 | 
						||
| 
								 | 
							
								      end if
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      -- 1: Looking for tab running debugger
							 | 
						||
| 
								 | 
							
								      -- then, Reload debugging tab if found
							 | 
						||
| 
								 | 
							
								      -- then return
							 | 
						||
| 
								 | 
							
								      set found to my lookupTabWithUrl(theURL)
							 | 
						||
| 
								 | 
							
								      if found then
							 | 
						||
| 
								 | 
							
								        set targetWindow's active tab index to targetTabIndex
							 | 
						||
| 
								 | 
							
								        tell targetTab to reload
							 | 
						||
| 
								 | 
							
								        tell targetWindow to activate
							 | 
						||
| 
								 | 
							
								        set index of targetWindow to 1
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								      end if
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      -- 2: Looking for Empty tab
							 | 
						||
| 
								 | 
							
								      -- In case debugging tab was not found
							 | 
						||
| 
								 | 
							
								      -- We try to find an empty tab instead
							 | 
						||
| 
								 | 
							
								      set found to my lookupTabWithUrl("chrome://newtab/")
							 | 
						||
| 
								 | 
							
								      if found then
							 | 
						||
| 
								 | 
							
								        set targetWindow's active tab index to targetTabIndex
							 | 
						||
| 
								 | 
							
								        set URL of targetTab to theURL
							 | 
						||
| 
								 | 
							
								        tell targetWindow to activate
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								      end if
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      -- 3: Create new tab
							 | 
						||
| 
								 | 
							
								      -- both debugging and empty tab were not found
							 | 
						||
| 
								 | 
							
								      -- make a new tab with url
							 | 
						||
| 
								 | 
							
								      tell window 1
							 | 
						||
| 
								 | 
							
								        activate
							 | 
						||
| 
								 | 
							
								        make new tab with properties {URL:theURL}
							 | 
						||
| 
								 | 
							
								      end tell
							 | 
						||
| 
								 | 
							
								    end tell
							 | 
						||
| 
								 | 
							
								  end using terms from
							 | 
						||
| 
								 | 
							
								end run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-- Function:
							 | 
						||
| 
								 | 
							
								-- Lookup tab with given url
							 | 
						||
| 
								 | 
							
								-- if found, store tab, index, and window in properties
							 | 
						||
| 
								 | 
							
								-- (properties were declared on top of file)
							 | 
						||
| 
								 | 
							
								on lookupTabWithUrl(lookupUrl)
							 | 
						||
| 
								 | 
							
								  using terms from application "Google Chrome"
							 | 
						||
| 
								 | 
							
								    tell application theProgram
							 | 
						||
| 
								 | 
							
								      -- Find a tab with the given url
							 | 
						||
| 
								 | 
							
								      set found to false
							 | 
						||
| 
								 | 
							
								      set theTabIndex to -1
							 | 
						||
| 
								 | 
							
								      repeat with theWindow in every window
							 | 
						||
| 
								 | 
							
								        set theTabIndex to 0
							 | 
						||
| 
								 | 
							
								        repeat with theTab in every tab of theWindow
							 | 
						||
| 
								 | 
							
								          set theTabIndex to theTabIndex + 1
							 | 
						||
| 
								 | 
							
								          if (theTab's URL as string) contains lookupUrl then
							 | 
						||
| 
								 | 
							
								            -- assign tab, tab index, and window to properties
							 | 
						||
| 
								 | 
							
								            set targetTab to theTab
							 | 
						||
| 
								 | 
							
								            set targetTabIndex to theTabIndex
							 | 
						||
| 
								 | 
							
								            set targetWindow to theWindow
							 | 
						||
| 
								 | 
							
								            set found to true
							 | 
						||
| 
								 | 
							
								            exit repeat
							 | 
						||
| 
								 | 
							
								          end if
							 | 
						||
| 
								 | 
							
								        end repeat
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if found then
							 | 
						||
| 
								 | 
							
								          exit repeat
							 | 
						||
| 
								 | 
							
								        end if
							 | 
						||
| 
								 | 
							
								      end repeat
							 | 
						||
| 
								 | 
							
								    end tell
							 | 
						||
| 
								 | 
							
								  end using terms from
							 | 
						||
| 
								 | 
							
								  return found
							 | 
						||
| 
								 | 
							
								end lookupTabWithUrl
							 |