# 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.

.PHONY: license

setup:
	python3 -m pip install --upgrade pip
	python3 -m pip install grpcio --ignore-installed

setup-test: setup
	pip3 install -e .[test]

gen:
	python3 -m grpc_tools.protoc --version || python3 -m pip install grpcio-tools
	python3 -m grpc_tools.protoc -I protocol --python_out=. --grpc_python_out=. protocol/**/*.proto
	touch browser/__init__.py
	touch common/__init__.py
	touch language_agent/__init__.py
	touch management/__init__.py
	touch profile/__init__.py
	touch service_mesh_probe/__init__.py

lint: clean
	flake8 --version || python3 -m pip install flake8
	flake8 . --count --select=E9,F63,F7,F82 --show-source
	flake8 . --count --max-complexity=12 --max-line-length=120

license: clean
	python3 tools/check-license-header.py skywalking tests tools

test: gen setup-test
	python3 -m unittest  -v

install: gen
	python3 setup.py install --force

package: clean gen
	python3 setup.py sdist bdist_wheel

upload-test: package
	twine upload --repository-url https://test.pypi.org/legacy/ dist/*

clean:
	rm -rf browser common language_agent management profile service_mesh_probe
	rm -rf skywalking_python.egg-info dist build
	find . -type d -name  "__pycache__" -exec rm -r {} +