#!/system/bin/sh

# TODO: restructure this to keep bugreports entirely on internal storage

# Do not allow bugreports on user builds unless USB debugging
# is enabled.
if [ "x$(getprop ro.build.type)" = "xuser" -a \
     "x$(getprop init.svc.adbd)" != "xrunning" ]; then
  exit 0
fi

# Build emulated storage paths when appropriate
# See storage config details at http://source.android.com/tech/storage/
if [ -n "$EMULATED_STORAGE_SOURCE" ]; then
  writePath="$EMULATED_STORAGE_SOURCE/0"
  readPath="$EMULATED_STORAGE_TARGET/0"
else
  writePath="$EXTERNAL_STORAGE"
  readPath="$EXTERNAL_STORAGE"
fi

tmpPath="/data/local/tmp"
bugreportPath="bugreports"
screenshotPath="Pictures/Screenshots"

# Create directories if needed
if [ ! -e "$writePath/$bugreportPath" ]; then
  mkdir "$writePath/$bugreportPath"
fi
if [ ! -e "$writePath/$screenshotPath" ]; then
  mkdir "$writePath/$screenshotPath"
fi

timestamp=`date +'%Y-%m-%d-%H-%M-%S'`

# take screen shot
# we run this as a bg job in case screencap is stuck
/system/bin/screencap -p "$writePath/$screenshotPath/Screenshot_$timestamp.png" &

# run bugreport
/system/bin/dumpstate -o "$tmpPath/bugreport-$timestamp" $@

# copy finished bugreport into place for sending
cp "$tmpPath/bugreport-$timestamp.txt" "$writePath/$bugreportPath/bugreport-$timestamp.txt"
# clean up any remaining files
rm $tmpPath/bugreport*

# invoke send_bug to look up email accounts and fire intents
# make it convenient to send bugreport to oneself
/system/bin/send_bug "$readPath/$bugreportPath/bugreport-$timestamp.txt" "$readPath/$screenshotPath/Screenshot_$timestamp.png"