#!/usr/bin/env bash
set -exuo pipefail

if ! which mockgen > /dev/null; then
  if [ -z ${GOPATH+somewords} ]; then
    export GOPATH="$HOME"/go;
  fi

  echo "Try to install mockgen"
  GO111MODULE=on go install github.com/golang/mock/mockgen@v1.6.0
  export PATH=$PATH:$GOPATH/bin
fi


for f in ./pkg/domain/repo/*.go; do
  filename=$(basename -s .go "$f")
  [[ ! $f == *"_test.go" ]] && mockgen -source="$f" -destination "./pkg/domain/repo/mock_repo/mock_$filename.go" -package mock_repo
done


for f in ./pkg/domain/facade/*.go; do
  filename=$(basename -s .go "$f")
  [[ ! $f == *"_test.go" ]] && mockgen -source="$f" -destination "./pkg/domain/facade/mock_facade/mock_$filename.go" -package mock_facade
done


for f in ./pkg/domain/service/*/*.go; do
  filename=$(basename -s .go "$f")
  submodule_name=$(dirname "$f" | awk -F '/' '{print $NF}')

  [[ (! $f == *"_test.go") && $submodule_name != "mock_service" ]] && \
    mockgen -source="$f" -destination "./pkg/domain/service/mock_service/mock_$filename.go" -package mock_service
done

#
exit 0
