diff -r 7685cec9fd3c -r f2ddfa555b0f doc/api/python/archive.selectors-pysrc.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/api/python/archive.selectors-pysrc.html Fri Sep 11 11:54:49 2009 +0100 @@ -0,0 +1,385 @@ + + + + + archive.selectors + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package archive :: + Module selectors + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module archive.selectors

+
+  1  #============================================================================  
+  2  #Name        : selectors.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  import re 
+ 21  import os 
+ 22  import sys 
+ 23  import logging 
+ 24  import fileutils 
+ 25  import archive 
+ 26   
+ 27  # Getting logger for the module 
+ 28  logger = logging.getLogger("archive.selectors") 
+ 29   
+ 30   
+
31 -class DistributionPolicySelector: +
32 """ A selector that selects files based on other criteria. + 33 + 34 It is similar to the Ant file selector objects in design. This one selects files + 35 based on whether the root-most Distribution.Policy.S60 file matches the given value. + 36 """ + 37 +
38 - def __init__(self, policy_files, value, ignoremissingpolicyfiles=False): +
39 """ Initialization. """ + 40 self._negate = False + 41 self.values = [v.strip() for v in value.split() if v.strip()!=""] + 42 self._policy_files = policy_files + 43 self._ignoremissingpolicyfiles = ignoremissingpolicyfiles +
44 +
45 - def get_value_and_negate(self, value): +
46 if value.startswith('!'): + 47 return (value[1:], True) + 48 return (value, False) +
49 +
50 - def is_selected(self, path): +
51 """ Determines if the path is selected by this selector. """ + 52 current_dir = os.path.abspath(os.path.dirname(path)) + 53 logger.debug('is_selected: current dir = ' + current_dir + ' ' + str(os.path.exists(current_dir))) + 54 result = False + 55 policy_file = None + 56 # finding the distribution policy from the filelist. + 57 for filename in self._policy_files: + 58 #slow method on case sensitive system + 59 if sys.platform != 'win32': + 60 for f in os.listdir(current_dir): + 61 if f.lower() == filename.lower(): + 62 policy_file = os.path.join(current_dir, f) + 63 break + 64 elif os.path.exists(os.path.join(current_dir, filename)): + 65 policy_file = os.path.join(current_dir, filename) + 66 logger.debug('Using Policy file: ' + policy_file) + 67 break + 68 + 69 policy_value = None + 70 if policy_file is None: + 71 if not self._ignoremissingpolicyfiles: + 72 logger.error("POLICY_ERROR: Policy file not found under '%s' using names [%s]" % (current_dir, ", ".join(self._policy_files))) + 73 policy_value = archive.mappers.MISSING_POLICY + 74 else: + 75 try: + 76 policy_value = fileutils.read_policy_content(policy_file) + 77 except Exception: + 78 logger.warning('POLICY_ERROR: Exception thrown parsing policy file: ' + policy_file) + 79 policy_value = archive.mappers.MISSING_POLICY + 80 # loop through the possible values + 81 for value in self.values: + 82 (val, negate) = self.get_value_and_negate(value) + 83 logger.debug('Policy value: ' + str(policy_value) + ' ' + val) + 84 if (not negate and policy_value == val) or (negate and policy_value != val): + 85 return True + 86 return False +
87 + 88 +
89 -class SymbianPolicySelector: +
90 """ A selector that selects files based on other criteria. + 91 + 92 It is similar to the Ant file selector objects in design. This one selects files + 93 based on whether the root-most distribution.policy file matches the given value. + 94 """ + 95 +
96 - def __init__(self, policy_files, value): +
97 """ Initialization. """ + 98 self._negate = False + 99 self.values = [v.strip() for v in value.split() if v.strip()!=""] +100 self._policy_files = policy_files +
101 +102 +
103 - def get_value_and_negate(self, value): +
104 if value.startswith('!'): +105 return (value[1:], True) +106 return (value, False) +
107 +
108 - def is_selected(self, path): +
109 """ Determines if the path is selected by this selector. """ +110 current_dir = os.path.abspath(os.path.dirname(path)) +111 logger.debug('is_selected: current dir = ' + current_dir + ' ' + str(os.path.exists(current_dir))) +112 result = False +113 policy_file = None +114 # finding the distribution policy from the filelist. +115 for filename in self._policy_files: +116 if sys.platform != 'win32': +117 for f in os.listdir(current_dir): +118 if f.lower() == filename.lower(): +119 policy_file = os.path.join(current_dir, f) +120 logger.debug('Using Policy file: ' + policy_file) +121 break +122 elif os.path.exists(os.path.join(current_dir, filename)): +123 policy_file = os.path.join(current_dir, filename) +124 logger.debug('Using Policy file: ' + policy_file) +125 break +126 +127 policy_value = None +128 if policy_file is None: +129 logger.error("POLICY_ERROR: Policy file not found under '%s' using names [%s]" % (current_dir, ", ".join(self._policy_files))) +130 policy_value = archive.mappers.MISSING_POLICY +131 else: +132 try: +133 policy_value = fileutils.read_symbian_policy_content(policy_file) +134 except Exception: +135 logger.warning('POLICY_ERROR: Exception thrown parsing policy file: ' + policy_file) +136 policy_value = archive.mappers.MISSING_POLICY +137 # loop through the possible values +138 for value in self.values: +139 (val, negate) = self.get_value_and_negate(value) +140 logger.debug('Policy value: ' + str(policy_value) + ' ' + val) +141 if (not negate and policy_value == val) or (negate and policy_value != val): +142 return True +143 return False +
144 +145 SELECTORS = {'policy': lambda config: DistributionPolicySelector(config.get_list('policy.filenames', ['Distribution.Policy.S60']), config['policy.value']), +146 'symbian.policy': lambda config: SymbianPolicySelector(config.get_list('policy.filenames', ['distribution.policy']), config['policy.value']), +147 'distribution.policy.s60': lambda config: DistributionPolicySelector(['Distribution.Policy.S60'], config['distribution.policy.s60'], config['ignore.missing.policyfiles'] == 'true'), +148 } +149 +
150 -def get_selector(name, config): +
151 if not 'ignore.missing.policyfiles' in config: +152 config['ignore.missing.policyfiles'] = 'false' +153 return SELECTORS[name](config) +
154 +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +