constellation/hack/pseudo-version/pseudo-version.go

61 lines
1.5 KiB
Go
Raw Normal View History

package main
import (
"flag"
"fmt"
"time"
"github.com/edgelesssys/constellation/hack/pseudo-version/internal/git"
"github.com/edgelesssys/constellation/internal/logger"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"golang.org/x/mod/module"
)
func main() {
major := flag.String("major", "v1", "Optional major version")
base := flag.String("base", "", "Optional base version")
revisionTimestamp := flag.String("time", "", "Optional revision time")
revision := flag.String("revision", "", "Optional revision (git commit hash)")
flag.Parse()
log := logger.New(logger.JSONLog, zapcore.InfoLevel)
gitc, err := git.New()
if err != nil {
log.With(zap.Error(err)).Fatalf("Failed to initialize git client")
}
if *base == "" {
_, versionTag, err := gitc.FirstParentWithVersionTag()
if err != nil {
log.With(zap.Error(err)).Fatalf("Failed to find base version")
}
*base = versionTag
}
var headRevision string
var headTime time.Time
if *revisionTimestamp == "" || *revision == "" {
var err error
headRevision, headTime, err = gitc.Revision()
if err != nil {
log.With(zap.Error(err)).Fatalf("Failed to retrieve HEAD")
}
}
if *revisionTimestamp != "" {
headTime, err := time.Parse("20060102150405", *revisionTimestamp)
if err != nil {
log.With(zap.Error(err)).With("time", headTime).Fatalf("Failed to parse revision timestamp")
}
}
if *revision == "" {
*revision = headRevision
}
version := module.PseudoVersion(*major, *base, headTime, *revision)
fmt.Println(version)
}