#!/bin/bash -e


  ###################################
  # HELPER METHODS
  ###################################
  verLTE() {
    local currentVersion=$1
    local baseVersion="2.38.0"
    if [ "$currentVersion" = "$(echo -e "$currentVersion\\n$baseVersion" | sort -V | head -n 1)" ]; 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>"
    echo "Usage: $(dirname "$0") <formatExtension> <dotFile>"
    exit 1
  }

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

  case $# in
    1)
      ext="pdf"
      dotGraph=$1
      ;;
    2)
      ext=$1
      dotGraph=$2
      ;;
    *)
      usage
      ;;
  esac

  # 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
    outGraph=${dotGraph::${#dotGraph}-4}.${ext}
  else
    outGraph=${dotGraph}.${ext}
  fi
  echo "Output file: ${outGraph}"

  # 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 -T${ext} "$tmpDotGraph" > "$outGraph"
  else
    # If is greater or equal than base version, generate full graph
    echo "INFO: Generating Graph with legend"

    dot -T${ext} "$dotGraph" > "$outGraph"
  fi

  echo "DONE"

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