#!/usr/bin/env bash
#
# config: 2 30
# @brief: Get the dump and core file information
#

# shellcheck disable=SC1091
. "$DREPORT_INCLUDE"/functions

#core files
file_name="dumplist.log"
desc="Dumps"
command="busctl call --verbose --no-pager \
                xyz.openbmc_project.Dump.Manager \
                /xyz/openbmc_project/dump \
                org.freedesktop.DBus.ObjectManager \
                GetManagedObjects"
if ! add_cmd_output "$command" "$file_name" "$desc"; 
then
    #bmc dumps
    dir="/var/lib/phosphor-debug-collector/dumps/"
    desc="BMC dumps"
    if [ -d "$dir" ] && [ -n "$(ls -A $dir/)" ]; then
        add_cmd_output "echo $'[$desc]'" "$file_name" "$desc"
        add_cmd_output "ls -AX $dir/*/*" "$file_name" "$desc"
    else
        log_info "$desc directory is empty"
    fi

    #hardware dumps
    dir="/var/lib/phosphor-debug-collector/hardwaredump/"
    desc="Hardware dumps"
    if [ -d "$dir" ] && [ -n "$(ls -A $dir/)" ]; then
        add_cmd_output "echo $'\n[$desc]'" "$file_name" "$desc"
        add_cmd_output "ls -AX $dir/*/*" "$file_name" "$desc"
    else
        log_info "$desc directory is empty"
    fi


    #hostboot dumps
    dir="/var/lib/phosphor-debug-collector/hostbootdump/"
    desc="Hostboot dumps"
    if [ -d "$dir" ] && [ -n "$(ls -A $dir/)" ]; then
        add_cmd_output "echo $'\n[$desc]'" "$file_name" "$desc"
        add_cmd_output "ls -AX $dir/*/*" "$file_name" "$desc"
    else
        log_info "$desc directory is empty"
    fi


    #sbe dumps
    dir="/var/lib/phosphor-debug-collector/sbedump/"
    desc="SBE dumps"
    if [ -d "$dir" ] && [ -n "$(ls -A $dir/)" ]; then
        add_cmd_output "echo $'\n[$desc]'" "$file_name" "$desc"
        add_cmd_output "ls -AX $dir/*/*" "$file_name" "$desc"
    else
        log_info "$desc directory is empty"
    fi
fi

#capture core file list
dir="/var/lib/systemd/coredump/"
desc="core files"
if [ -d "$dir" ] && [ -n "$(ls -A $dir/)" ] && [ -n "$(ls -A $dir/core*)" ]; then
    add_cmd_output "echo $'[$desc]'" "$file_name" "$desc"
    add_cmd_output "ls -AX $dir/core*" "$file_name" "$desc"
else
    log_info "$desc directory is empty"
fi

