87 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			AppleScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.3 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
 | 
						|
 | 
						|
on run argv
 | 
						|
  set theURL to item 1 of argv
 | 
						|
 | 
						|
  with timeout of 2 seconds
 | 
						|
    tell application "Chrome"
 | 
						|
 | 
						|
      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 timeout
 | 
						|
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)
 | 
						|
  tell application "Chrome"
 | 
						|
    -- 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
 | 
						|
  return found
 | 
						|
end lookupTabWithUrl
 |