Module version |
[hide private]
[frames] | no frames]

# Source Code for Module version

     1  #============================================================================
     2  #Name        : version.py
     3  #Part of     : Helium
     4
     5  #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     6  #All rights reserved.
     7  #This component and the accompanying materials are made available
     8  #under the terms of the License "Eclipse Public License v1.0"
     9  #which accompanies this distribution, and is available
    10  #at the URL "http://www.eclipse.org/legal/epl-v10.html".
    11  #
    12  #Initial Contributors:
    13  #Nokia Corporation - initial contribution.
    14  #
    15  #Contributors:
    16  #
    17  #Description:
    18  #===============================================================================
    19
    20  """ S60 Version Management module.
    21
    22  ::
    23
    24      config = {'model.name': 'NXX',
    25                'variant.id': '01',
    26                'variant.revision' : '0',
    27                'model.template': '${model.name} (${variant.id}.${variant.revision})'}
    28      v = Version('model',config)
    29      print v.version_string()
    30
    31  """
    32
    33  from datetime import date
    34  import codecs
    35  import os
    36  import re
    37
    38 -class Version:
    39      """ Version template.
    40      """
    41 -    def __init__(self, vtype, config):
    42          """ Initialise the Version object.
    43          """
    44          self.vtype = vtype
    45          self.config = config
    46          today = date.today().strftime( "%d-%m-%y" )
    47          self.config['today'] = today
    48
    49 -    def version_string( self ):
    50          """ Returns the formatted version string.
    51          """
    52          # Insert the attributes of this object into the format string
    53          # Make all Ant-like substitution match the Python format for string substitution
    54          return self.__unescape(self.config["%s.template" % self.vtype])
    55
    56 -    def write(self):
    57          """ Write the version string to the vtype.txt.path file.
    58          """
    59          self.__write(self.__unescape(self.config["%s.txt.path" % self.vtype]), self.version_string())
    60
    61 -    def __write( self, path, content ):
    62          print 'Writing version file: ' + path
    63          #print 'Content: ' + content
    64          if os.path.exists( path ):
    65              os.remove( path )
    66          newfile = open( path, 'w+' )
    67          newfile.write( codecs.BOM_UTF16_LE )
    68          newfile.close()
    69          vout = codecs.open( path, 'a', 'utf-16-le' )
    70          vout.write( unicode( content ) )
    71          vout.close()
    72
    73
    74 -    def __unescape(self, text):
    75          previous = u''
    76          while previous != text:
    77              previous = text
    78              text = re.sub(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', text)
    79              text = text % self.config
    80          return text
    81
    82
    83 -    def __str__(self):
    84          """ The string representation of the version object is the full version string.
    85          """
    86          return self.version_string()
    87