#!/bin/sh set -e #set -x prog_NAME=$(basename "${0}") warn() { echo "${prog_NAME}: WARN: $*" } info() { echo "${prog_NAME}: INFO: $*" } err() { echo "${prog_NAME}: ERROR: $*" 1>&2 } die() { echo "${prog_NAME}: ERROR: $*" 1>&2 exit 1 } usage() { cat <&2 usage: ${prog_NAME} [ OPTIONS ] Generates visualizations Options: --uuid=STRING UUID of build. --data-dir=STRING Path to the data directory. --cache-dir=STRING Path to the cache directory. EOM exit 1 } UUID= CACHE_DIR= DATA_DIR= while [ $# -gt 0 ]; do OPT="$1" case "${OPT}" in --uuid=*) UUID="${OPT##*=}" ;; --cache-dir=*) CACHE_DIR="${OPT##*=}" ;; --data-dir=*) DATA_DIR="${OPT##*=}" ;; *) warn "Ignoring unknown option: '${OPT}' (Note that this script reads DB)" ;; esac shift done [ -z "${UUID}" ] && die "The --uuid option must be specified" [ -z "${CACHE_DIR}" ] && die "The --cache-dir option must be specified" [ -z "${DATA_DIR}" ] && die "The --data-dir option must be specified" info "processing UUID '$UUID'" DB="${DATA_DIR}/builder.sqlite3" get_main_binary () { sqlite3 "${DB}" < "${TMPDEPENDENCIES}"; then mv "${TMPDEPENDENCIES}" "${DEPENDENCIES_VIZ_FILENAME}" else die "opam-graph failed to generate visualization" fi fi # /// Treemap viz stat_aux () { if [ "$(uname)" = "Linux" ]; then stat -c "%s" "$1" elif [ "$(uname)" = "FreeBSD" ]; then stat -f "%z" "$1" else die 'Unsupported platform' fi } SIZE="$(stat_aux "$BIN")" if [ ! -d "${TREEMAP_CACHE_DIR}" ]; then mkdir "${TREEMAP_CACHE_DIR}" fi get_debug_bin_hash () { sqlite3 "${DB}" < "${TMPTREE}" then mv "${TMPTREE}" "${TREEMAP_VIZ_FILENAME}" else die "modulectomy failed to generate visualization" fi fi else info "No --debug-binary provided, not producing any treemap" fi