configurationengine/source/scripts/conesub_export.py
changeset 5 d2c80f5cab53
parent 3 e7e0ae78773e
--- a/configurationengine/source/scripts/conesub_export.py	Wed Sep 08 12:20:56 2010 +0300
+++ b/configurationengine/source/scripts/conesub_export.py	Thu Oct 21 16:36:53 2010 +0300
@@ -138,6 +138,14 @@
                              "Filters out all files with extension sis, sisx, wgz or wgt.",
                         default=None)
 
+    group.add_option("--include-content-filter",
+                        dest="include_content_filter",
+                        help="Filters out files and folders from content folder which don't match with "\
+                             "the given regular expression. Matching is case-insensitive. "\
+                             "Example --include-content-filter=\".*(manual|configurator).*\" "\
+                             "Filters out all content files which don't have manual or configurator in their path.",
+                        default=None)
+
     
     parser.add_option_group(group)
     (options, args) = parser.parse_args()
@@ -201,6 +209,7 @@
                        added_layers  = options.added,
                        empty_folders = not options.exclude_empty_folders,
                        exclude_filters       = {"content": options.exclude_content_filter},
+                       include_filters       = {"content": options.include_content_filter},
                        options               = options)
     else:
         _export_to_storage(project                 = project,
@@ -209,10 +218,11 @@
                            added_layers            = options.added,
                            empty_folders           = not options.exclude_empty_folders,
                            exclude_filters         = {"content": options.exclude_content_filter},
+						   include_filters         = {"content": options.include_content_filter},
                            options                 = options)
     
 
-def _export_to_storage(project, remote_project_location, configs, added_layers, empty_folders, exclude_filters, options):
+def _export_to_storage(project, remote_project_location, configs, added_layers, empty_folders, exclude_filters, include_filters, options):
     assert len(configs) > 0
     
     # If the remote storage is not given, determine it automatically based
@@ -240,7 +250,8 @@
         project.export_configuration(config,
                                      remote_project.storage,
                                      empty_folders = empty_folders,
-                                     exclude_filters = exclude_filters)
+                                     exclude_filters = exclude_filters,
+									 include_filters = include_filters)
         print "Export %s to %s done!" % (config_path, remote_project_location)
     
     # Setting first as active configuration if there are more than one configuration defined.
@@ -254,9 +265,9 @@
     remote_project.save()
     remote_project.close()
     
-    _add_layers(project, remote_project_location, added_layers, empty_folders, exclude_filters, options)
+    _add_layers(project, remote_project_location, added_layers, empty_folders, exclude_filters, include_filters, options)
     
-def _add_layers(source_project, remote_project_location, added_configs, empty_folders, exclude_filters, options):
+def _add_layers(source_project, remote_project_location, added_configs, empty_folders, exclude_filters, include_filters, options):
     """
     Add new configuration layers from source_project into 
     """
@@ -278,7 +289,8 @@
                     source_project.export_configuration(existing_config,
                                                         target_project.storage,
                                                         empty_folders = empty_folders,
-                                                        exclude_filters = exclude_filters)
+                                                        exclude_filters = exclude_filters,
+                                                        include_filters = include_filters)
                 else:
                     # The given configuration does not exist in the source project,
                     # create a new empty layer
@@ -292,7 +304,7 @@
     target_project.save()
     target_project.close()
 
-def _export_to_dir(project, export_dir, export_format, configs, added_layers, empty_folders, exclude_filters, options):
+def _export_to_dir(project, export_dir, export_format, configs, added_layers, empty_folders, exclude_filters, include_filters, options):
     if not os.path.exists(export_dir):
         os.makedirs(export_dir)
     
@@ -304,7 +316,7 @@
             remote_name += '/'
         
         remote_name = os.path.join(export_dir, remote_name)
-        _export_to_storage(project, remote_name, [config], added_layers, empty_folders, exclude_filters, options)
+        _export_to_storage(project, remote_name, [config], added_layers, empty_folders, exclude_filters, include_filters, options)
 
 if __name__ == "__main__":
     main()