drone-gitea-release/main.go

86 lines
1.9 KiB
Go

package main
import (
"context"
"gitea.dikurium.ch/InnoPeak/drone-gitea-release/plugin"
"github.com/kelseyhightower/envconfig"
log "github.com/sirupsen/logrus"
flag "github.com/spf13/pflag"
)
var args plugin.Args
func init() {
if err := envconfig.Process("", &args); err != nil {
log.Fatalln(err)
}
var (
titleFormat *string = flag.String("title-format", "", "Format to use for the release title")
tagFile *string = flag.String("tag-file", "", "File to check for tag to release")
tagRegex *string = flag.String("tag-regex", "", "Regex pattern to look for tag in tag-file")
notes *string = flag.String("notes", "", "Notes to use in release")
notesFile *string = flag.String("notes-file", "", "File to use for release notes")
logLevel *string = flag.String("log-level", "", "Level for logging")
)
flag.Parse()
if titleFormat != nil && *titleFormat != "" {
args.TitleFormat = *titleFormat
}
if tagFile != nil && *tagFile != "" {
args.TagFile = *tagFile
}
if tagRegex != nil && *tagRegex != "" {
args.TagRegex = *tagRegex
}
if notes != nil && *notes != "" {
args.Notes = *notes
}
if notesFile != nil && *notesFile != "" {
args.NotesFile = *notesFile
}
if logLevel != nil && *logLevel != "" {
args.Level = *logLevel
}
}
func main() {
log.SetFormatter(new(formatter))
switch args.Level {
case "debug":
log.SetFormatter(textFormatter)
log.SetLevel(log.DebugLevel)
case "trace":
log.SetFormatter(textFormatter)
log.SetLevel(log.TraceLevel)
}
if err := plugin.Exec(context.Background(), args); err != nil {
log.Fatalln(err)
}
}
// default formatter that writes logs without including timestamp
// or level information.
type formatter struct{}
func (*formatter) Format(entry *log.Entry) ([]byte, error) {
return []byte(entry.Message), nil
}
// text formatter that writes logs with level information
var textFormatter = &log.TextFormatter{
DisableTimestamp: true,
}