def war(
    name,
    libs = [],
    pgmlibs = [],
    context = [],
    visibility = []
    ):
  cmd = ['${//lib:pack_war}', '-o', '$OUT']
  dep = []
  if libs:
    cmd += ['--lib'] + libs
    dep += libs
  if pgmlibs:
    cmd += ['--pgmlib'] + pgmlibs
    dep += pgmlibs

  src = []
  if context:
    root = get_base_path()
    if root:
      root = '/'.join(['..' for c in root.split('/')]) + '/'
    for r in context:
      dep.append(r[:r.rindex('.')])
      if r.startswith('//'):
        r = root + r[2:]
      r = r.replace(':', '/')
      src.append(genfile(r))
    cmd += ['--war', '$SRCS']

  genrule(
    name = name,
    cmd = ' '.join(cmd),
    srcs = src,
    deps = dep + ['//lib:pack_war'],
    out = name + '.war',
    visibility = visibility,
  )
