#!/bin/bash
#
# Extended squeue wrapper
#
# Wirawan Purwanto
# Created: 20180720

shopt -s extglob
set -e

optAllUsers=0
optHasUsers=0
optHasFormat=0
optSlurmFlags=()

FORMAT_DEFAULT="%.18i %.9P %.20j %.9u %.2t %.12M %.12l %.5D %R"

function ParseArgs()
{
  local i
  local nopass

  local args args_count arg
  args=( "zeroth-arg-not-used" "$@" )
  args_count=$#
  for ((i = 1; i <= args_count; ++i)); do
    arg="${!i}"
    case "$arg" in
    # This script's options
    (+a)
      optAllUsers=1
      ;;
    (+*)
      : # ignore 
      ;;
    (-*|*)
      optSlurmFlags[ ${#optSlurmFlags[@]} ]="$arg"
      case "$arg" in
      (-u*|--user?(=*))
        optHasUsers=1
        ;;
      (-l|-s|--long|--steps|-o|--format?(=*))
        optHasFormat=1
        ;;
      esac
      ;;
    esac
  done
}

function do_squeue()
{
  # My old default is to show jobs for me only:
  if ! (( optHasUsers || optAllUsers )); then
    optSlurmFlags=( "${optSlurmFlags[@]}" -u "$USER" )
  fi
  if ! (( optHasFormat )); then
    optSlurmFlags=( "${optSlurmFlags[@]}" -o "$FORMAT_DEFAULT" )
  fi
  squeue "${optSlurmFlags[@]}"
}


ParseArgs "$@"
do_squeue