import os from distutils import util from distutils.core import Command, DEBUG from Ft.Lib.DistExt import Structures class InstallText(Command): command_name = "install_text" description = "install plain text documentation" user_options = [ ('install-dir=', 'd', "directory to install documentation to"), ('force', 'f', "force installation (overwrite existing files)"), ] boolean_options = ['force'] def initialize_options(self): self.install_dir = None self.force = None return def finalize_options(self): self.set_undefined_options('install', ('install_docs', 'install_dir'), ('force', 'force')) self.files = [ f for f in self.distribution.doc_files if isinstance(f, Structures.File) ] if self.distribution.license_file: self.files.append(Structures.File(self.distribution.license_file)) return def run(self): for file in self.files: source = util.convert_path(file.source) destdir = util.convert_path(file.outdir) destdir = os.path.join(self.install_dir, destdir) self.mkpath(destdir) self.copy_file(source, destdir) return # -- Reporting methods --------------------------------------------- def get_source_files(self): sources = [] for file in self.files: sources.append(util.convert_path(file.source)) return sources def get_inputs(self): inputs = [] for file in self.files: inputs.append(util.convert_path(file.source)) return inputs def get_outputs(self): outputs = [] for file in self.files: source = util.convert_path(file.source) source = os.path.basename(source) outdir = util.convert_path(file.outdir) outputs.append(os.path.join(self.install_dir, outdir, source)) return outputs