Added an install script.
authorFrederic Jolliton <frederic@jolliton.com>
Wed, 9 Mar 2005 11:23:08 +0000 (11:23 +0000)
committerFrederic Jolliton <frederic@jolliton.com>
Wed, 9 Mar 2005 11:23:08 +0000 (11:23 +0000)
git-archimport-id: frederic@jolliton.com--2005-private/confparser--main--0.1--patch-4

install [new file with mode: 0755]
install_conf.py [new file with mode: 0644]

diff --git a/install b/install
new file mode 100755 (executable)
index 0000000..e67d224
--- /dev/null
+++ b/install
@@ -0,0 +1,161 @@
+#!/bin/env python
+# -*- coding: iso-8859-1 -*-
+
+#
+# TuxeeNet installer
+# Copyright (C) 2005  Frédéric Jolliton <frederic@jolliton.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+#--[ Configuration ]----------------------------------------------------------
+
+from install_conf import *
+
+#--[ Global variables ]-------------------------------------------------------
+
+g_verbose = False
+g_pretend = False
+
+#-----------------------------------------------------------------------------
+
+import sys
+import os
+import errno
+import py_compile
+
+from getopt import GetoptError
+try :
+       from getopt import gnu_getopt as getopt
+except :
+       from getopt import getopt
+
+from distutils.sysconfig import get_python_lib
+
+def touch( filename ) :
+
+       open( filename , 'a+' ).close()
+
+def createFile( filename , contents ) :
+
+       f = open( filename , 'w' )
+       f.write( contents )
+       f.close()
+
+def byteCompile( filename ) :
+
+       if g_verbose :
+               print 'Byte-compiling %s' % filename
+       py_compile.compile( filename )
+
+def installPath() :
+
+       '''Install Python path.'''
+
+       path = get_python_lib()
+       path += '/' + g_globalModule + '.pth'
+       target = g_targetPrefix
+       if g_verbose or g_pretend :
+               print 'Creating Python path from %s to %s.' %  ( path , target )
+       if not g_pretend :
+               try :
+                       createFile( path , target )
+               except IOError , e :
+                       print '** Error creating Python path into %s' % path
+                       print e
+
+def installModule() :
+
+       '''Install modules.'''
+
+       myPrefix = g_targetPrefix + '/' + g_globalModule
+
+       if g_verbose or g_pretend :
+               print 'Creating directory %s' % myPrefix
+       if not g_pretend :
+               try :
+                       os.makedirs( myPrefix )
+               except OSError , e :
+                       if e[ 0 ] == errno.EEXIST :
+                               pass
+                       else :
+                               raise
+
+       if g_verbose or g_pretend :
+               print 'Creating module %s' % g_globalModule
+       if not g_pretend :
+               p = myPrefix + '/__init__.py'
+               try :
+                       touch( p )
+               except IOError :
+                       print '** Error touching %s' % p
+               else :
+                       byteCompile( p )
+       for module in g_modules :
+               if g_verbose or g_pretend :
+                       print 'Copying module %s -> %s' % ( module , myPrefix + '/' )
+               if not g_pretend :
+                       mod = open( module ).read()
+                       try :
+                               createFile( myPrefix + '/' + module , mod )
+                       except IOError , e :
+                               print '** Error copying %s -> %s' % ( module , myPrefix + '/' )
+                               print e
+                       else :
+                               byteCompile( myPrefix + '/' + module )
+
+def usage() :
+
+       print '''Usage: install [OPTIONS]
+
+ -h, --help     Print this help.
+ -n, --pretend  Display operations, but do nothing.
+ -v, --verbose  Verbose output.
+     --pth      Install Python path (.pth) only.
+
+Report bugs to <fj@tuxee.net>.'''
+
+def main() :
+
+       global g_verbose
+       global g_pretend
+
+       try :
+               options , paramaters = getopt( sys.argv[ 1 : ] ,
+                       'hnv' , ( 'help' , 'pth' , 'pretend' , 'verbose' ) )
+       except GetoptError , e :
+               print 'install:' , e
+               print 'Try `install --help\' for more information.'
+               sys.exit( 1 )
+
+       pathOnly = False
+
+       for option , argument in options :
+               if option in [ '-h' , '--help' ] :
+                       usage()
+                       sys.exit( 0 )
+               elif option in [ '-v' , '--verbose' ] :
+                       g_verbose = True
+               elif option in [ '-n' , '--pretend' ] :
+                       g_pretend = True
+               elif option in [ '--pth' ] :
+                       pathOnly = True
+
+       installPath()
+       if not pathOnly :
+               installModule()
+
+if __name__ == '__main__' :
+       main()
diff --git a/install_conf.py b/install_conf.py
new file mode 100644 (file)
index 0000000..e8b8526
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# Modules to install.
+#
+g_modules = [
+         'basicparser.py'
+       , 'basicvalidator.py'
+       , 'confparser.py'
+]
+
+#
+# Module name.
+#
+g_globalModule = 'tuxeenet'
+
+#
+# Target directory.
+#
+g_targetPrefix = '/opt/tuxeenet/python'