Path: blob/master/venv/Lib/site-packages/setuptools/command/install_scripts.py
811 views
from distutils import log1import distutils.command.install_scripts as orig2import os3import sys45from pkg_resources import Distribution, PathMetadata, ensure_directory678class install_scripts(orig.install_scripts):9"""Do normal script install, plus any egg_info wrapper scripts"""1011def initialize_options(self):12orig.install_scripts.initialize_options(self)13self.no_ep = False1415def run(self):16import setuptools.command.easy_install as ei1718self.run_command("egg_info")19if self.distribution.scripts:20orig.install_scripts.run(self) # run first to set up self.outfiles21else:22self.outfiles = []23if self.no_ep:24# don't install entry point scripts into .egg file!25return2627ei_cmd = self.get_finalized_command("egg_info")28dist = Distribution(29ei_cmd.egg_base, PathMetadata(ei_cmd.egg_base, ei_cmd.egg_info),30ei_cmd.egg_name, ei_cmd.egg_version,31)32bs_cmd = self.get_finalized_command('build_scripts')33exec_param = getattr(bs_cmd, 'executable', None)34try:35bw_cmd = self.get_finalized_command("bdist_wininst")36is_wininst = getattr(bw_cmd, '_is_running', False)37except ImportError:38is_wininst = False39writer = ei.ScriptWriter40if is_wininst:41exec_param = "python.exe"42writer = ei.WindowsScriptWriter43if exec_param == sys.executable:44# In case the path to the Python executable contains a space, wrap45# it so it's not split up.46exec_param = [exec_param]47# resolve the writer to the environment48writer = writer.best()49cmd = writer.command_spec_class.best().from_param(exec_param)50for args in writer.get_args(dist, cmd.as_header()):51self.write_script(*args)5253def write_script(self, script_name, contents, mode="t", *ignored):54"""Write an executable file to the scripts directory"""55from setuptools.command.easy_install import chmod, current_umask5657log.info("Installing %s script to %s", script_name, self.install_dir)58target = os.path.join(self.install_dir, script_name)59self.outfiles.append(target)6061mask = current_umask()62if not self.dry_run:63ensure_directory(target)64f = open(target, "w" + mode)65f.write(contents)66f.close()67chmod(target, 0o777 - mask)686970