#!/bin/bash -e


  ###################################
  # HELPER METHODS
  ###################################
  verLTE() {
    local currentVersion=$1
    local baseVersion="2.38.0"
    if [ "$currentVersion" = "$(echo -e "$currentVersion\n$baseVersion" | sort -V | head -n1)" ]; then
      isLower=1
    else
      isLower=0
    fi
  }

  verLT() {
    local currentVersion=$1
    local baseVersion="2.38.0"
    if [ "$currentVersion" = "$baseVersion" ]; then
      isLower=0
    else
      verLTE "$currentVersion" $baseVersion
    fi
  }

  usage() {
    echo "ERROR: Incorrect number of parameters"
    echo "Usage: $(dirname "$0") <dotFile>"
    exit 1
  }

  ###################################
  # MAIN CODE
  ###################################

  # Get input dot file
  if [ $# -ne 1 ]; then
    usage
  fi
  dotGraph=$1

  # Check dot version
  dotV=$(dot -V 3>&1 1>&2- 2>&3- | awk '{ print $5 }')
  isLower=1
  verLT "$dotV"

  # Format output fileName
  if [[ $dotGraph == *.dot ]]; then 
    pdfGraph=${dotGraph::${#dotGraph}-4}.pdf
  else
    pdfGraph=${dotGraph}.pdf
  fi
  echo "Output file: ${pdfGraph}"

  # Generate graph
  # If is greater than base version, generate full graph
  if [ $isLower -eq 1 ]; then
    # Generate graph without legend
    echo "WARN: Generating Graph without legend due to GraphViz version"

    tmpDotGraph=${dotGraph}.noLegend
    trunkLine=$(awk '/subgraph legend/{ print NR; exit}' "$dotGraph")
    trunkLine=$((trunkLine - 1))
    head -n $trunkLine "$dotGraph" > "$tmpDotGraph"
    echo "}" >> "$tmpDotGraph"
    dot -Tpdf "$tmpDotGraph" > "$pdfGraph"
  else
    # If is greater or equal than base version, generate full graph
    echo "INFO: Generating Graph with legend"

    dot -Tpdf -Gnewrank=true "$dotGraph" > "$pdfGraph"
  fi
  
  echo "DONE"

  # Uncomment the next line to automatically open the generated graph
  #evince $pdfGraph

