ONOS_ORIGIN = 'ON.Lab' ONOS_GROUP_ID = 'org.onosproject' ONOS_VERSION = '1.6.0-SNAPSHOT' DEFAULT_APP_CATEGORY = 'Utility' ONOS_ARTIFACT_BASE = 'onos-' APP_PREFIX = ONOS_GROUP_ID + '.' import os.path # FIXME Factor this into common place def _get_name(): base_path = get_base_path() return ONOS_ARTIFACT_BASE + base_path.replace('/', '-') #TODO Unix-separator def _get_app_name(): base_path = get_base_path() return APP_PREFIX + os.path.basename(base_path) def onos_app( app_name = None, name = None, title = None, version = ONOS_VERSION, origin = ONOS_ORIGIN, category = DEFAULT_APP_CATEGORY, url = None, description = None, #TODO make this a file #TODO icon, feature_coords = None, required_features = [ 'onos-api' ], required_apps = [], included_bundles = None, excluded_bundles = [], visibility = [ 'PUBLIC' ], **kwargs): if name is None: name = _get_name() if app_name is None: app_name = _get_app_name() if title is None: print "Missing title for %s" % _get_name() title = _get_app_name() if included_bundles is None: target = ':' + _get_name() included_bundles = [ target ] if not feature_coords and len(included_bundles) == 1: feature_coords = '$(maven_coords %s)' % included_bundles[0] if not feature_coords: feature_coords = '%s:%s:%s' % ( ONOS_GROUP_ID, _get_name(), ONOS_VERSION ) args = [ '-n %s' % feature_coords, '-v %s' % version, '-t "%s"' % title, '-o "%s"' % origin, '-c "%s"' % category, '-a "%s"' % app_name, '-u %s' % url, ] args += [ '-f %s' % f for f in required_features ] args += [ '-b $(maven_coords %s)' % b for b in included_bundles ] args += [ '-e $(maven_coords %s)' % b for b in excluded_bundles ] args += [ '-d %s' % a for a in required_apps ] cmd = '$(exe //buck-tools:onos-app-writer) -F ' + ' '.join(args) + ' > $OUT' genrule( name = name + '-features', bash = cmd, out = 'features.xml', visibility = [], ) cmd = '$(exe //buck-tools:onos-app-writer) -A ' + ' '.join(args) + ' > $OUT' genrule( name = name + '-app-xml', bash = cmd, out = 'app.xml', visibility = [], ) sources = [ '$(location :%s-features) %s' % (name, feature_coords), '$(location :%s-app-xml) NONE' % name, ] sources += ['$(location %s) $(maven_coords %s)' % (i, i) for i in included_bundles] genrule( name = name + '-oar', out = 'app.oar', bash = '$(exe //buck-tools:onos-app-oar) $OUT ' + ' '.join(sources), visibility = visibility, )