configurationengine/source/scripts/conesub_packvariant.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.path
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 logging
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    20
from optparse import OptionParser, OptionGroup
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    21
import cone_common
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    22
from cone.public import api
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    23
from conesub_merge import get_active_root_if_necessary
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    24
                          
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    25
VERSION = '1.0'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    26
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    27
logger    = logging.getLogger('cone')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    28
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    29
def find_variant_layers(source_config):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    30
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    31
    Find all layers in the configuration that contain custvariant* in
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    32
    their path name and return a list containing source->target mappings.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    33
    @param target_config: The target configuration object.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    34
    @param new_name: The new name to replace custvariant* in the
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    35
        target path name with.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    36
    @return: A list of (source_layer, target_layer) tuples.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    37
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    38
    import re
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    39
    pattern = re.compile(r'.*/(custvariant[^/]*)/.*')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    40
    result = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    41
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    42
    for src in source_config.list_configurations():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    43
        m = pattern.match(src)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    44
        if m:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    45
            result.append(src)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    46
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    47
    return result
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    48
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    49
def get_metadatas_as_convertprojectml(configuration_root):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    50
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    51
    Creates lines for convertprojectml file from metadata items and also adds
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    52
    version info to correct place. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    53
    @param configuration_root: Configuration root object which contains metadatas.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    54
    @return: A list of metadata lines for convertprojectml.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    55
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    56
    metadatas = configuration_root.get_meta()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    57
    metadata_line = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    58
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    59
    for metadata in metadatas:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    60
        if metadata.ns == "http://www.s60.com/xml/confml/1" or metadata.ns == "http://www.s60.com/xml/confml/2":
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    61
            if metadata.tag == 'release':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    62
                metadata_line.append("<" + metadata.tag + ">${convertproject.versioninfo}</" + metadata.tag + ">")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    63
            elif metadata.tag == 'version':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    64
                metadata_line.append("<" + metadata.tag + ">001</" + metadata.tag + ">")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    65
            else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    66
                metadata_line.append("<" + metadata.tag + ">" + metadata.value + "</" + metadata.tag + ">")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    67
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    68
        if metadata.ns == "http://www.nokia.com/xml/cpf-id/1":
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    69
            if metadata.attrs['name'] == 'sw_version':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    70
                metadata_line.append('<cv:configuration-property name="' + metadata.attrs['name'] + '" value="${convertproject.versioninfo}" />')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    71
            else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    72
                metadata_line.append('<cv:configuration-property name="' + metadata.attrs['name'] + '" value="' + metadata.attrs['value'] + '" />')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    73
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    74
    return metadata_line
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    75
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    76
def get_layerlist_as_convertprojectml(configuration_root):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    77
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    78
    Creates lines for convertprojectml file from layer items in configurtion root
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    79
    @param configuration_root: Configuration root object
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    80
    @return: A list of layer lines for convertprojectml.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    81
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    82
    layer_line = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    83
    layer_list = configuration_root.list_configurations()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    84
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    85
    for layer_item in layer_list:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    86
        layer_line.append('<filter action="include_layer" data="' + layer_item + '"/>')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    87
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    88
    return layer_line
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    89
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    90
def create_convertprojectml_file(conf_filename, conv_proj_filename, filepath,layerlist, metadatas, root_name):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    91
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    92
    Creates convertprojectml file for package
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    93
    @param conf_filename: configuration root filename
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    94
    @param conv_proj_filename: convertprojectml filename
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    95
    @param filepath: path where file is created
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    96
    @param layerlist: list of layers 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    97
    @param metadatas: list of metadatas
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    98
    @param root_name: Name of configuration root
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    99
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   100
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   101
    file_header = ['<?xml version="1.0" encoding="UTF-8"?>' + "\r\n", 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   102
                   '<convertprojectml xmlns="http://www.s60.com/xml/convertprojectml/1">' + "\r\n\r\n",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   103
                   '<targetProject path=""/>' + "\r\n",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   104
                   "\t" + '<layer path="">' + "\r\n",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   105
                   "\t\t" + '<file type="configuration_root" path="'+ conf_filename + '"']
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   106
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   107
    #root_name can be empty so we need to check is there some content.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   108
    if root_name:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   109
        file_header.append(' configuration_name="' + root_name + '"')                 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   110
    file_header.append('>' + "\r\n")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   111
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   112
    file_footer = ["\t\t" + '</file>' + "\r\n",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   113
                   "\t" +'</layer>' + "\r\n",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   114
                   '</convertprojectml>'+ "\r\n"]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   115
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   116
    convert_file =  os.path.abspath(filepath + "/" + conv_proj_filename)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   117
    fh = open(convert_file,'wb')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   118
    fh.writelines(file_header)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   119
    fh.write("\t\t\t" + '<meta xmlns:cv="http://www.nokia.com/xml/cpf-id/1">' + "\r\n")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   120
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   121
    for meta_line in metadatas:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   122
        fh.write("\t\t\t\t" + meta_line + "\r\n")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   123
    fh.write("\t\t\t" + '</meta>' + "\r\n")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   124
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   125
    for layer_line in layerlist:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   126
        fh.write("\t\t\t" + layer_line + "\r\n")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   127
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   128
    fh.writelines(file_footer)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   129
    fh.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   130
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   131
def main(argv=sys.argv):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   132
    """ Pack (zip) the variant layers of a configuration. """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   133
    parser = OptionParser(version="%%prog %s" % VERSION)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   134
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   135
    parser.add_options(cone_common.COMMON_OPTIONS)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   136
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   137
    parser.add_option("-p", "--project",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   138
                       dest="project",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   139
                       help="Defines the location of current project. Default is the current working directory.",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   140
                       default=".",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   141
                       metavar="STORAGE")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   142
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   143
    group = OptionGroup(parser, "Packvariant options",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   144
                        "The packvariant action is intended for packing variant to a zip-file for integration purposes.")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   145
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   146
    group.add_option("-c", "--configuration",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   147
                        dest="configuration",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   148
                        help="Name of the configuration wanted to be packed.",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   149
                        metavar="CONFIG")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   150
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   151
    group.add_option("-r", "--remote",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   152
                        dest="remote",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   153
                        help="Defines a location and a name of remote storage (ZIP)",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   154
                        metavar="STORAGE")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   155
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   156
    group.add_option("-l", "--convert-location",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   157
                        dest="convertlocation",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   158
                        help="Defines a location of convertprojectml file."
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   159
                        "Default location is <PROJECT>/convertpluginlayer/implml/",
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   160
                        default="/convertpluginlayer/implml/")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   161
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   162
    parser.add_option_group(group)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   163
    (options, _) = parser.parse_args(argv)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   164
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   165
    cone_common.handle_common_options(options)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   166
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   167
    # Check the passed options
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   168
    if not options.remote:      parser.error("Target where variant package is placed must be given")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   169
    if not options.configuration:  parser.error("Configuration root to be packed must be given")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   170
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   171
    try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   172
        target_storage = api.Storage.open(options.remote,'w', username=options.username, password=options.password)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   173
        target_project = api.Project(target_storage)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   174
        source_storage = api.Storage.open(options.project,'r', username=options.username, password=options.password)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   175
 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   176
        if not os.path.isdir(source_storage.get_path()):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   177
            print "ERROR: --Project must be a directory. Terminating the program."
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   178
            sys.exit(1)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   179
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   180
        source_project = api.Project(source_storage)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   181
        source_config = get_active_root_if_necessary(source_project, options.configuration, 'source')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   182
        source_config = source_project.get_configuration(source_config)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   183
        fname, _ = os.path.splitext(options.configuration)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   184
        conv_project_filename =  fname + ".convertprojectml"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   185
        print "Packing configuration: %s" % options.configuration
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   186
        print "Source project: %s" % options.project
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   187
        print "Target project: %s" % options.remote
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   188
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   189
        # Adding all files in layers
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   190
        layer_list = find_variant_layers(source_config)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   191
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   192
        for add_layer in layer_list:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   193
            layer_config = source_project.get_configuration(add_layer)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   194
            layer = layer_config.get_layer()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   195
            path_part = layer.path + "/"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   196
            target_project.import_configuration(layer_config)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   197
            resource_list = layer_config.layer.list_all_resources(recurse=True)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   198
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   199
            for single_resource in resource_list:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   200
                parsed_path = path_part + single_resource
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   201
                if source_storage.is_resource(parsed_path):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   202
                    logger.info("Adding file: %s" % parsed_path)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   203
                    target_storage.import_resources([parsed_path], source_storage)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   204
                if source_storage.is_folder(path_part + single_resource):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   205
                    logger.info("Adding folder: %s" % parsed_path)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   206
                    target_storage.create_folder(parsed_path)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   207
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   208
        layer_list = get_layerlist_as_convertprojectml(source_config)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   209
        metadata_list = get_metadatas_as_convertprojectml(source_config)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   210
        if not source_storage.is_folder(os.path.normpath(options.convertlocation + "/")):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   211
            source_storage.create_folder(os.path.normpath(options.convertlocation + "/"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   212
        create_convertprojectml_file(options.configuration,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   213
                                     conv_project_filename,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   214
                                     options.project + "/"+ options.convertlocation + "/" ,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   215
                                     layer_list,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   216
                                     metadata_list,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   217
                                     source_config.get_name())
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   218
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   219
        target_storage.import_resources([os.path.normpath(options.convertlocation + "/" +conv_project_filename)], source_storage) 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   220
    except Exception ,e:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   221
        print "Could not create Zip archive: %s" % e
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   222
        sys.exit(2)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   223
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   224
    try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   225
        target_storage.save()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   226
        source_project.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   227
        target_project.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   228
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   229
        conv_path = (os.path.normpath(options.project + "/" + options.convertlocation + "/"))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   230
        conv_file_path = (os.path.normpath(conv_path + "/" + conv_project_filename))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   231
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   232
        os.remove(conv_file_path)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   233
        os.removedirs(conv_path)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   234
    except:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   235
        pass  
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   236
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   237
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   238
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   239
if __name__ == "__main__":
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   240
    main()