onos_app.bucklet
2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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,
)