python (3.11.7)

(root)/
lib/
python3.11/
site-packages/
setuptools/
_distutils/
command/
install_scripts.py
       1  """distutils.command.install_scripts
       2  
       3  Implements the Distutils 'install_scripts' command, for installing
       4  Python scripts."""
       5  
       6  # contributed by Bastian Kleineidam
       7  
       8  import os
       9  from distutils.core import Command
      10  from distutils import log
      11  from stat import ST_MODE
      12  
      13  
      14  class ESC[4;38;5;81minstall_scripts(ESC[4;38;5;149mCommand):
      15  
      16      description = "install scripts (Python or otherwise)"
      17  
      18      user_options = [
      19          ('install-dir=', 'd', "directory to install scripts to"),
      20          ('build-dir=', 'b', "build directory (where to install from)"),
      21          ('force', 'f', "force installation (overwrite existing files)"),
      22          ('skip-build', None, "skip the build steps"),
      23      ]
      24  
      25      boolean_options = ['force', 'skip-build']
      26  
      27      def initialize_options(self):
      28          self.install_dir = None
      29          self.force = 0
      30          self.build_dir = None
      31          self.skip_build = None
      32  
      33      def finalize_options(self):
      34          self.set_undefined_options('build', ('build_scripts', 'build_dir'))
      35          self.set_undefined_options(
      36              'install',
      37              ('install_scripts', 'install_dir'),
      38              ('force', 'force'),
      39              ('skip_build', 'skip_build'),
      40          )
      41  
      42      def run(self):
      43          if not self.skip_build:
      44              self.run_command('build_scripts')
      45          self.outfiles = self.copy_tree(self.build_dir, self.install_dir)
      46          if os.name == 'posix':
      47              # Set the executable bits (owner, group, and world) on
      48              # all the scripts we just installed.
      49              for file in self.get_outputs():
      50                  if self.dry_run:
      51                      log.info("changing mode of %s", file)
      52                  else:
      53                      mode = ((os.stat(file)[ST_MODE]) | 0o555) & 0o7777
      54                      log.info("changing mode of %s to %o", file, mode)
      55                      os.chmod(file, mode)
      56  
      57      def get_inputs(self):
      58          return self.distribution.scripts or []
      59  
      60      def get_outputs(self):
      61          return self.outfiles or []