import os.path from distutils.core import Command from distutils.command.build import build from distutils.util import byte_compile from distutils.dir_util import mkpath def generate_version(dir, data_dir, version): """ Create a file gaphor/version.py which contains the current version. """ outfile = os.path.join(dir, 'gaphor', 'version.py') print 'generating %s' % outfile, dir, data_dir mkpath(os.path.dirname(outfile)) f = open(outfile, 'w') f.write('"""\nVersion information generated by setup.py. DO NOT EDIT.\n"""\n\n') f.write('VERSION=\'%s\'\n' % version) # expand backspaces f.write('DATA_DIR=\'%s\'\n' % data_dir.replace('\\', '\\\\')) if os.name == 'nt': home = 'USERPROFILE' else: home = 'HOME' f.write('import os\n') f.write('USER_DATA_DIR=os.path.join(os.getenv(\'%s\'), \'.gaphor\')\n' % home) f.write('del os\n') f.close() byte_compile([outfile]) class build_version(Command): user_options = [ ('build-lib=','b', "build directory (where to install from)"), ('force', 'f', "force installation (overwrite existing files)"), ('data-dir', None, "data directory (where images and plugins reside)"), ] boolean_options = [ 'force' ] def initialize_options(self): self.build_lib = None self.force = 0 self.data_dir = None def finalize_options(self): self.set_undefined_options('build', ('build_purelib', 'build_lib'), ('force', 'force')) self.data_dir = os.path.join(os.getcwd(), 'data') def run(self): generate_version(self.build_lib, self.data_dir, self.distribution.get_version()) build.sub_commands.insert(0, ('build_version', None))