Refactoring features rule and generation
Change-Id: Id3eb8b595f858c7d362414c7b7ff5db0ae269c1d
diff --git a/buck-tools/onos_app.py b/buck-tools/onos_app.py
index 30f6edf..dc2e5fa 100755
--- a/buck-tools/onos_app.py
+++ b/buck-tools/onos_app.py
@@ -51,31 +51,47 @@
parts[4] = parts[4][len(NON_OSGI_TAG):]
return prefix + '/'.join(parts) + suffix
-def generateFeatureFile(feature_name,
- version,
- title,
- feature_repo_name,
+def generateFeatureFile(feature_repo_name,
features = [],
- bundles = [],
**kwargs):
values = {
+ 'feature_repo_name' : '-'.join(feature_repo_name.split(':')[1:3]),
+ }
+
+ output = FEATURES_HEADER % values
+
+ for feature in features:
+ output += feature
+
+ output += FEATURES_FOOTER
+ return output
+
+def generateFeature(feature_name,
+ version,
+ title,
+ features = [],
+ bundles = [],
+ **kwargs):
+ values = {
'feature_name' : feature_name,
'version' : version,
'title' : title,
- 'feature_repo_name' : '-'.join(feature_repo_name.split(':')[1:3]),
}
- output = FEATURES_HEADER % values + FEATURE_HEADER % values
+ output = FEATURE_HEADER % values
- for feature in features:
- output += EXISTING_FEATURE % feature
+ if features:
+ for feature in features:
+ output += EXISTING_FEATURE % feature
- for bundle in bundles:
- output += BUNDLE % mvnUrl(bundle)
+ if bundles:
+ for bundle in bundles:
+ output += BUNDLE % mvnUrl(bundle)
- output += FEATURE_FOOTER + FEATURES_FOOTER
+ output += FEATURE_FOOTER
return output
+
def generateAppFile(app_name,
origin,
version,
@@ -139,12 +155,14 @@
parser.add_option("-A", "--write-app", dest="write_app", action="store_true")
parser.add_option("-F", "--write-features", dest="write_features", action="store_true")
+ parser.add_option("-E", "--write-feature", dest="write_feature", action="store_true")
(options, args) = parser.parse_args()
values = {}
if options.feature_coords and options.version and options.title:
- values['feature_name'] = options.feature_coords.split(':')[1]
+ parts = options.feature_coords.split(':')
+ values['feature_name'] = parts[1] if len(parts) > 1 else parts[0]
values['version'] = options.version
values['title'] = options.title
else:
@@ -165,15 +183,22 @@
values['feature_repo_name'] = options.repo_name if options.repo_name \
else options.feature_coords
+ bundles = []
+ if options.included_bundles:
+ bundles += options.included_bundles
+ if options.excluded_bundles:
+ bundles += options.excluded_bundles
+ feature = generateFeature(bundles=bundles,
+ features=options.features,
+ **values)
+
+ if options.write_feature:
+ print feature
+
if options.write_features:
- bundles = []
- if options.included_bundles:
- bundles += options.included_bundles
- if options.excluded_bundles:
- bundles += options.excluded_bundles
- print generateFeatureFile(bundles=bundles,
- features=options.features,
+ print generateFeatureFile(features=[ feature ],
**values)
+
if options.write_app:
print generateAppFile(artifacts=options.included_bundles,
apps=options.apps,