#!/bin/bash
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

#### CATEGORY=Build
### Generates a compile_commands.json file in FUCHSIA_DIR using the current build configuration

## Generates a compile_commands.json file in FUCHSIA_DIR using the current build configuration.
##
## Usage: fx compdb [flags]
##
##   --no-gen              Do not first run `fx gen`
##   --help|-h             Print this help

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh || exit $?
fx-config-read

main() {
    local use_gen=true

    while [[ $# -gt 0 ]]; do
        case "$1" in
        --help | -h)
            fx-command-help
            exit 0
            ;;
        --no-gen)
            use_gen=false
            ;;
        *)
            echo "Invalid argument '$1'"
            fx-command-help
            exit 1
            ;;
        esac
        shift
    done

    if [[ "${use_gen}" == true ]]; then
      fx-gen
    fi

    local concat_filename="${FUCHSIA_BUILD_DIR}/compile_commands.zircon-and-build.json"
    "${FUCHSIA_DIR}/scripts/editors/cat_compile_commands.py" \
        "${ZIRCON_BUILDROOT}/compile_commands.json" \
        "${FUCHSIA_BUILD_DIR}/compile_commands.json" \
        >"${concat_filename}"
    ln -sf "${concat_filename}" "${FUCHSIA_DIR}/compile_commands.json"
}

main "$@"
