Mercurial > p > roundup > code
diff roundup/dist/command/build.py @ 4068:e233d7a66343
Refactor setup.py.
| author | Stefan Seefeld <stefan@seefeld.name> |
|---|---|
| date | Mon, 23 Feb 2009 14:30:32 +0000 |
| parents | |
| children | d4cd0a264098 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/roundup/dist/command/build.py Mon Feb 23 14:30:32 2009 +0000 @@ -0,0 +1,62 @@ +# +# Copyright (C) 2009 Stefan Seefeld +# All rights reserved. +# For license terms see the file COPYING.txt. +# +from roundup import msgfmt +from distutils.command.build import build as base +import os +from glob import glob + +def list_message_files(suffix=".po"): + """Return list of all found message files and their intallation paths""" + _files = glob("locale/*" + suffix) + _list = [] + for _file in _files: + # basename (without extension) is a locale name + _locale = os.path.splitext(os.path.basename(_file))[0] + _list.append((_file, os.path.join( + "share", "locale", _locale, "LC_MESSAGES", "roundup.mo"))) + return _list + +def check_manifest(): + """Check that the files listed in the MANIFEST are present when the + source is unpacked. + """ + try: + f = open('MANIFEST') + except: + print '\n*** SOURCE WARNING: The MANIFEST file is missing!' + return + try: + manifest = [l.strip() for l in f.readlines()] + finally: + f.close() + err = [line for line in manifest if not os.path.exists(line)] + err.sort() + # ignore auto-generated files + if err == ['roundup-admin', 'roundup-demo', 'roundup-gettext', + 'roundup-mailgw', 'roundup-server']: + err = [] + if err: + n = len(manifest) + print '\n*** SOURCE WARNING: There are files missing (%d/%d found)!'%( + n-len(err), n) + print 'Missing:', '\nMissing: '.join(err) + + +class build(base): + + def build_message_files(self): + """For each locale/*.po, build .mo file in target locale directory""" + for (_src, _dst) in list_message_files(): + _build_dst = os.path.join("build", _dst) + self.mkpath(os.path.dirname(_build_dst)) + self.announce("Compiling %s -> %s" % (_src, _build_dst)) + msgfmt.make(_src, _build_dst) + + def run(self): + check_manifest() + self.build_message_files() + base.run(self) +
