import os from distutils.core import Command class InstallScripts(Command): command_name = 'install_scripts' description = "install scripts (Python or otherwise)" user_options = [ ('force', 'f', "force installation (overwrite existing files)"), ] boolean_options = ['force'] def initialize_options(self): self.force = None self.install_dir = None self.skip_build = None return def finalize_options (self): self.set_undefined_options('install', ('install_scripts', 'install_dir'), ('force', 'force'), ('skip_build', 'skip_build'), ) return def run (self): if not self.skip_build: self.run_command('build_scripts') # Create the destination directory if needed self.mkpath(self.install_dir) # Copy the files created in build_scripts for source in self.get_inputs(): self.copy_file(source, self.install_dir) return # -- Reporting methods --------------------------------------------- def get_source_files(self): # The sources are assumed to be reported by 'build_scripts' return [] def get_inputs(self): build_scripts = self.get_finalized_command('build_scripts') return build_scripts.get_outputs() def get_outputs(self): outputs = [] for source in self.get_inputs(): source = os.path.basename(source) outfile = os.path.join(self.install_dir, source) outputs.append(outfile) return outputs