package mage_helpers

import (
	"fmt"
	"os/exec"
	"strings"
	"github.com/Masterminds/semver"
)

func HasChanges(previousCommit string, folder string) bool {
	fmt.Println(fmt.Sprintf("Comparing changes from: %v for %v", previousCommit, folder))
	commandArgs := []string{
		`diff`,
		`--name-only`,
		previousCommit + `..HEAD`,
		folder,
	}

	cmd := exec.Command("git", commandArgs...)
	output, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Println(err)
	}
	changes := strings.Fields(string(output))
	if len(changes) > 0 {
		fmt.Println(fmt.Sprintf("Has %v changes", folder))
		return true
	}
	fmt.Println("No changes")
	return false
}

func CurrentCommit() string {

	commandArgs := []string{
		`rev-parse`,
		`--short`,
		`HEAD`,
	}
	cmd := exec.Command("git", commandArgs...)
	output, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Println(err)
	}
	return string(output)
}

func CreateReleaseTag() {

	// Get version and increase version number
	previousVersion, err := semver.NewVersion(GetLatestGitTag())
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(previousVersion)

	newVersion := previousVersion.IncMinor()
	fmt.Println(newVersion)

	// Create git tag
	newTagName := newVersion.Original()
	commandArgs := []string{
		`tag`,
		newTagName,
	}
	cmd := exec.Command("git", commandArgs...)
	_, err = cmd.CombinedOutput()
	if err != nil {
		fmt.Println(err)
	}

	// Push new tag
	commandArgs = []string{
		`push`,
		`origin`,
		newTagName,
	}
	cmd = exec.Command("git", commandArgs...)
	_, err = cmd.CombinedOutput()
	if err != nil {
		fmt.Println(err)
	}
	return
}

func GetLatestGitTag() string {
	commandArgs := []string{
		`describe`,
		`--tags`,
	}
	cmd := exec.Command("git", commandArgs...)
	output, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Println(err)
	}
	tag := string(output)
	tag = strings.TrimSuffix(tag, "\n")
	fmt.Println(tag)
	return tag
}