|  | # Copyright (C) 2013 The Android Open Source Project | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | # http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an "AS IS" BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  |  | 
|  | def genasciidoc_htmlonly( | 
|  | name, | 
|  | out, | 
|  | srcs = [], | 
|  | attributes = [], | 
|  | backend = None, | 
|  | searchbox = True, | 
|  | visibility = []): | 
|  | EXPN = '.' + name + '_expn' | 
|  |  | 
|  | asciidoc = [ | 
|  | '$(exe //lib/asciidoctor:asciidoc)', | 
|  | '-z', '$OUT', | 
|  | '--base-dir', '$SRCDIR', | 
|  | '--tmp', '$TMP', | 
|  | '--in-ext', '".txt%s"' % EXPN, | 
|  | '--out-ext', '".html"', | 
|  | ] | 
|  | if backend: | 
|  | asciidoc.extend(['-b', backend]) | 
|  | for attribute in attributes: | 
|  | asciidoc.extend(['-a', attribute]) | 
|  | asciidoc.append('$SRCS') | 
|  | newsrcs = [":doc.css"] | 
|  | for src in srcs: | 
|  | fn = src | 
|  | # We have two cases: regular source files and generated files. | 
|  | # Generated files are passed as targets ':foo', and ':' is removed. | 
|  | # 1. regular files: cmd = '-s foo', srcs = ['foo'] | 
|  | # 2. generated files: cmd = '-s $(location :foo)', srcs = [] | 
|  | srcs = [src] | 
|  | passed_src = fn | 
|  | if fn.startswith(':') : | 
|  | fn = src[1:] | 
|  | srcs = [] | 
|  | passed_src = '$(location :%s)' % fn | 
|  | ex = fn + EXPN | 
|  |  | 
|  | genrule( | 
|  | name = ex, | 
|  | cmd = '$(exe :replace_macros) --suffix="%s"' % EXPN + | 
|  | ' -s ' + passed_src + ' -o $OUT' + | 
|  | (' --searchbox' if searchbox else ' --no-searchbox'), | 
|  | srcs = srcs, | 
|  | out = ex, | 
|  | ) | 
|  |  | 
|  | # The new AsciiDoctor requires both the css file and include files are under | 
|  | # the same directory. Luckily Buck allows us to use :target as SRCS now. | 
|  | newsrcs.append(':%s' % ex) | 
|  |  | 
|  | genrule( | 
|  | name = name, | 
|  | cmd = ' '.join(asciidoc), | 
|  | srcs = newsrcs, | 
|  | out = out, | 
|  | visibility = visibility, | 
|  | ) | 
|  |  | 
|  | def genasciidoc( | 
|  | name, | 
|  | out, | 
|  | docdir, | 
|  | srcs = [], | 
|  | attributes = [], | 
|  | backend = None, | 
|  | searchbox = True, | 
|  | visibility = []): | 
|  | SUFFIX = '_htmlonly' | 
|  |  | 
|  | genasciidoc_htmlonly( | 
|  | name = name + SUFFIX, | 
|  | srcs = srcs, | 
|  | attributes = attributes, | 
|  | backend = backend, | 
|  | searchbox = searchbox, | 
|  | out = name + SUFFIX + '.zip', | 
|  | ) | 
|  |  | 
|  | genrule( | 
|  | name = name, | 
|  | cmd = 'cd $TMP;' + | 
|  | 'mkdir -p %s/images;' % docdir + | 
|  | 'unzip -q $(location %s) -d %s/;' | 
|  | % (':' + name + SUFFIX, docdir) + | 
|  | 'for s in $SRCS;do ln -s $s %s;done;' % docdir + | 
|  | 'mv %s/*.{jpg,png} %s/images;' % (docdir, docdir) + | 
|  | 'cp $(location %s) LICENSES.txt;' % ':licenses.txt' + | 
|  | 'zip -qr $OUT *', | 
|  | srcs = glob([ | 
|  | 'images/*.jpg', | 
|  | 'images/*.png', | 
|  | ]) + [':doc.css'], | 
|  | out = out, | 
|  | visibility = visibility, | 
|  | ) |