include_defs('//onos.defs')
include_defs('//bucklets/onos.bucklet')
include_defs('//bucklets/onos_app.bucklet')

def _get_name():
    base_path = get_base_path()
    return ONOS_ARTIFACT_BASE + base_path.replace('/', '-') #TODO Unix-separator

YANG_TOOLS = [
    '//lib:onos-yang-model',
    '//lib:onos-yang-compiler-api',
    '//lib:onos-yang-runtime',
    '//lib:org.apache.felix.scr.annotations',
    '//apps/yang:onos-apps-yang',
]

def yang_model(
    name = None,
    app_name = None,
    model_id = None,
    title = 'YANG Model',
    url = 'http://onosproject.org',
    description = None,
    deps = [],
    required_apps = [],
    custom_registrator = False,
    yang_src = None,
    custom_src = None,
    **kwargs
    ):

    if name is None:
        name = _get_name()

    if model_id is None:
        model_id = app_name

    if yang_src is None:
        yang_src = glob(['src/main/yang/**/*.yang'])

    if custom_src is None:
        custom_src = glob(['src/main/java/**/*.java'])

    yang = name + '-yang'
    yangSrcs = yang + '#srcs'
    schema = name + '-schema'
    registrator = name + '-registrator'

    yang_library(
      deps = deps,
      name = yang,
      srcs = yang_src,
      model_id = model_id
    )

    genrule(
      name = schema,
      srcs = [ ':' + yangSrcs ],
      cmd = '$(location //buck-tools:yang-schema) $OUT $SRCS',
      out = 'yang'
    )

    if custom_registrator:
        osgi_jar(
          name = name,
          srcs = [ ':' + yangSrcs ] + custom_src,
          deps = deps + YANG_TOOLS,
          resources = [ ':' + schema ],
          resources_root = ".",
          do_checkstyle = False,
          do_javadocs = False,
        )
    else:
        genrule(
          name = registrator,
          srcs = [ ':' + yangSrcs ],
          cmd = '$(location //buck-tools:yang-registrator) $OUT ' + app_name.replace('-', '_') + ' $SRCS',
          out = 'YangModelRegistrator.java'
        )
        osgi_jar(
          name = name,
          srcs = [ ':' + yangSrcs, ':' + registrator ],
          deps = deps + YANG_TOOLS,
          resources = [ ':' + schema ],
          resources_root = ".",
          do_checkstyle = False,
          do_javadocs = False,
        )

    onos_app (
      name = name,
      app_name = app_name,
      title = title,
      category = 'Models',
      url = url,
      description = description,
      required_apps = required_apps + [ 'org.onosproject.yang' ],
    )

def yang_osgi_jar(
    name = None,
    srcs = None,
    model_id = None,
    group_id = ONOS_GROUP_ID,
    version = ONOS_VERSION,
    deps = [],
    visibility = ['PUBLIC'],
    license = 'NONE',
    **kwargs
    ):

    if name is None:
        name = _get_name()

    if model_id is None:
        model_id = name
    yang_jar = name + '-yang'
    bnd_jar = name + '-bnd'

    args = { 'group':group_id, 'artifact':name, 'version':version }

    yang_library(
      deps = deps,
      name = yang_jar,
      srcs = srcs,
      model_id = model_id,
      visibility = [ ],
    )

    cmd = 'java -jar $(location //lib:bndexe) wrap -o $OUT '
    cmd += '-b %(group)s.%(artifact)s ' % args
    cmd += '-v ' + version.replace('-', '.') + ' '
    cmd += '$(location :%s) ' % yang_jar
    cmd += ' >/dev/null 2>&1'

    genrule(
         name = bnd_jar,
         bash = cmd,
         out = name + '.jar',
         visibility = [],
    )

    prebuilt_jar(
        name = name,
        binary_jar = ':' + bnd_jar,
        maven_coords = '%(group)s:%(artifact)s:%(version)s'%args,
        visibility = visibility,
    )
