]> git.donarmstrong.com Git - lilypond.git/blobdiff - stepmake/bin/install.py
* stepmake/stepmake/install-targets.make (local-uninstall): idem.
[lilypond.git] / stepmake / bin / install.py
diff --git a/stepmake/bin/install.py b/stepmake/bin/install.py
new file mode 100644 (file)
index 0000000..7da9c85
--- /dev/null
@@ -0,0 +1,89 @@
+#!@PYTHON@
+import string
+import getopt
+import sys
+import os
+import shutil
+(opts, args) = getopt.getopt (sys.argv[1:], 'b:cdg:m:o:st:', [])
+transform_base = None
+group = None
+owner = None
+transform = None
+mode = None 
+copy = False
+create_dir = False
+
+for (o,a) in opts:
+       if o == '-b':
+               transform_base = a
+       elif o == '-c':
+               copy = True
+       elif o == '-d':
+               create_dir = True
+       elif o == '-g':
+               group = a
+       elif o == '-m':
+               mode = string.atoi (a, 8)
+       elif o == '-o':
+               owner = a
+       elif o == '-s':
+               strip = True
+       elif o == '-t':
+               transform = a
+       elif o == '-h':
+               print ''' Usage: $0 [OPTION]... SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 -d DIRECTORIES...
+
+In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
+In the second, create the directory path DIR.
+
+Options:
+-b=TRANSFORMBASENAME
+-c         copy source (using $cpprog) instead of moving (using $mvprog).
+-d         create directories instead of installing files.
+-g GROUP   $chgrp installed files to GROUP.
+-m MODE    $chmod installed files to MODE.
+-o USER    $chown installed files to USER.
+-s         strip installed files (using $stripprog).
+-t=TRANSFORM
+--help     display this help and exit.
+--version  display version info and exit.'''
+               sys.exit (0)
+
+if not mode:
+       if create_dir:
+               mode = 0755
+       else:
+               mode = 0644
+               
+
+chown_me = []
+
+dest = None
+if not create_dir:
+       dest = args.pop()
+
+for f in args:
+       if create_dir:
+               os.makedirs (f, mode=mode)
+               chown_me.append (f)
+       else:
+               if copy:
+                       shutil.copy2 (f, dest)
+               else:
+                       shutil.move (f, dest)
+               if os.path.isdir (dest):
+                       chown_me.append (os.path.join (dest, os.path.basename (f)))
+               else:
+                       chown_me.append (dest)
+
+for f in chown_me:
+       os.chmod (f, mode)
+       if group <> None or owner <> None:
+               os.chown (f, group, owner)
+       
+       
+
+               
+