configurationengine/source/dev-tools/deprfea.py
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
permissions -rw-r--r--
ConE 1.2.11 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     1
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     3
# All rights reserved.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     4
# This component and the accompanying materials are made available
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     6
# which accompanies this distribution, and is available
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     8
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     9
# Initial Contributors:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    11
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    12
# Contributors:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    13
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    14
# Description:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    15
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    16
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    17
import os
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    18
import sys
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    19
import re
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    20
import shutil
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    21
from optparse import OptionParser
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    22
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    23
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    24
sys.path.append(os.path.join(ROOT_PATH, '..'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    25
if sys.version_info[0] == 2 and (sys.version_info[1] == 5 or sys.version_info[1] == 6):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    26
    cone_basedir = os.path.join(ROOT_PATH, 'configurationengine', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    27
                                 'win', '%s.%s' % (sys.version_info[0], sys.version_info[1]))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    28
    cone_scriptdir = os.path.join(cone_basedir, 'scripts')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    29
    cone_libdir = os.path.join(cone_basedir, 'lib')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    30
    sys.path.append(cone_basedir)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    31
    sys.path.append(cone_scriptdir)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    32
    sys.path.append(cone_libdir)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    33
else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    34
    print 'You are using an unsupported Python version: %s.%s' % (sys.version_info[0], sys.version_info[1])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    35
    sys.exit(1)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    36
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    37
print sys.path
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    38
print os.getenv('PATH')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    39
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    40
try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    41
    import scripts.cone_common
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    42
except:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    43
    import cone_common
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    44
from cone.public import api, plugin, utils, exceptions
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    45
from cone.storage.filestorage import FileStorage
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    46
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    47
CARBON_PROJECT_URL = 'http://carbon.nokia.com/extapi'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    48
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    49
CONFIGS_FILE = os.path.join(ROOT_PATH, 'configs.txt')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    50
ALL_FEATURES_FILE = os.path.join(ROOT_PATH, 'all_features_and_values.txt')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    51
REPORT_FILE = os.path.join(ROOT_PATH, 'deprecated_features.txt')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    52
EXPORT_STORAGE = os.path.join(ROOT_PATH, 'exported')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    53
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    54
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    55
def get_list_of_configurations_from_carbon(carbon_prj):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    56
    config_list = carbon_prj.list_configurations()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    57
    config_list.sort()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    58
    return config_list
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    59
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    60
def filter_configurations_from_file(cfilter=""):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    61
    config_list = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    62
    fh = open(CONFIGS_FILE, 'r')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    63
    config_list = fh.readlines()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    64
    fh.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    65
    if cfilter:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    66
        return [elem.strip() for elem in config_list if match_filter(cfilter, elem)]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    67
    else: 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    68
        return config_list
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    69
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    70
def check_deprecated_features(config, depr_features):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    71
    default_view = config.get_default_view()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    72
    f = open(ALL_FEATURES_FILE, 'a')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    73
    f.write('\n\n### %s ###\n\n' % config.get_name())
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    74
    for fea_ref in default_view.list_all_features():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    75
        feature = default_view.get_feature(fea_ref)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    76
        # If feature has subfeatures, skip it
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    77
        if len(feature.list_features()) > 0:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    78
            f.write('%-15s # %s\n' % ('Has subs', fea_ref))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    79
            continue
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    80
        fea_value = default_view.get_feature(fea_ref).get_value()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    81
        f.write('%-15s # %s\n' % (fea_value, fea_ref))  
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    82
        # If the value is None and it is not on the list yet, append it to deprecated features
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    83
        if fea_value == None and depr_features.count(fea_ref) == 0:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    84
            depr_features.append(fea_ref)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    85
        # If the value is something else and the feature is on the list, remove it
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    86
        elif fea_value != None and depr_features.count(fea_ref) != 0:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    87
            depr_features.remove(fea_ref)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    88
    f.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    89
    return depr_features
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    90
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    91
def save_report(depr_features):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    92
    fh = open(REPORT_FILE, 'w')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    93
    try: [fh.write(df + '\n') for df in depr_features]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    94
    finally: fh.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    95
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    96
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    97
def match_filter(cfilter, element):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    98
    filters = cfilter.split(';')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    99
    for f in filters:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   100
        if f.strip().lower() == element.strip().lower():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   101
            return True
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   102
        if re.match('.*' + f.strip().lower() + '.*', element.strip().lower()):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   103
            return True
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   104
    return False
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   105
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   106
def create_options():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   107
    #parser = OptionParser(usage="Sumthin")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   108
    parser = OptionParser()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   109
    parser.add_option("-f", "--filter",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   110
                      action="store",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   111
                      dest="filter",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   112
                      help="Filter configurations. Multiple filters can be given, separated by \';\'. E.g. -f \"\(Vasco 01\);\(Vasco 06\)\"",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   113
                      metavar="REGEX",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   114
                      default="")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   115
    parser.add_option("-l", "--list-configurations",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   116
                      action="store_true",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   117
                      dest="list_configs",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   118
                      help="Only list available configurations in Carbon. When used with the -f option, preview the configurations which would be fetched from Carbon.",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   119
                      default=False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   120
    parser.add_option("--force-carbon",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   121
                      action="store_true",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   122
                      dest="force_carbon",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   123
                      help="Get configurations from Carbon even if they have already been fetched.",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   124
                      default=False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   125
    return parser
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   126
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   127
def main():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   128
    parser = create_options()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   129
    (options, args) = parser.parse_args()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   130
    configs = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   131
    carbon_prj = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   132
    local_prj = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   133
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   134
    if options.filter == "":
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   135
        selection = raw_input('No filter given! ALL the configs in Carbon will be fetched and it will take a loooong time. Are you ABSOLUTELY sure you want to continue (y/n)? ')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   136
        if selection.lower() != 'y':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   137
            print '\nGood choice :)'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   138
            return 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   139
        else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   140
            print '\nOk...\n'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   141
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   142
    try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   143
        os.remove(ALL_FEATURES_FILE)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   144
    except Exception, e:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   145
        pass
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   146
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   147
    print '\nOpening project in Carbon (%s)...' % CARBON_PROJECT_URL
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   148
    try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   149
        carbon_prj = api.Project(api.Storage.open(CARBON_PROJECT_URL,"r"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   150
    except Exception, e:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   151
        print 'Unable to open Carbon project. %s' % e
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   152
        return 1
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   153
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   154
    if os.path.exists(EXPORT_STORAGE):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   155
        print '\nOpening project on local disk (%s)...' % EXPORT_STORAGE
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   156
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   157
            local_prj = api.Project(api.Storage.open(EXPORT_STORAGE, 'r'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   158
        except Exception, e:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   159
            print 'Unable to open local project. %s' % e
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   160
            return 1
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   161
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   162
    # Force script to get everything from Carbon again
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   163
    if options.force_carbon:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   164
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   165
            os.remove(CONFIGS_FILE)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   166
            shutil.rmtree(EXPORT_STORAGE, ignore_errors=True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   167
        except:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   168
            pass
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   169
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   170
    # Only get available configs and exit
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   171
    if options.list_configs:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   172
        print 'Getting available configurations from Carbon (%s)' % CARBON_PROJECT_URL
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   173
        configs = get_list_of_configurations_from_carbon(carbon_prj)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   174
        print 'Saving configs to %s...' % CONFIGS_FILE
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   175
        fh = open(CONFIGS_FILE, 'w')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   176
        try: [fh.write('%s\n' % c) for c in configs]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   177
        finally: fh.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   178
        print 'Filtered configs: '
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   179
        configs = filter_configurations_from_file(options.filter)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   180
        for elem in configs: print elem.strip()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   181
        return 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   182
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   183
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   184
    if not os.path.exists(CONFIGS_FILE):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   185
        print 'Configurations file not found. Getting list of configurations in project...'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   186
        configs = get_list_of_configurations_from_carbon(carbon_prj)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   187
        print 'Saving configs to %s...' % CONFIGS_FILE
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   188
        fh = open(CONFIGS_FILE, 'w')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   189
        try: [fh.write('%s\n' % c) for c in configs]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   190
        finally: fh.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   191
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   192
    print '\nFilter wanted configurations from file: '   
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   193
    configs = filter_configurations_from_file(options.filter)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   194
    for elem in configs: print elem.strip()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   195
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   196
    depr_features = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   197
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   198
    for c in configs:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   199
        config_name = c.strip()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   200
        # Configuration has not been exported yet
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   201
        if not os.path.exists(os.path.join(EXPORT_STORAGE, config_name)):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   202
            print '\nExport configuration %s from Carbon' % config_name
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   203
            if not carbon_prj: 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   204
                carbon_prj = api.Project(api.Storage.open(CARBON_PROJECT_URL,"r"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   205
            try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   206
                config = carbon_prj.get_configuration(config_name)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   207
                carbon_prj.export_configuration(config, FileStorage(EXPORT_STORAGE, 'w'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   208
            except:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   209
                print 'Unable to export %s' % config_name
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   210
                continue
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   211
        print '\nOpen configuration %s in project %s' % (config_name, EXPORT_STORAGE)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   212
        if not local_prj:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   213
            try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   214
                local_prj = api.Project(api.Storage.open(EXPORT_STORAGE, 'r'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   215
            except Exception, e:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   216
                print 'Unable to open local project. %s' % e
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   217
                if carbon_prj: carbon_prj.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   218
                return 1
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   219
        config = local_prj.get_configuration(c.strip())
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   220
        depr_features = check_deprecated_features(config, depr_features)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   221
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   222
    if local_prj: local_prj.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   223
    if carbon_prj: carbon_prj.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   224
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   225
    save_report(depr_features)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   226
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   227
    return 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   228
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   229
if __name__ == '__main__':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   230
    sys.exit(main())