#  Licensed to the Apache Software Foundation (ASF) under one or more
#  contributor license agreements.  See the NOTICE file distributed with
#  this work for additional information regarding copyright ownership.
#  The ASF licenses this file to You under the Apache License, Version 2.0
#  (the "License"); you may not use this file except in compliance with
#  the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

default: build-interpret-util dubbo-common dubbo-registry dubbo-serialization dubbo-service dubbo-consumer

clean-all: clean-dubbo-common clean-dubbo-registry clean-dubbo-registry clean-dubbo-serialization clean-dubbo-consumer clean-dubbo-service clean-interpret-util

dubbo-common: clean-dubbo-common
	npx tsc --project ./packages/dubbo-common/tsconfig.json
	@echo "compile dubbo-common successfully ❤️\n"

clean-dubbo-common:
	rm -rf ./packages/dubbo-common/lib
	@echo "clean dubbo-invoker successfully 👏\n"

dubbo-registry: clean-dubbo-registry
	npx tsc --project ./packages/dubbo-registry/tsconfig.json
	@echo "compile dubbo-registry successfully ❤️\n"

clean-dubbo-registry:
	rm -rf ./packages/dubbo-registry/lib
	@echo "clean dubbo-registry successfully 👏\n"

dubbo-serialization: clean-dubbo-serialization
	npx tsc --project ./packages/dubbo-serialization/tsconfig.json
	@echo "compile dubbo-serialization successfully ❤️\n"

clean-dubbo-serialization:
	rm -rf ./packages/dubbo-serialization/lib
	@echo "clean dubbo-serialization successfully 👏\n"

dubbo-consumer: clean-dubbo-consumer
	npx tsc --project ./packages/dubbo-consumer/tsconfig.json
	@echo "compile dubbo-consumer successfully ❤️\n"

clean-dubbo-consumer:
	rm -rf ./packages/dubbo-consumer/lib
	@echo "clean dubbo-consumer successfully 👏\n"

dubbo-service: clean-dubbo-service
	npx tsc --project ./packages/dubbo-service/tsconfig.json
	@echo "compile dubbo-service successfully ❤️\n"

clean-dubbo-service:
	rm -rf ./packages/dubbo-service/lib
	@echo "clean dubbo-service successfully 👏\n"

build-interpret-util:clean-interpret-util
	npx tsc --project ./packages/interpret-util/tsconfig.json
	@echo "compile interpret-util successfully 👌\n"

clean-interpret-util:
	rm -rf ./packages/interpret-util/lib
	@echo "clean interpret-util successfully 👌\n"

build-demo-api:clean-demo-api
	cd ./java/dubbo-demo/dubbo-demo-api && mvn package
	cd ./java/dubbo-demo/dubbo-demo-api && mvn install dependency:copy-dependencies
	@echo "build demo-api successfully 👌\n"

interpret-jar:build-demo-api
	ts-node ./packages/interpret-cli/src/cli.ts interpret -c dubbo.json
