Skip to content

Commit

Permalink
Merge pull request authomatic#1 from izhigalko/master
Browse files Browse the repository at this point in the history
Fix chrome driver installation
  • Loading branch information
Kreozot authored Mar 26, 2019
2 parents e9fab31 + 04157b6 commit 5e1096c
Showing 1 changed file with 29 additions and 17 deletions.
46 changes: 29 additions & 17 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from distutils.command.install import install
from distutils.command.install_data import install_data
from distutils.core import setup
from distutils.command.build_scripts import build_scripts
import hashlib
import os
import platform
Expand All @@ -9,6 +9,11 @@
import sys
import zipfile

try:
from setuptools import setup
except ImportError:
from distutils.core import setup

try:
from urllib import request
except ImportError:
Expand Down Expand Up @@ -47,7 +52,7 @@ def get_chromedriver_version():
.format(CHROMEDRIVER_INFO_URL))


class BuildScripts(install_data):
class InstallChromeDriver(install_data):
"""Downloads and unzips the requested chromedriver executable."""

def _download(self, zip_path, validate=False):
Expand Down Expand Up @@ -98,14 +103,26 @@ def reporthoook(x, y, z):

def _unzip(self, zip_path):
zf = zipfile.ZipFile(zip_path)
print("\t - extracting '{0}' to '{1}'."
.format(zip_path, self.install_dir))
zf.extractall(self.install_dir)
out = tempfile.mkdtemp('chromedriver_distr')

print("\t - extracting '{0}' to '{1}'.".format(zip_path, out))
zf.extractall(out)

return (os.path.join(out, f) for f in os.listdir(out))

def _validate(self, zip_path):
checksum = hashlib.md5(open(zip_path, 'rb').read()).hexdigest()
return checksum in chromedriver_checksums

def initialize_options(self):
super().initialize_options()
self.scripts_dir = None

def finalize_options(self):
self.set_undefined_options('build', ('build_scripts', 'scripts_dir'))
self.data_files = []
super().finalize_options()

def run(self):
global chromedriver_version, chromedriver_checksums

Expand Down Expand Up @@ -136,16 +153,10 @@ def run(self):
else:
self._download(zip_path)

self._unzip(zip_path)
self.data_files = [os.path.join(self.install_dir, script) for script in
os.listdir(self.install_dir)]
print(self.data_files)
chromedriver_files = self._unzip(zip_path)
self.data_files = [(self.scripts_dir, chromedriver_files)]
install_data.run(self)

def finalize_options(self):
install_data.finalize_options(self)
self.data_files = []


class Install(install):
"""Used to get chromedriver version and checksums from install options"""
Expand All @@ -155,6 +166,8 @@ class Install(install):
# old setuptools version.
_svem = list(filter(lambda x: x[0] == 'single-version-externally-managed',
install.user_options))
sub_commands = [*install.sub_commands,
('install_chrome_driver', lambda self: True)]

if not _svem:
single_version_externally_managed = None
Expand Down Expand Up @@ -213,9 +226,8 @@ def run(self):
'Topic :: System :: Installation/Setup',
],
license='MIT',
package_data={'': ['*.txt', '*.rst', 'chromedriver']},
include_package_data=True,
package_data={'': ['*.txt', '*.rst']},
# If packages is empty, contents of ./build/lib will not be copied!
packages=['chromedriver_installer'],
cmdclass=dict(install_data=BuildScripts, install=Install)
)
cmdclass=dict(install_chrome_driver=InstallChromeDriver, install=Install)
)

0 comments on commit 5e1096c

Please sign in to comment.