| load("@rules_java//java:defs.bzl", "java_import") |
| load("//tools/bzl:genrule2.bzl", "genrule2") |
| |
| CM_CSS = [ |
| "lib/codemirror.css", |
| "addon/dialog/dialog.css", |
| "addon/merge/merge.css", |
| "addon/scroll/simplescrollbars.css", |
| "addon/search/matchesonscrollbar.css", |
| "addon/lint/lint.css", |
| ] |
| |
| CM_JS = [ |
| "lib/codemirror.js", |
| "mode/meta.js", |
| "keymap/emacs.js", |
| "keymap/sublime.js", |
| "keymap/vim.js", |
| ] |
| |
| CM_ADDONS = [ |
| "dialog/dialog.js", |
| "edit/closebrackets.js", |
| "edit/matchbrackets.js", |
| "edit/trailingspace.js", |
| "scroll/annotatescrollbar.js", |
| "scroll/simplescrollbars.js", |
| "search/jump-to-line.js", |
| "search/matchesonscrollbar.js", |
| "search/searchcursor.js", |
| "search/search.js", |
| "selection/mark-selection.js", |
| "mode/multiplex.js", |
| "mode/overlay.js", |
| "mode/simple.js", |
| "lint/lint.js", |
| ] |
| |
| # Available themes must be enumerated here, |
| # in gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/Theme.java, |
| # in gerrit-gwtui/src/main/java/net/codemirror/theme/Themes.java |
| CM_THEMES = [ |
| "3024-day", |
| "3024-night", |
| "abcdef", |
| "ambiance", |
| "base16-dark", |
| "base16-light", |
| "bespin", |
| "blackboard", |
| "cobalt", |
| "colorforth", |
| "dracula", |
| "duotone-dark", |
| "duotone-light", |
| "eclipse", |
| "elegant", |
| "erlang-dark", |
| "gruvbox-dark", |
| "hopscotch", |
| "icecoder", |
| "idea", |
| "isotope", |
| "lesser-dark", |
| "liquibyte", |
| "lucario", |
| "material", |
| "mbo", |
| "mdn-like", |
| "midnight", |
| "monokai", |
| "neat", |
| "neo", |
| "night", |
| "paraiso-dark", |
| "paraiso-light", |
| "pastel-on-dark", |
| "railscasts", |
| "rubyblue", |
| "seti", |
| "solarized", |
| "ssms", |
| "the-matrix", |
| "tomorrow-night-bright", |
| "tomorrow-night-eighties", |
| "ttcn", |
| "twilight", |
| "vibrant-ink", |
| "xq-dark", |
| "xq-light", |
| "yeti", |
| "zenburn", |
| ] |
| |
| # Available modes must be enumerated here, |
| # in gerrit-gwtui/src/main/java/net/codemirror/mode/Modes.java, |
| # gerrit-gwtui/src/main/java/net/codemirror/mode/ModeInfo.java, |
| # and in CodeMirror's own mode/meta.js script. |
| CM_MODES = [ |
| "apl", |
| "asciiarmor", |
| "asn.1", |
| "asterisk", |
| "brainfuck", |
| "clike", |
| "clojure", |
| "cmake", |
| "cobol", |
| "coffeescript", |
| "commonlisp", |
| "crystal", |
| "css", |
| "cypher", |
| "d", |
| "dart", |
| "diff", |
| "django", |
| "dockerfile", |
| "dtd", |
| "dylan", |
| "ebnf", |
| "ecl", |
| "eiffel", |
| "elm", |
| "erlang", |
| "factor", |
| "fcl", |
| "forth", |
| "fortran", |
| "gas", |
| "gfm", |
| "gherkin", |
| "go", |
| "groovy", |
| "haml", |
| "handlebars", |
| "haskell-literate", |
| "haskell", |
| "haxe", |
| "htmlembedded", |
| "htmlmixed", |
| "http", |
| "idl", |
| "javascript", |
| "jinja2", |
| "jsx", |
| "julia", |
| "livescript", |
| "lua", |
| "markdown", |
| "mathematica", |
| "mbox", |
| "mirc", |
| "mllike", |
| "modelica", |
| "mscgen", |
| "mumps", |
| "nginx", |
| "nsis", |
| "ntriples", |
| "octave", |
| "oz", |
| "pascal", |
| "pegjs", |
| "perl", |
| "php", |
| "pig", |
| "powershell", |
| "properties", |
| "protobuf", |
| "pug", |
| "puppet", |
| "python", |
| "q", |
| "r", |
| "rpm", |
| "rst", |
| "ruby", |
| "rust", |
| "sas", |
| "sass", |
| "scheme", |
| "shell", |
| "sieve", |
| "slim", |
| "smalltalk", |
| "smarty", |
| "solr", |
| "soy", |
| "sparql", |
| "spreadsheet", |
| "sql", |
| "stex", |
| "stylus", |
| "swift", |
| "tcl", |
| "textile", |
| "tiddlywiki", |
| "tiki", |
| "toml", |
| "tornado", |
| "troff", |
| "ttcn-cfg", |
| "ttcn", |
| "turtle", |
| "twig", |
| "vb", |
| "vbscript", |
| "velocity", |
| "verilog", |
| "vhdl", |
| "vue", |
| "webidl", |
| "xml", |
| "xquery", |
| "yacas", |
| "yaml-frontmatter", |
| "yaml", |
| "z80", |
| ] |
| |
| CM_VERSION = "5.37.0" |
| |
| TOP = "META-INF/resources/webjars/codemirror/%s" % CM_VERSION |
| |
| TOP_MINIFIED = "META-INF/resources/webjars/codemirror-minified/%s" % CM_VERSION |
| |
| LICENSE = "//lib:LICENSE-codemirror-original" |
| |
| LICENSE_MINIFIED = "//lib:LICENSE-codemirror-minified" |
| |
| DIFF_MATCH_PATCH_VERSION = "20121119-1" |
| |
| DIFF_MATCH_PATCH_TOP = ("META-INF/resources/webjars/google-diff-match-patch/%s" % |
| DIFF_MATCH_PATCH_VERSION) |
| |
| def pkg_cm(): |
| for archive, suffix, top, license in [ |
| ("@codemirror-original-gwt//jar", "", TOP, LICENSE), |
| ("@codemirror-minified-gwt//jar", "_r", TOP_MINIFIED, LICENSE_MINIFIED), |
| ]: |
| # Main JavaScript and addons |
| genrule2( |
| name = "cm" + suffix, |
| cmd = " && ".join( |
| [ |
| "echo '/** @license' >$@", |
| "unzip -p $(location %s) %s/LICENSE >>$@" % (archive, top), |
| "echo '*/' >>$@", |
| ] + |
| ["unzip -p $(location %s) %s/%s >>$@" % (archive, top, n) for n in CM_JS] + |
| [ |
| "unzip -p $(location %s) %s/addon/%s >>$@" % (archive, top, n) |
| for n in CM_ADDONS |
| ], |
| ), |
| tools = [archive], |
| outs = ["cm%s.js" % suffix], |
| ) |
| |
| # Main CSS |
| genrule2( |
| name = "css" + suffix, |
| cmd = " && ".join( |
| [ |
| "echo '/** @license' >$@", |
| "unzip -p $(location %s) %s/LICENSE >>$@" % (archive, top), |
| "echo '*/' >>$@", |
| ] + |
| [ |
| "unzip -p $(location %s) %s/%s >>$@" % (archive, top, n) |
| for n in CM_CSS |
| ], |
| ), |
| tools = [archive], |
| outs = ["cm%s.css" % suffix], |
| ) |
| |
| # Modes |
| for n in CM_MODES: |
| genrule2( |
| name = "mode_%s%s" % (n, suffix), |
| cmd = " && ".join( |
| [ |
| "echo '/** @license' >$@", |
| "unzip -p $(location %s) %s/LICENSE >>$@" % (archive, top), |
| "echo '*/' >>$@", |
| "unzip -p $(location %s) %s/mode/%s/%s.js >>$@" % (archive, top, n, n), |
| ], |
| ), |
| tools = [archive], |
| outs = ["mode_%s%s.js" % (n, suffix)], |
| ) |
| |
| # Themes |
| for n in CM_THEMES: |
| genrule2( |
| name = "theme_%s%s" % (n, suffix), |
| cmd = " && ".join( |
| [ |
| "echo '/** @license' >$@", |
| "unzip -p $(location %s) %s/LICENSE >>$@" % (archive, top), |
| "echo '*/' >>$@", |
| "unzip -p $(location %s) %s/theme/%s.css >>$@" % (archive, top, n), |
| ], |
| ), |
| tools = [archive], |
| outs = ["theme_%s%s.css" % (n, suffix)], |
| ) |
| |
| # Merge Addon bundled with diff-match-patch |
| genrule2( |
| name = "addon_merge_with_diff_match_patch%s" % suffix, |
| cmd = " && ".join( |
| [ |
| "echo '/** @license' >$@", |
| "unzip -p $(location %s) %s/LICENSE >>$@" % (archive, top), |
| "echo '*/\n' >>$@", |
| "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' >> $@" % (DIFF_MATCH_PATCH_VERSION, DIFF_MATCH_PATCH_VERSION), |
| "echo '/** @license' >>$@", |
| "echo 'LICENSE-Apache2.0' >>$@", |
| "echo '*/' >>$@", |
| "unzip -p $(location @diff-match-patch//jar) %s/diff_match_patch.js >>$@" % DIFF_MATCH_PATCH_TOP, |
| "echo ';' >> $@", |
| "unzip -p $(location %s) %s/addon/merge/merge.js >>$@" % (archive, top), |
| ], |
| ), |
| tools = [ |
| "@diff-match-patch//jar", |
| # dependency just for license tracking. |
| ":diff-match-patch", |
| archive, |
| "//lib:LICENSE-Apache2.0", |
| ], |
| outs = ["addon_merge_with_diff_match_patch%s.js" % suffix], |
| ) |
| |
| # Jar packaging |
| genrule2( |
| name = "jar" + suffix, |
| cmd = " && ".join([ |
| "cd $$TMP", |
| "mkdir -p net/codemirror/{addon,lib,mode,theme}", |
| "cp $$ROOT/$(location :css%s) net/codemirror/lib/cm.css" % suffix, |
| "cp $$ROOT/$(location :cm%s) net/codemirror/lib/cm.js" % suffix, |
| ] + |
| [ |
| "cp $$ROOT/$(location :mode_%s%s) net/codemirror/mode/%s.js" % (n, suffix, n) |
| for n in CM_MODES |
| ] + |
| [ |
| "cp $$ROOT/$(location :theme_%s%s) net/codemirror/theme/%s.css" % (n, suffix, n) |
| for n in CM_THEMES |
| ] + |
| ["cp $$ROOT/$(location :addon_merge_with_diff_match_patch%s) net/codemirror/addon/merge_bundled.js" % suffix] + |
| ["zip -qr $$ROOT/$@ net/codemirror/{addon,lib,mode,theme}"]), |
| tools = [ |
| ":addon_merge_with_diff_match_patch%s" % suffix, |
| ":cm%s" % suffix, |
| ":css%s" % suffix, |
| ] + [ |
| ":mode_%s%s" % (n, suffix) |
| for n in CM_MODES |
| ] + [ |
| ":theme_%s%s" % (n, suffix) |
| for n in CM_THEMES |
| ], |
| outs = ["codemirror%s.jar" % suffix], |
| ) |
| |
| java_import( |
| name = "codemirror" + suffix, |
| jars = [":jar%s" % suffix], |
| visibility = ["//visibility:public"], |
| data = [license], |
| ) |