package git

import (
	"github.com/go-git/go-git/v5"
	gitPkg "github.com/go-git/go-git/v5"
	"github.com/sirupsen/logrus"
)

// Init inits a new repo and commits all the stuff if you want
func Init(repoPath string, commit bool) error {
	if _, err := gitPkg.PlainInit(repoPath, false); err != nil {
		logrus.Fatal(err)
	}
	logrus.Debugf("initialised new git repo in %s", repoPath)

	if commit {
		commitRepo, err := git.PlainOpen(repoPath)
		if err != nil {
			logrus.Fatal(err)
		}

		commitWorktree, err := commitRepo.Worktree()
		if err != nil {
			logrus.Fatal(err)
		}

		if err := commitWorktree.AddGlob("**"); err != nil {
			return err
		}

		if _, err = commitWorktree.Commit("init", &git.CommitOptions{}); err != nil {
			return err
		}
		logrus.Debugf("init committed all files for new git repo in %s", repoPath)
	}

	return nil
}