"""
Helpers for checking for an interacting with external dependencies. These are
things that Elodie requires, but aren't installed automatically for the user.
"""
from __future__ import print_function

import os
import sys
from distutils.spawn import find_executable


#: Error to print when exiftool can't be found.
EXIFTOOL_ERROR = u"""
It looks like you don't have exiftool installed, which Elodie requires.
Please take a look at the installation steps in the readme:

https://github.com/jmathai/elodie#install-everything-you-need
""".lstrip()


def get_exiftool():
    """Get path to executable exiftool binary.

    We wrap this since we call it in a few places and we do a fallback.

    :returns: str or None
    """
    path = find_executable('exiftool')
    # If exiftool wasn't found we try to brute force the homebrew location
    if path is None:
        path = '/usr/local/bin/exiftool'
        if not os.path.isfile(path) or not os.access(path, os.X_OK):
            return None
    return path


def verify_dependencies():
    """Verify that external dependencies are installed.

    Prints a message to stderr and returns False if any dependencies are
    missing.

    :returns: bool
    """
    exiftool = get_exiftool()
    if exiftool is None:
        print(EXIFTOOL_ERROR, file=sys.stderr)
        return False

    return True

"""
Helpers for checking for an interacting with external dependencies. These are
things that Elodie requires, but aren't installed automatically for the user.
"""
from __future__ import print_function

import os
import sys
from distutils.spawn import find_executable


#: Error to print when exiftool can't be found.
EXIFTOOL_ERROR = u"""
It looks like you don't have exiftool installed, which Elodie requires.
Please take a look at the installation steps in the readme:

https://github.com/jmathai/elodie#install-everything-you-need
""".lstrip()


def get_exiftool():
    """Get path to executable exiftool binary.

    We wrap this since we call it in a few places and we do a fallback.

    :returns: str or None
    """
    path = find_executable('exiftool')
    # If exiftool wasn't found we try to brute force the homebrew location
    if path is None:
        path = '/usr/local/bin/exiftool'
        if not os.path.isfile(path) or not os.access(path, os.X_OK):
            return None
    return path


def verify_dependencies():
    """Verify that external dependencies are installed.

    Prints a message to stderr and returns False if any dependencies are
    missing.

    :returns: bool
    """
    exiftool = get_exiftool()
    if exiftool is None:
        print(EXIFTOOL_ERROR, file=sys.stderr)
        return False

    return True

Helpers for checking for an interacting with external dependencies. These are things that Elodie requires, but aren't installed automatically for the user. #: Error to print when exiftool can't be found. It looks like you don't have exiftool installed, which Elodie requires. Please take a look at the installation steps in the readme:  https://github.com/jmathai/elodie#install-everything-you-need Get path to executable exiftool binary.      We wrap this since we call it in a few places and we do a fallback.      :returns: str or None # If exiftool wasn't found we try to brute force the homebrew location Verify that external dependencies are installed.      Prints a message to stderr and returns False if any dependencies are     missing.      :returns: bool