mirror of
https://github.com/internetarchive/brozzler.git
synced 2025-02-22 23:59:47 -05:00
CLI: improve Chrome finding on Mac
On macOS, we can find Chrome even if it's installed in a non-default path by querying `mdfind`. This is the CLI entrypoint to Spotlight, and we can use it to look up applications using their unique bundle identifiers. If `mdfind` fails to find anything, this falls back to the hardcoded paths. This should ensure this still works if Spotlight indexing is off, but Chrome is in the default path.
This commit is contained in:
parent
591ba3c95a
commit
53cac65540
@ -29,6 +29,7 @@ import requests
|
||||
import doublethink
|
||||
import signal
|
||||
import string
|
||||
import subprocess
|
||||
import sys
|
||||
import threading
|
||||
import time
|
||||
@ -126,8 +127,36 @@ def configure_logging(args):
|
||||
)
|
||||
|
||||
|
||||
def suggest_default_chrome_exe():
|
||||
# mac os x application executable paths
|
||||
def mdfind(identifier):
|
||||
try:
|
||||
result = subprocess.check_output(
|
||||
["mdfind", f"kMDItemCFBundleIdentifier == {identifier}"], text=True
|
||||
)
|
||||
# Just treat any errors as "couldn't find app"
|
||||
except subprocess.CalledProcessError:
|
||||
return None
|
||||
|
||||
if result:
|
||||
return result.rstrip("\n")
|
||||
|
||||
|
||||
def suggest_default_chrome_exe_mac():
|
||||
path = None
|
||||
# Try Chromium first, then Chrome
|
||||
result = mdfind("org.chromium.Chromium")
|
||||
if result is not None:
|
||||
path = f"{result}/Contents/MacOS/Chromium"
|
||||
|
||||
result = mdfind("com.google.Chrome")
|
||||
if result is not None:
|
||||
path = f"{result}/Contents/MacOS/Google Chrome"
|
||||
|
||||
if path is not None and os.path.exists(path):
|
||||
return path
|
||||
|
||||
# Fall back to default paths if mdfind couldn't find it
|
||||
# (mdfind might fail to find them even in their default paths
|
||||
# if the system has Spotlight disabled.)
|
||||
for path in [
|
||||
"/Applications/Chromium.app/Contents/MacOS/Chromium",
|
||||
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
|
||||
@ -135,6 +164,14 @@ def suggest_default_chrome_exe():
|
||||
if os.path.exists(path):
|
||||
return path
|
||||
|
||||
|
||||
def suggest_default_chrome_exe():
|
||||
# First ask mdfind, which lets us find it in non-default paths
|
||||
if sys.platform == "darwin":
|
||||
path = suggest_default_chrome_exe_mac()
|
||||
if path is not None:
|
||||
return path
|
||||
|
||||
# "chromium-browser" is the executable on ubuntu trusty
|
||||
# https://github.com/internetarchive/brozzler/pull/6/files uses "chromium"
|
||||
# google chrome executable names taken from these packages:
|
||||
|
Loading…
x
Reference in New Issue
Block a user