# SPDX-FileCopyrightText: 2016-2021 The Apache Software Foundation
# SPDX-License-Identifier: Apache-2.0
# Licensed 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.

# What is the prerelease version?
vsn_pre = $(shell git describe --tags --always --first-parent \
        | grep -Eo -- '(-rc\.[0-9]+)?$$' \
        2>/dev/null)

# What is the release version?
vsn_rel = $(shell git describe --tags --always --first-parent \
        | grep -Eo -- '^v[0-9]+\.[0-9]\.[0-9]+' \
        | tail -c +2 \
        2>/dev/null)

# Is this a tagged release?
vsn_tag = $(shell git describe --tags --always --first-parent \
        | grep -Eo -- '^v[0-9]+\.[0-9]\.[0-9]+(-rc.[0-9]+)?$$' \
        | tail -c +2 \
        2>/dev/null)

annotator_vsn = $(vsn_rel)

.PHONY: all
all: build

.PHONY: build
build:
	@yarn

.PHONY: clean
clean:
	@yarn run clean

.PHONY: check
check: lint test

.PHONY: lint
lint: build
	@yarn lint

.PHONY: test
test: build
	@yarn test

ifeq ($(vsn_tag),)

.PHONY: dist
dist:
	$(error No tag found for release)

else

.PHONY: dist
dist:
	@rm -rf apache-annotator-$(annotator_vsn)-incubating
	@git clone \
        --config advice.detachedHead=false \
        --config versionsort.suffix=-rc \
        --depth 1 \
        --no-tags \
        --quiet \
        file://"$(shell git rev-parse --show-toplevel)" \
        apache-annotator-$(annotator_vsn)-incubating
	@git --git-dir apache-annotator-$(annotator_vsn)-incubating/.git config \
        remote.origin.url https://github.com/apache/incubator-annotator.git
	@tar czf \
        apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz \
        apache-annotator-$(annotator_vsn)-incubating
	@echo "Done: apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz"

endif

.PHONY: distcheck
distcheck: dist
	@tar xzf apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz
	@make -C apache-annotator-$(annotator_vsn)-incubating check

.PHONY: distsign
distsign: dist
	@gpg -ab apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz
	@sha256sum apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz \
        > apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz.sha256
	@sha512sum apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz \
        > apache-annotator-$(annotator_vsn)$(vsn_pre)-incubating.tar.gz.sha512
