#! /usr/bin/env python

import logging
import os
import sys


def is_packaged_app():
    """Determines if this is a packaged application."""
    try:
        # pylint: disable=pointless-statement, protected-access
        sys._MEIPASS
        return True
    except AttributeError:
        return False

if not is_packaged_app():
    sys.path.extend([
        os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')
    ])

# Fixes PyInstaller issue when sys.getsystemencoding is None.
# https://github.com/mitsuhiko/click/issues/355
if sys.getfilesystemencoding() is None:
    sys.getfilesystemencoding = lambda: 'utf-8'

logging.basicConfig(level=logging.INFO, format='%(message)s')

# Fixes PyInstaller issues with below imports.
# pylint: disable=wrong-import-position, unused-import
import copy
import exceptions
import json
import weakref
from email.mime.application import MIMEApplication
import werkzeug

# Fixes simplejson and PyInstaller.
sys.modules['simplejson'] = json

# Fixes issue with httplib2, requests, cacerts and PyInstaller.
from grow.common import ca_certs_locater
sys.modules['ca_certs_locater'] = ca_certs_locater
from grow.common import utils
os.environ['REQUESTS_CA_BUNDLE'] = utils.get_cacerts_path()

# Fixes sys.getfilesystemencoding() and PyInstaller.
from watchdog.utils import unicode_paths
unicode_paths.fs_encoding = unicode_paths.fs_fallback_encoding

from grow import commands
from grow.commands import group

commands.add_subcommands(group.grow)

if __name__ == '__main__':
    # pylint: disable=no-value-for-parameter
    group.grow()
