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

# models
./tools/bin/mockery --all --case underscore --dir ./app/models/cdc --output ./app/models/cdc/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/models/changefeed --output ./app/models/changefeed/mock --outpkg mock
rm -rf ./app/models/bucket/mock/bucket_grouper_func.go
rm -rf ./app/models/bucket/mock/bucket_replication_grouper_func.go
./tools/bin/mockery --all --case underscore --dir ./app/internal/clusterJob --output ./app/internal/clusterJob/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/workflow --output ./app/workflow/mock --outpkg mock
rm -rf ./app/workflow/mock/modify_bucket_policy.go
./tools/bin/mockery --all --case underscore --dir ./app/models/ticdc --output ./app/models/ticdc/mock --outpkg mock
rm -rf ./app/models/ticdc/mock/resource_allocator.go
./tools/bin/mockery --all --case underscore --dir ./app/models/ticdc_spec --output ./app/models/ticdc_spec/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/models/biz_changefeed --output ./app/models/biz_changefeed/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/models/private_link --output ./app/models/private_link/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/models/config_manager --output ./app/models/config_manager/mock --outpkg mock

# repo
./tools/bin/mockery --all --case underscore --dir ./app/repo/changefeed --output ./app/repo/changefeed/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/repo --output ./app/repo/mock --outpkg mock

# pkg
./tools/bin/mockery --all --case underscore --dir ./pkg/grpc/grpcli --output ./pkg/grpc/grpcli/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./pkg/account/accountdb --output ./pkg/account/accountdb/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./pkg/encryptor-wrapper --output ./pkg/encryptor-wrapper/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./pkg/infra-api --output ./pkg/infra-api/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./pkg/billing --output ./pkg/billing/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./pkg/blob --output ./pkg/blob/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./pkg/regional-api --output ./pkg/regional-api/mock --outpkg mock

# internal pkg
./tools/bin/mockery --all --case underscore --dir ./app/internal/infra-facade --output ./app/internal/infra-facade/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/internal/gcp_facade --output ./app/internal/gcp_facade/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/internal/feature_gate --output ./app/internal/feature_gate/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/internal/switch_helper --output ./app/internal/switch_helper/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/internal/cluster_job --output ./app/internal/cluster_job/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/internal/infra_metrics --output ./app/internal/infra_metrics/mock --outpkg mock
./tools/bin/mockery --all --case underscore --dir ./app/internal/cluster_proxy --output ./app/internal/cluster_proxy/mock --outpkg mock

# workflow
./tools/bin/mockery --all --case underscore --dir ./app/workflow/action/biz_changefeed --output ./app/workflow/action/biz_changefeed/mock --outpkg mock

# resource
./tools/bin/mockery --all --case underscore --dir ./app/models/resource --output ./app/models/resource/mock --outpkg mock

exit 0
