#!/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

mockgen -source=./pkg/ratecontroller/types/types.go -destination ./pkg/ratecontroller/mock_ratecontroller/mock.go -package mock_ratecontroller
mockgen -source=./infra-api/api.go -destination ./infra-api/mock_infraapi/mock.go -package mock_infraapi

mockgen -source=./model/util/notification.go -destination ./model/util/mock_util/mock_notification.go -package mock_util
mockgen -source=./model/util/notification.go -destination ./model/util/mock_util/mock_notification.go -package mock_util
mockgen -source=./db/dbutil/replication/interface.go -destination ./db/dbutil/replication/mock/mock.go -package mock_replication
mockgen -source=./db/dbutil/cluster/interface.go -destination ./db/dbutil/cluster/mock/mock.go -package mock_cluster

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