#!/bin/bash

#Init Variables
input_file=""

#Parse the arguments
while [[ "$#" -gt 0 ]]; do
    case $1 in
        --input) input_file="$2"; shift ;;
        *) echo "Unknown parameter: $1"; exit 1;;
    esac
    shift
done

if [[ -z "$input_file" ]]; then
    echo "Usage: $0 --input <input_file>"
    exit 1
fi

echo "Input file is: $input_file"

#if [[ ! -f "$input_file" ]]; then
#    echo "Error: $input_dir is not a valid file."
#    exit 1
#fi

extension="${input_file##*.}"

#if [[ "$extension" == "trace" ]]; then 
#    echo "This is not a trace file"
#fi

base_name="${input_file%.*}"
tmp_file="${base_name}.tmp"
output_file="${base_name}.xml"
echo "Output file is: $output_file"

xctrace export --input $input_file --xpath '/trace-toc/run[@number="1"]/data/table[@schema="time-profile"]' > $output_file

xctrace export --input $input_file --toc | xmllint --xpath '//info' - > $output_file

schemas=(
    "counters-profile"
    "thread-state"
    "device-thermal-state-intervals"
    "syscall"
    "virtual-memory"
    "potential-hangs"
    "cpu-profile"
    "metal-gpu-intervals"
    "display-vsyncs-interval"
)

# Loop through each schema and export data
for schema in "${schemas[@]}"; do
    xctrace export --input "$input_file" --xpath "/trace-toc/run[@number='1']/data/table[@schema='$schema']" > "$tmp_file"
    sed '1d' "$tmp_file" >> "$output_file"
done

# Optionally, clean up the temporary file
rm "$tmp_file"


