]> granicus.if.org Git - python/commitdiff
Patch from Bastien Kleineidam:
authorGregory P. Smith <greg@mad-scientist.com>
Fri, 12 May 2000 00:52:23 +0000 (00:52 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Fri, 12 May 2000 00:52:23 +0000 (00:52 +0000)
adds the 'install_data' and 'install_scripts' commands; these two
are trivial thanks to the 'install_misc' base class in cmd.py.
(Minor tweaks and commentary by me; the code is untested so far.)

Lib/distutils/cmd.py
Lib/distutils/command/__init__.py
Lib/distutils/command/install.py
Lib/distutils/command/install_data.py [new file with mode: 0644]
Lib/distutils/command/install_scripts.py [new file with mode: 0644]
Lib/distutils/dist.py

index abb23c9fb26c2ede66785fc863ff617f3be3451e..393734401de41edf05fc77c0fcbb27b01d061ad6 100644 (file)
@@ -344,5 +344,35 @@ class Command:
 # class Command
 
 
+class install_misc (Command):
+    """Common base class for installing some files in a subdirectory.
+    Currently used by install_data and install_scripts.
+    """
+    
+    user_options = [('install-dir=', 'd', "directory to install the files to")]
+
+    def initialize_options (self):
+        self.install_dir = None
+        self.outfiles = None
+
+    def _install_dir_from(self, dirname):
+        self.set_undefined_options('install', (dirname, 'install_dir'))
+
+    def _copydata(self, filelist):
+        self.outfiles = []
+        if not filelist:
+            return
+        self.mkpath(self.install_dir)
+        for f in filelist:
+            self.outfiles.append(self.copy_file (f, self.install_dir))
+
+    def _outputdata(self, filelist):
+        if self.outfiles is not None:
+            return self.outfiles
+        # XXX de-lambda-fy
+        return map(lambda x: os.path.join(self.install_dir, x), filelist)
+
+
+
 if __name__ == "__main__":
     print "ok"
index 385330b5e0f04ab7246f94b4adb0ea8425cf08bc..573ae5138e12104aa23baa82da651d4b660fe520 100644 (file)
@@ -11,6 +11,8 @@ __all__ = ['build',
            'build_clib',
            'install',
            'install_lib',
+           'install_scripts',
+           'install_data',
            'clean',
            'sdist',
            'bdist',
index c70ed9a1d122b5c19e85dd38509b35dae6fbbc89..3f6fa33fc6d412483bad6edd9fc57c76f1478224 100644 (file)
@@ -90,7 +90,10 @@ class install (Command):
     # (func, command) where 'func' is a function to call that returns
     # true if 'command' (the sub-command name, a string) needs to be
     # run.  If 'func' is None, assume that 'command' must always be run.
-    sub_commands = [(None, 'install_lib')]
+    sub_commands = [(None, 'install_lib'),
+                    (None, 'install_scripts'),
+                    (None, 'install_data'),
+                   ]
 
 
     def initialize_options (self):
diff --git a/Lib/distutils/command/install_data.py b/Lib/distutils/command/install_data.py
new file mode 100644 (file)
index 0000000..f86d95e
--- /dev/null
@@ -0,0 +1,14 @@
+from distutils.cmd import install_misc
+
+class install_data (install_misc):
+
+    description = "install data files"
+
+    def finalize_options (self):
+        self._install_dir_from('install_data')
+
+    def run (self):
+        self._copydata(self.distribution.data)
+
+    def get_outputs (self):
+        return self._outputdata(self.distribution.data)
diff --git a/Lib/distutils/command/install_scripts.py b/Lib/distutils/command/install_scripts.py
new file mode 100644 (file)
index 0000000..665208e
--- /dev/null
@@ -0,0 +1,16 @@
+from distutils.cmd import install_misc
+
+class install_scripts(install_misc):
+
+    description = "install scripts"
+    # XXX needed?
+    user_options = [('install-dir=', 'd', "directory to install to")]
+
+    def finalize_options (self):
+        self._install_dir_from('install_scripts')
+
+    def run (self):
+        self._copydata(self.distribution.scripts)
+
+    def get_outputs(self):
+        return self._outputdata(self.distribution.scripts)
index a0c6c9ea3d5e4d4b22ef6a22191e77fabaaf1573..998cff7190229779bc9d044169eba41a8133e57b 100644 (file)
@@ -154,6 +154,8 @@ class Distribution:
         self.ext_package = None
         self.include_dirs = None
         self.extra_path = None
+        self.scripts = None
+        self.data = None
 
         # And now initialize bookkeeping stuff that can't be supplied by
         # the caller at all.  'command_obj' maps command names to