include_defs('//lib/maven.defs')
include_defs('//lib/codemirror/cm.defs')

VERSION = '5.22.0'
TOP = 'META-INF/resources/webjars/codemirror/%s' % VERSION
TOP_MINIFIED = 'META-INF/resources/webjars/codemirror-minified/%s' % VERSION

maven_jar(
  name = 'codemirror-minified',
  id = 'org.webjars.npm:codemirror-minified:' + VERSION,
  sha1 = '3e8767c9293614968176fcf66cb873d6eb8b3051',
  attach_source = False,
  license = 'codemirror-minified',
  visibility = [],
)

maven_jar(
  name = 'codemirror-original',
  id = 'org.webjars.npm:codemirror:' + VERSION,
  sha1 = '879c49085a44f062554a4e4a9ac248b7083d37cf',
  attach_source = False,
  license = 'codemirror-original',
  visibility = [],
)

DIFF_MATCH_PATCH_TOP = ('META-INF/resources/webjars/google-diff-match-patch/%s'
    % DIFF_MATCH_PATCH_VERSION)

maven_jar(
  name = 'diff-match-patch',
  id = 'org.webjars:google-diff-match-patch:' + DIFF_MATCH_PATCH_VERSION,
  sha1 = '0cf1782dbcb8359d95070da9176059a5a9d37709',
  license = 'Apache2.0',
  attach_source = False,
)

for archive, suffix, top in [('codemirror-original', '', TOP), ('codemirror-minified', '_r', TOP_MINIFIED)]:
  # Main JavaScript and addons
  genrule(
    name = 'cm' + suffix,
    cmd = ';'.join([
        "echo '/** @license' >$OUT",
        'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
        "echo '*/' >>$OUT",
      ] +
      ['unzip -p $(location :%s) %s/%s >>$OUT' % (archive, top, n) for n in CM_JS] +
      ['unzip -p $(location :%s) %s/addon/%s >>$OUT' % (archive, top, n)
       for n in CM_ADDONS]
    ),
    out = 'cm%s.js' % suffix,
  )

  # Main CSS
  genrule(
    name = 'css' + suffix,
    cmd = ';'.join([
        "echo '/** @license' >$OUT",
        'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
        "echo '*/' >>$OUT",
      ] +
      ['unzip -p $(location :%s) %s/%s >>$OUT' % (archive, top, n)
       for n in CM_CSS]
    ),
    out = 'cm%s.css' % suffix,
  )

  # Modes
  for n in CM_MODES:
    genrule (
      name = 'mode_%s%s' % (n, suffix),
      cmd = ';'.join([
          "echo '/** @license' >$OUT",
          'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
          "echo '*/' >>$OUT",
          'unzip -p $(location :%s) %s/mode/%s/%s.js >>$OUT' % (archive, top, n, n),
        ]
      ),
      out = 'mode_%s%s.js' % (n, suffix),
    )

  # Themes
  for n in CM_THEMES:
    genrule(
      name = 'theme_%s%s' % (n, suffix),
      cmd = ';'.join([
          "echo '/** @license' >$OUT",
          'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
          "echo '*/' >>$OUT",
          'unzip -p $(location :%s) %s/theme/%s.css >>$OUT' % (archive, top, n)
        ]
      ),
      out = 'theme_%s%s.css' % (n, suffix),
    )

  # Merge Addon bundled with diff-match-patch
  genrule(
    name = 'addon_merge_with_diff_match_patch%s' % suffix,
    cmd = ';'.join([
        "echo '/** @license' >$OUT",
        'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
        "echo '*/\n' >>$OUT",
        "echo '// The google-diff-match-patch library is from https://repo1.maven.org/maven2/org/webjars/google-diff-match-patch/%s/google-diff-match-patch-%s.jar\n' >> $OUT" % (DIFF_MATCH_PATCH_VERSION, DIFF_MATCH_PATCH_VERSION),
        "echo '/** @license' >>$OUT",
        'cat $(location //lib:LICENSE-Apache2.0) >>$OUT',
        "echo '*/' >>$OUT",
        'unzip -p $(location :diff-match-patch) %s/diff_match_patch.js >>$OUT' % DIFF_MATCH_PATCH_TOP,
        "echo ';' >> $OUT",
        'unzip -p $(location :%s) %s/addon/merge/merge.js >>$OUT' % (archive, top)
      ]
    ),
    out = 'addon_merge_with_diff_match_patch%s.js' % suffix,
  )

  # Jar packaging
  genrule(
    name = 'jar' + suffix,
    cmd = ';'.join([
      'cd $TMP',
      'mkdir -p net/codemirror/{addon,lib,mode,theme}',
      'cp $(location :css%s) net/codemirror/lib/cm.css' % suffix,
      'cp $(location :cm%s) net/codemirror/lib/cm.js' % suffix]
      + ['cp $(location :mode_%s%s) net/codemirror/mode/%s.js' % (n, suffix, n)
         for n in CM_MODES]
      + ['cp $(location :theme_%s%s) net/codemirror/theme/%s.css' % (n, suffix, n)
         for n in CM_THEMES]
      + ['cp $(location :addon_merge_with_diff_match_patch%s) net/codemirror/addon/merge_bundled.js' % suffix]
      + ['zip -qr $OUT net/codemirror/{addon,lib,mode,theme}']),
    out = 'codemirror%s.jar' % suffix,
  )

  prebuilt_jar(
    name = 'codemirror' + suffix,
    binary_jar = ':jar%s' % suffix,
    deps = [
      ':jar' + suffix,
      '//lib:LICENSE-' + archive,
    ],
    visibility = ['PUBLIC'],
  )

