1#!/bin/bash 2 3# Copyright JS Foundation and other contributors, http://js.foundation 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17if [ $# -ne 1 ]; then 18 echo "Please, specify your gh-pages clone directory: update-webpage <gh-pages clone dir>" 19 exit 1 20fi 21 22gh_pages_dir=$1 23docs_dir=`dirname $(readlink -f $0)`"/../docs" 24 25GETTING_STARTED_MD="00.GETTING-STARTED.md" 26CONFIGURATION_MD="01.CONFIGURATION.md" 27API_REFERENCE_MD="02.API-REFERENCE.md" 28API_EXAMPLES_MD="03.API-EXAMPLE.md" 29INTERNALS_MD="04.INTERNALS.md" 30PORT_API_MD="05.PORT-API.md" 31REFERENCE_COUNTING_MD="06.REFERENCE-COUNTING.md" 32DEBUGGER_MD="07.DEBUGGER.md" 33CODING_STANDARDS_MD="08.CODING-STANDARDS.md" 34EXT_REFERENCE_ARG_MD="09.EXT-REFERENCE-ARG.md" 35EXT_REFERENCE_HANDLER_MD="10.EXT-REFERENCE-HANDLER.md" 36EXT_REFERENCE_AUTORELEASE_MD="11.EXT-REFERENCE-AUTORELEASE.md" 37EXT_REFERENCE_MODULE_MD="12.EXT-REFERENCE-MODULE.md" 38DEBUGGER_TRANSPORT_MD="13.DEBUGGER-TRANSPORT.md" 39EXT_REFERENCE_HANDLE_SCOPE_MD="14.EXT-REFERENCE-HANDLE-SCOPE.md" 40MODULE_SYSTEM_MD="15.MODULE-SYSTEM.md" 41MIGRATION_GUIDE_MD="16.MIGRATION-GUIDE.md" 42 43declare -A titles 44 45titles[$GETTING_STARTED_MD]="Getting Started" 46titles[$CONFIGURATION_MD]="Configuration" 47titles[$API_REFERENCE_MD]="API Reference" 48titles[$API_EXAMPLES_MD]="API Examples" 49titles[$INTERNALS_MD]="Internals" 50titles[$PORT_API_MD]="Port API" 51titles[$REFERENCE_COUNTING_MD]="Reference Counting" 52titles[$DEBUGGER_MD]="Debugger" 53titles[$CODING_STANDARDS_MD]="Coding Standards" 54titles[$EXT_REFERENCE_ARG_MD]="'Extension API: Argument Validation'" 55titles[$EXT_REFERENCE_HANDLER_MD]="'Extension API: External Function Handlers'" 56titles[$EXT_REFERENCE_AUTORELEASE_MD]="'Extension API: Autorelease Values'" 57titles[$EXT_REFERENCE_MODULE_MD]="'Extension API: Module Support'" 58titles[$DEBUGGER_TRANSPORT_MD]="'Debugger Transport'" 59titles[$EXT_REFERENCE_HANDLE_SCOPE_MD]="'Extension API: Handle Scope'" 60titles[$MODULE_SYSTEM_MD]="'Module System (EcmaScript2015)'" 61titles[$MIGRATION_GUIDE_MD]="Migration Guide" 62 63for docfile in $docs_dir/*.md; do 64 docfile_base=`basename $docfile` 65 66 permalink=`echo $docfile_base | cut -d'.' -f 2 | tr '[:upper:]' '[:lower:]'` 67 missing_title=`echo $permalink | tr '-' ' '` 68 69 # the first three documents belong to the navigation bar 70 category=$([[ $docfile_base =~ ^0[0-3] ]] && echo "navbar" || echo "documents") 71 72 # generate appropriate header for each *.md 73 echo "---" > $gh_pages_dir/$docfile_base 74 echo "layout: page" >> $gh_pages_dir/$docfile_base 75 echo "title: ${titles[$docfile_base]:-$missing_title}" >> $gh_pages_dir/$docfile_base 76 echo "category: ${category}" >> $gh_pages_dir/$docfile_base 77 echo "permalink: /$permalink/" >> $gh_pages_dir/$docfile_base 78 echo "---" >> $gh_pages_dir/$docfile_base 79 echo >> $gh_pages_dir/$docfile_base 80 echo "* toc" >> $gh_pages_dir/$docfile_base 81 echo "{:toc}" >> $gh_pages_dir/$docfile_base 82 echo >> $gh_pages_dir/$docfile_base 83 84 # the file itself removing underscores inside links 85 gawk \ 86 ' 87 !/\[.*\]\(#/ { 88 print $0 89 } 90 91 /\[.*\]\(#/ { 92 link_start_pos = index($0, "](#"); 93 line_beg = substr($0, 1, link_start_pos+2); 94 line_remain = substr($0, link_start_pos+3); 95 link_end_pos = index(line_remain, ")") 96 link = substr(line_remain, 1, link_end_pos-1); 97 line_end = substr(line_remain, link_end_pos) 98 99 printf "%s%s%s\n", line_beg, link, line_end 100 } 101 ' $docfile >> $gh_pages_dir/$docfile_base 102 103 # fix image links 104 sed -i -r -e 's/^!\[.*\]\(/&{{ site.github.url }}\//' $gh_pages_dir/$docfile_base 105 sed -i -r -e 's/^!\[.*\]\(\{\{ site\.github\.url \}\}\/img.*$/&{: class="thumbnail center-block img-responsive" }/' $gh_pages_dir/$docfile_base 106 107 # turn filenames into permalinks 108 sed -i -r -e 's/docs\/[0-9]+\.(.*)\.md/\L\1/g' $gh_pages_dir/$docfile_base 109 110 # replace span tags to div 111 sed -i 's/<span class=/<div class=/g' $gh_pages_dir/$docfile_base 112 sed -i 's/<\/span>/<\/div>/g' $gh_pages_dir/$docfile_base 113 114 # remove table header separators 115 sed -i '/^| ---/d' $gh_pages_dir/$docfile_base 116 117 # update images 118 cp -Ru $docs_dir/img $gh_pages_dir 119done 120