mirror of
https://github.com/thegeeklab/wp-plugin-go.git
synced 2024-11-23 06:40:40 +00:00
feat: add option to hide woodpecker system flags (#68)
This commit is contained in:
parent
86776b673a
commit
35072e3425
@ -26,8 +26,8 @@ func loggingFlags(category string) []cli.Flag {
|
|||||||
return []cli.Flag{
|
return []cli.Flag{
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "log-level",
|
Name: "log-level",
|
||||||
Usage: "log level",
|
Usage: "plugin log level",
|
||||||
EnvVars: []string{"CI_LOG_LEVEL"},
|
EnvVars: []string{"PLUGIN_LOG_LEVEL"},
|
||||||
Value: "info",
|
Value: "info",
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
@ -51,7 +51,7 @@ func SetupConsoleLogger(c *cli.Context) error {
|
|||||||
|
|
||||||
if zerolog.GlobalLevel() <= zerolog.DebugLevel {
|
if zerolog.GlobalLevel() <= zerolog.DebugLevel {
|
||||||
log.Logger = log.With().Caller().Logger()
|
log.Logger = log.With().Caller().Logger()
|
||||||
log.Log().Msgf("LogLevel = %s", zerolog.GlobalLevel().String())
|
log.Info().Msgf("LogLevel = %s", zerolog.GlobalLevel().String())
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -57,7 +57,7 @@ func networkFlags(category string) []cli.Flag {
|
|||||||
&cli.BoolFlag{
|
&cli.BoolFlag{
|
||||||
Name: "transport.skip-verify",
|
Name: "transport.skip-verify",
|
||||||
Usage: "skip ssl verify",
|
Usage: "skip ssl verify",
|
||||||
EnvVars: []string{"CI_SKIP_VERIFY"},
|
EnvVars: []string{"PLUGIN_SKIP_VERIFY"},
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
|
@ -27,6 +27,37 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//nolint:lll
|
||||||
|
const appHelpTemplate = `NAME:
|
||||||
|
{{template "helpNameTemplate" .}}
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
{{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}{{if .Args}}[arguments...]{{end}}{{end}}{{end}}{{if .Version}}{{if not .HideVersion}}
|
||||||
|
|
||||||
|
VERSION:
|
||||||
|
{{.Version}}{{end}}{{end}}{{if .Description}}
|
||||||
|
|
||||||
|
DESCRIPTION:
|
||||||
|
{{template "descriptionTemplate" .}}{{end}}
|
||||||
|
{{- if len .Authors}}
|
||||||
|
|
||||||
|
AUTHOR{{template "authorsTemplate" .}}{{end}}{{if .VisibleCommands}}
|
||||||
|
|
||||||
|
COMMANDS:{{template "visibleCommandCategoryTemplate" .}}{{end}}{{if .VisibleFlagCategories}}
|
||||||
|
|
||||||
|
GLOBAL OPTIONS:{{range .VisibleFlagCategories}}{{if and .Name (ne .Name "Plugin Flags")}}{{continue}}{{end}}
|
||||||
|
{{if .Name}}{{.Name}}
|
||||||
|
|
||||||
|
{{end}}{{$flglen := len .Flags}}{{range $i, $e := .Flags}}{{if eq (subtract $flglen $i) 1}}{{$e}}
|
||||||
|
{{else}}{{$e}}
|
||||||
|
{{end}}{{end}}{{end}}{{else if .VisibleFlags}}
|
||||||
|
|
||||||
|
GLOBAL OPTIONS:{{template "visibleFlagTemplate" .}}{{end}}{{if .Copyright}}
|
||||||
|
|
||||||
|
COPYRIGHT:
|
||||||
|
{{template "copyrightTemplate" .}}{{end}}
|
||||||
|
`
|
||||||
|
|
||||||
// Options defines the options for the plugin.
|
// Options defines the options for the plugin.
|
||||||
type Options struct {
|
type Options struct {
|
||||||
// Name of the plugin.
|
// Name of the plugin.
|
||||||
@ -41,6 +72,8 @@ type Options struct {
|
|||||||
Flags []cli.Flag
|
Flags []cli.Flag
|
||||||
// Execute function of the plugin.
|
// Execute function of the plugin.
|
||||||
Execute ExecuteFunc
|
Execute ExecuteFunc
|
||||||
|
// Hide woodpecker system flags.
|
||||||
|
HideWoodpeckerFlags bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Plugin defines the plugin instance.
|
// Plugin defines the plugin instance.
|
||||||
@ -68,6 +101,12 @@ func New(opt Options) *Plugin {
|
|||||||
Usage: opt.Description,
|
Usage: opt.Description,
|
||||||
Version: opt.Version,
|
Version: opt.Version,
|
||||||
Flags: append(opt.Flags, Flags()...),
|
Flags: append(opt.Flags, Flags()...),
|
||||||
|
Before: SetupConsoleLogger,
|
||||||
|
After: SetupConsoleLogger,
|
||||||
|
}
|
||||||
|
|
||||||
|
if opt.HideWoodpeckerFlags {
|
||||||
|
app.CustomAppHelpTemplate = appHelpTemplate
|
||||||
}
|
}
|
||||||
|
|
||||||
cli.VersionPrinter = func(c *cli.Context) {
|
cli.VersionPrinter = func(c *cli.Context) {
|
||||||
@ -85,10 +124,6 @@ func New(opt Options) *Plugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Plugin) action(ctx *cli.Context) error {
|
func (p *Plugin) action(ctx *cli.Context) error {
|
||||||
if err := SetupConsoleLogger(ctx); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
p.Metadata = MetadataFromContext(ctx)
|
p.Metadata = MetadataFromContext(ctx)
|
||||||
p.Network = NetworkFromContext(ctx)
|
p.Network = NetworkFromContext(ctx)
|
||||||
p.Context = ctx
|
p.Context = ctx
|
||||||
|
@ -22,12 +22,12 @@ import (
|
|||||||
// format. Trailing or leading spaces or new-lines are not getting truncated. It
|
// format. Trailing or leading spaces or new-lines are not getting truncated. It
|
||||||
// is able to read templates from remote paths, local files or directly from the
|
// is able to read templates from remote paths, local files or directly from the
|
||||||
// string.
|
// string.
|
||||||
func Render(ctx context.Context, client http.Client, templateString string, payload interface{}) (string, error) {
|
func Render(ctx context.Context, client http.Client, tmpl string, payload interface{}) (string, error) {
|
||||||
var outString bytes.Buffer
|
var outString bytes.Buffer
|
||||||
|
|
||||||
tpl := new(template.Template).Funcs(LoadFuncMap())
|
tpl := new(template.Template).Funcs(LoadFuncMap())
|
||||||
|
|
||||||
templateURL, err := url.Parse(templateString)
|
templateURL, err := url.Parse(tmpl)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
switch templateURL.Scheme {
|
switch templateURL.Scheme {
|
||||||
case "http", "https":
|
case "http", "https":
|
||||||
@ -48,18 +48,18 @@ func Render(ctx context.Context, client http.Client, templateString string, payl
|
|||||||
return "", fmt.Errorf("failed to read: %w", err)
|
return "", fmt.Errorf("failed to read: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
templateString = string(out)
|
tmpl = string(out)
|
||||||
case "file":
|
case "file":
|
||||||
out, err := os.ReadFile(templateURL.Path)
|
out, err := os.ReadFile(templateURL.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("failed to read: %w", err)
|
return "", fmt.Errorf("failed to read: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
templateString = string(out)
|
tmpl = string(out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tpl, err = tpl.Parse(templateString)
|
tpl, err = tpl.Parse(tmpl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@ -72,8 +72,8 @@ func Render(ctx context.Context, client http.Client, templateString string, payl
|
|||||||
// RenderTrim parses and executes a template, returning the results in string
|
// RenderTrim parses and executes a template, returning the results in string
|
||||||
// format. The result is trimmed to remove left and right padding and newlines
|
// format. The result is trimmed to remove left and right padding and newlines
|
||||||
// that may be added unintentially in the template markup.
|
// that may be added unintentially in the template markup.
|
||||||
func RenderTrim(ctx context.Context, client http.Client, template string, playload interface{}) (string, error) {
|
func RenderTrim(ctx context.Context, client http.Client, tmpl string, playload interface{}) (string, error) {
|
||||||
out, err := Render(ctx, client, template, playload)
|
out, err := Render(ctx, client, tmpl, playload)
|
||||||
|
|
||||||
return strings.Trim(out, " \n"), err
|
return strings.Trim(out, " \n"), err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user