forked from toolshed/abra
.gitea
cli
cmd
pkg
app
catalogue
client
compose
config
dns
git
clone.go
read.go
recipe
secret
server
web
scripts
tests
.drone.yml
.envrc.sample
.gitignore
.goreleaser.yml
Makefile
README.md
go.mod
go.sum
49 lines
904 B
Go
49 lines
904 B
Go
package git
|
|
|
|
import (
|
|
"path"
|
|
|
|
"coopcloud.tech/abra/pkg/config"
|
|
"github.com/go-git/go-git/v5"
|
|
"github.com/go-git/go-git/v5/plumbing"
|
|
)
|
|
|
|
// GetRecipeHead retrieves latest HEAD metadata.
|
|
func GetRecipeHead(recipeName string) (*plumbing.Reference, error) {
|
|
recipeDir := path.Join(config.ABRA_DIR, "apps", recipeName)
|
|
|
|
repo, err := git.PlainOpen(recipeDir)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
head, err := repo.Head()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return head, nil
|
|
}
|
|
|
|
// IsClean checks if a repo has unstaged changes
|
|
func IsClean(recipeName string) (bool, error) {
|
|
recipeDir := path.Join(config.ABRA_DIR, "apps", recipeName)
|
|
|
|
repo, err := git.PlainOpen(recipeDir)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
worktree, err := repo.Worktree()
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
status, err := worktree.Status()
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
return status.IsClean(), nil
|
|
}
|