| 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/common/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', |
| 'eclipse', |
| 'elegant', |
| 'erlang-dark', |
| 'hopscotch', |
| 'icecoder', |
| 'isotope', |
| 'lesser-dark', |
| 'liquibyte', |
| 'material', |
| 'mbo', |
| 'mdn-like', |
| 'midnight', |
| 'monokai', |
| 'neat', |
| 'neo', |
| 'night', |
| 'paraiso-dark', |
| 'paraiso-light', |
| 'pastel-on-dark', |
| 'railscasts', |
| 'rubyblue', |
| 'seti', |
| 'solarized', |
| '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', |
| ] |
| |
| VERSION = '5.19.0' |
| TOP = 'META-INF/resources/webjars/codemirror/%s' % VERSION |
| TOP_MINIFIED = 'META-INF/resources/webjars/codemirror-minified/%s' % 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//jar', '', TOP, LICENSE), |
| ('@codemirror_minified//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 = [ |
| '@codemirror_original//jar', |
| '@codemirror_minified//jar', |
| ], |
| out = '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 = [ |
| '@codemirror_original//jar', |
| '@codemirror_minified//jar', |
| ], |
| out = '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 = [ |
| '@codemirror_original//jar', |
| '@codemirror_minified//jar', |
| ], |
| out = '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 = [ |
| '@codemirror_original//jar', |
| '@codemirror_minified//jar', |
| ], |
| out = 'theme_%s%s.css' % (n, suffix), |
| ) |
| |
| # Merge Addon bundled with diff-match-patch |
| genrule2( |
| name = 'addon_merge%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://google-diff-match-patch.googlecode.com/svn-history/r106/trunk/javascript/diff_match_patch.js\n' >> $@", |
| "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', |
| '@codemirror_original//jar', |
| '@codemirror_minified//jar', |
| ], |
| out = 'addon_merge%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%s) net/codemirror/addon/merge_bundled.js' % suffix] |
| + ['zip -qr $$ROOT/$@ net/codemirror/{addon,lib,mode,theme}']), |
| tools = [ |
| ':addon_merge%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 ], |
| ) |
| |
| native.java_import( |
| name = 'codemirror' + suffix, |
| jars = [':jar%s' % suffix], |
| visibility = ['//visibility:public'], |
| data = [license], |
| ) |