Tinkerbell.Sandbox/releases/cmd/bump-version/git/git.go
Jacob Weinstock 6b841fee7c This simplifies the stand-up of a sandbox:
Only 2 main Vagrant calls are now needed (`vagrant up` and `vagrant up machine1`).
This PR only updates the Vagrant Virtualbox setup. The Vagrant Libvirt and Terraform
still need to be updated.

This uses docker-compose as the entry point for standing up the stack and makes the stand-up
of the sandbox more portal. Vagrant and Terraform are only responsible for standing up infrastructure
and then running docker-compose, not for running any glue scripts.

The docker-compose calls out to single-shot services to do all the glue required to get the fully
functional Tinkerbell stack up and running. All the single-shot services are idempotent.
This increases portability and the development iteration loop. This also simplifies the required
steps needed to get a fully functioning sandbox up and running.

This is intended to help people looking to get started by getting them to a provisioned
machine quicker and more easily.

Signed-off-by: Jacob Weinstock <jakobweinstock@gmail.com>
2021-08-09 08:04:06 -06:00

31 lines
531 B
Go

package git
import (
g "github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/storage/memory"
)
type Repository struct {
repo *g.Repository
}
func Clone(remote string) (*Repository, error) {
repo := &Repository{}
r, err := g.Clone(memory.NewStorage(), nil, &g.CloneOptions{
URL: remote,
})
if err != nil {
return nil, err
}
repo.repo = r
return repo, nil
}
func (r *Repository) GetHeadHash() (string, error) {
ref, err := r.repo.Head()
if err != nil {
return "", err
}
return ref.Hash().String(), nil
}