#!/bin/bash -e # Takes kythe indexer output and processes it into servable format # And brings up a webserver (port 8080) to inspect the data. # # This is not used for normal production runs as processing on a single # machine is very slow (our index output is currently around 20GB). # # Instead the processing is done with a MapReduce job. # Path to the kyth binaries. KYTHE_ROOT="$(readlink -f prebuilts/tools/linux-x86_64/kythe)" # Get the output path for the kythe artifacts. OUT="$1" OUT_ENTRIES="${OUT}/entries" OUT_GRAPHSTORE="${OUT}/graphstore" OUT_SERVING="${OUT}/serving" if [ -z "${OUT}" ]; then echo Usage: $0 \<out_dir\> echo e.g. $0 $HOME/studio_kythe echo echo $0 must be launched from the root of the studio branch. exit 1 fi # if the graphstore has not been created, create it from the # entries created using "build_studio_kythe.sh" if [ ! -d "${OUT_GRAPHSTORE}" ]; then # delete all empty files as the write_entries tool is not happy with # empty files find "${OUT_ENTRIES}" -empty -type f -delete ENTRIES=$(find "${OUT_ENTRIES}" -name *.entries \ -exec realpath {} \;) for ENTRY in ${ENTRIES}; do "${KYTHE_ROOT}/tools/write_entries" \ --graphstore "leveldb:${OUT_GRAPHSTORE}" < "${ENTRY}" done; fi # If no serving table exists yet, create it from the graphstore. if [ ! -d "${OUT_SERVING}" ]; then "${KYTHE_ROOT}/tools/write_tables" \ --graphstore "${OUT_GRAPHSTORE}" \ --out "${OUT_SERVING}" fi # Start the kythe webserver for the serving table. "${KYTHE_ROOT}/tools/http_server" \ --public_resources "${KYTHE_ROOT}/web/ui" \ --listen localhost:8080 \ --serving_table "${OUT_SERVING}"