openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #04141
[Merge] lp:~raoul-snyman/openlp/dev-version into lp:openlp
Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/dev-version into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
For us developers... pull the bzr version.
--
https://code.launchpad.net/~raoul-snyman/openlp/dev-version/+merge/38084
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/dev-version into lp:openlp.
=== modified file 'openlp.pyw'
--- openlp.pyw 2010-09-30 05:04:43 +0000
+++ openlp.pyw 2010-10-10 21:18:40 +0000
@@ -30,6 +30,7 @@
import logging
from optparse import OptionParser
from traceback import format_exception
+from subprocess import Popen, PIPE
from PyQt4 import QtCore, QtGui
@@ -71,6 +72,84 @@
"""
log.info(u'OpenLP Application Loaded')
+ def _get_version(self):
+ """
+ Load and store current Application Version
+ """
+ if u'--dev-version' in sys.argv:
+ # If we're running the dev version, let's use bzr to get the version
+ try:
+ # If bzrlib is availble, use it
+ from bzrlib.branch import Branch
+ b = Branch.open_containing('.')[0]
+ b.lock_read()
+ try:
+ # Get the branch's latest revision number.
+ revno = b.revno()
+ # Convert said revision number into a bzr revision id.
+ revision_id = b.dotted_revno_to_revision_id((revno,))
+ # Get a dict of tags, with the revision id as the key.
+ tags = b.tags.get_reverse_tag_dict()
+ # Check if the latest
+ if revision_id in tags:
+ full_version = u'%s' % tags[revision_id][0]
+ else:
+ full_version = '%s-bzr%s' % \
+ (sorted(b.tags.get_tag_dict().keys())[-1], revno)
+ finally:
+ b.unlock()
+ except:
+ # Otherwise run the command line bzr client
+ bzr = Popen((u'bzr', u'tags', u'--sort', u'time'), stdout=PIPE)
+ output, error = bzr.communicate()
+ code = bzr.wait()
+ if code != 0:
+ raise Exception(u'Error running bzr tags')
+ lines = output.splitlines()
+ if len(lines) == 0:
+ tag = u'0.0.0'
+ revision = u'0'
+ else:
+ tag, revision = lines[-1].split()
+ bzr = Popen((u'bzr', u'log', u'--line', u'-r', u'-1'),
+ stdout=PIPE)
+ output, error = bzr.communicate()
+ code = bzr.wait()
+ if code != 0:
+ raise Exception(u'Error running bzr log')
+ latest = output.split(u':')[0]
+ full_version = latest == revision and tag or \
+ u'%s-bzr%s' % (tag, latest)
+ else:
+ # We're not running the development version, let's use the file
+ filepath = AppLocation.get_directory(AppLocation.VersionDir)
+ filepath = os.path.join(filepath, u'.version')
+ fversion = None
+ try:
+ fversion = open(filepath, u'r')
+ full_version = unicode(fversion.read()).rstrip()
+ except IOError:
+ log.exception('Error in version file.')
+ full_version = u'0.0.0-bzr000'
+ finally:
+ if fversion:
+ fversion.close()
+ bits = full_version.split(u'-')
+ app_version = {
+ u'full': full_version,
+ u'version': bits[0],
+ u'build': bits[1] if len(bits) > 1 else None
+ }
+ if app_version[u'build']:
+ log.info(
+ u'Openlp version %s build %s',
+ app_version[u'version'],
+ app_version[u'build']
+ )
+ else:
+ log.info(u'Openlp version %s' % app_version[u'version'])
+ return app_version
+
def notify(self, obj, evt):
#TODO needed for presentation exceptions
return QtGui.QApplication.notify(self, obj, evt)
@@ -79,39 +158,7 @@
"""
Run the OpenLP application.
"""
- #Load and store current Application Version
- filepath = AppLocation.get_directory(AppLocation.VersionDir)
- filepath = os.path.join(filepath, u'.version')
- fversion = None
- try:
- fversion = open(filepath, u'r')
- for line in fversion:
- full_version = unicode(line).rstrip() #\
- #.replace(u'\r', u'').replace(u'\n', u'')
- bits = full_version.split(u'-')
- app_version = {
- u'full': full_version,
- u'version': bits[0],
- u'build': bits[1] if len(bits) > 1 else None
- }
- if app_version[u'build']:
- log.info(
- u'Openlp version %s build %s',
- app_version[u'version'],
- app_version[u'build']
- )
- else:
- log.info(u'Openlp version %s' % app_version[u'version'])
- except IOError:
- log.exception('Error in version file.')
- app_version = {
- u'full': u'1.9.0-bzr000',
- u'version': u'1.9.0',
- u'build': u'bzr000'
- }
- finally:
- if fversion:
- fversion.close()
+ app_version = self._get_version()
#provide a listener for widgets to reqest a screen update.
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_process_events'), self.processEvents)
@@ -172,6 +219,9 @@
parser.add_option('-p', '--portable', dest='portable',
action='store_true', help='Specify if this should be run as a '
'portable app, off a USB flash drive (not implemented).')
+ parser.add_option('-d', '--dev-version', dest='dev_version',
+ action='store_true', help='Ignore the version file and pull the '
+ 'version directly from Bazaar')
parser.add_option('-s', '--style', dest='style',
help='Set the Qt4 style (passed directly to Qt4).')
# Set up logging
Follow ups