#!/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=./central/infra-api/api.go -destination ./central/infra-api/mock_infraapi/mock.go -package mock_infraapi

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

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