#!/usr/bin/env bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

eval NAME_PKG=''
eval SAVE_OPT=false
eval SAVE_DEV_OPT=false
eval SAVE_EXACT=false

show_help() {
    echo "Usage: npm-add-pkg.sh"
    echo ""
    echo "--package or -p name of the package"
    echo "--save"
    echo "--save-dev"
    echo "--save-exact"
}

eval projects=( "ng2-activiti-diagrams"
      "ng2-activiti-analytics"
      "ng2-activiti-form"
      "ng2-activiti-processlist"
      "ng2-activiti-tasklist"
      "ng2-alfresco-core"
      "ng2-alfresco-datatable"
      "ng2-alfresco-documentlist"
      "ng2-alfresco-login"
      "ng2-alfresco-search"
      "ng2-alfresco-social"
      "ng2-alfresco-tag"
      "ng2-alfresco-upload"
      "ng2-alfresco-viewer"
      "ng2-alfresco-webscript"
      "ng2-alfresco-userinfo" )

save(){
    SAVE_OPT=true
}

save_dev(){
    SAVE_DEV_OPT=true
}

save_exact(){
    SAVE_EXACT=true
}

name_package(){
    NAME_PKG=$1
}

while [[ $1  == -* ]]; do
    case "$1" in
      -h|--help|-\?) show_help; exit 0;;
      --save)  save; shift;;
      --save-dev)  save_dev; shift;;
      --save-exact)  save_exact; shift;;
      --package|-p)  name_package $2; shift 2;;
      -*) echo "invalid option: $1" 1>&2; show_help; exit 0;;
    esac
done

for PACKAGE in ${projects[@]}
do
    echo "====== install package ${NAME_PKG} in component ${PACKAGE} ====="
    cd "$DIR/../ng2-components/${PACKAGE}"

    if $SAVE_OPT == true; then
      npm install --save ${NAME_PKG}
    fi

    if $SAVE_DEV_OPT == true; then
     echo "======  npm install --save-dev ${NAME_PKG} ====="
      npm install --save-dev ${NAME_PKG}
    fi

    if $SAVE_EXACT == true; then
     echo "======  npm install ----save-exact${NAME_PKG} ====="
      npm install --save-exact ${NAME_PKG}
    fi
done

cd "$DIR/../demo-shell-ng2"
if $SAVE_OPT == true; then
  npm install --save ${NAME_PKG}
fi

if $SAVE_DEV_OPT == true; then
  npm install --save-dev ${NAME_PKG}
fi

if $SAVE_EXACT == true; then
  npm install --save-exact ${NAME_PKG}
fi


cd "$DIR/../ng2-components"

if $SAVE_OPT == true; then
  npm install --save ${NAME_PKG}
fi

if $SAVE_DEV_OPT == true; then
  npm install --save-dev ${NAME_PKG}
fi

if $SAVE_EXACT == true; then
  npm install --save-exact ${NAME_PKG}
fi