0
0
mirror of https://github.com/thegeeklab/wp-plugin-go.git synced 2024-11-14 09:40:38 +00:00
wp-plugin-go/pkg/urfave/urfave.go

301 lines
8.5 KiB
Go
Raw Normal View History

2019-09-06 23:34:27 +00:00
// Copyright (c) 2019, the Drone Plugins project authors.
// Please see the AUTHORS file for details. All rights reserved.
// Use of this source code is governed by an Apache 2.0 license that can be
// found in the LICENSE file.
// Package urfave provides helpers for interacting with the `urfave/cli`
// package when creating plugins for use by the Drone CI/CD service.
//
// Drone communicates to plugins by passing in environment variables that have
// information on the currently executing build. The `urfave/cli` package can
// read these environment variables and extract them into structs.
//
// import(
// "github.com/drone-plugins/drone-plugin-lib/pkg/urfave"
// "github.com/urfave/cli"
// )
//
// func main() {
// app := cli.New()
// app.Name = "my awesome Drone plugin"
// app.Run = run
// app.Flags = []cli.Flags{
// // All my plugin flags
// }
// app.Flags = append(
// app.Flags,
// urfave.CommitFlags()...,
// )
// }
package urfave
import (
2019-09-07 00:13:21 +00:00
"time"
2019-09-06 23:34:27 +00:00
"github.com/drone-plugins/drone-plugin-lib/pkg/plugin"
"github.com/urfave/cli"
)
2019-09-09 21:02:13 +00:00
//---------------------------------------------------------------------
// Repo Flags
//---------------------------------------------------------------------
const (
// RepoDefaultBranchFlag corresponds to Repo.DefaultBranch.
RepoDefaultBranchFlag = "repo.branch"
// RepoFullNameFlag corresponds to Repo.FullName.
RepoFullNameFlag = "repo.full-name"
// RepoLinkFlag corresponds to Repo.Link.
RepoLinkFlag = "repo.link"
// RepoNameFlag corresponds to Repo.Name
RepoNameFlag = "repo.name"
// RepoOwnerFlag corresponds to Repo.Owner.
RepoOwnerFlag = "repo.owner"
// RepoPrivateFlag corresponds to Repo.Private.
RepoPrivateFlag = "repo.private"
// RepoRemoteURLFlag corresponds to Repo.RemoteURL.
RepoRemoteURLFlag = "repo.remote-url"
// RepoSCMFlag corresponds to Repo.SCM.
RepoSCMFlag = "repo.scm"
// RepoVisibilityFlag corresponds to Repo.Visbility.
RepoVisibilityFlag = "repo.visibility"
)
// RepoFlags has the cli.Flags for the plugin.Repo
func RepoFlags() []cli.Flag {
return []cli.Flag{
cli.StringFlag{
Name: RepoDefaultBranchFlag,
Usage: "repo default branch",
EnvVar: plugin.RepoDefaultBranchEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: RepoFullNameFlag,
Usage: "repo full name",
EnvVar: plugin.RepoFullNameEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: RepoLinkFlag,
Usage: "repo link",
EnvVar: plugin.RepoLinkEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: RepoNameFlag,
Usage: "repo name",
EnvVar: plugin.RepoNameEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: RepoOwnerFlag,
Usage: "repo owner",
EnvVar: plugin.RepoOwnerEnvVar,
Hidden: true,
},
cli.BoolFlag{
Name: RepoPrivateFlag,
Usage: "repo private",
EnvVar: plugin.RepoPrivateEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: RepoRemoteURLFlag,
Usage: "repo remote url",
EnvVar: plugin.RepoRemoteURLEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: RepoSCMFlag,
Usage: "repo scm",
EnvVar: plugin.RepoSCMEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: RepoVisibilityFlag,
Usage: "repo visibility",
EnvVar: plugin.RepoVisibilityEnvVar,
Hidden: true,
},
}
}
// RepoFromContext creates a plugin.Repo from the cli.Context.
func RepoFromContext(ctx *cli.Context) plugin.Repo {
return plugin.Repo{
DefaultBranch: ctx.String(RepoDefaultBranchFlag),
FullName: ctx.String(RepoFullNameFlag),
Link: ctx.String(RepoLinkFlag),
Name: ctx.String(RepoNameFlag),
Owner: ctx.String(RepoOwnerFlag),
Private: ctx.Bool(RepoPrivateFlag),
RemoteURL: ctx.String(RepoRemoteURLFlag),
SCM: ctx.String(RepoSCMFlag),
Visibility: ctx.String(RepoVisibilityFlag),
}
}
2019-09-07 00:13:21 +00:00
//---------------------------------------------------------------------
// Stage Flags
//---------------------------------------------------------------------
const (
// StageArchFlag corresponds to plugin.Stage.Arch.
2019-09-09 19:43:15 +00:00
StageArchFlag = "stage.arch"
2019-09-07 00:13:21 +00:00
// StageDependsOnFlag corresponds to plugin.Stage.DependsOn.
2019-09-09 19:43:15 +00:00
StageDependsOnFlag = "stage.depends-on"
2019-09-07 00:13:21 +00:00
// StageFinishedFlag corresponds to plugin.Stage.Finished.
2019-09-09 19:43:15 +00:00
StageFinishedFlag = "stage.finished"
2019-09-07 00:13:21 +00:00
// StageKindFlag corresponds Stage.Kind.
2019-09-09 19:43:15 +00:00
StageKindFlag = "stage.kind"
2019-09-07 00:13:21 +00:00
// StageMachineFlag corresponds to plugin.Stage.Machine.
2019-09-09 19:43:15 +00:00
StageMachineFlag = "stage.machine"
2019-09-07 00:13:21 +00:00
// StageNameFlag corresponds to plugin.Stage.Name.
2019-09-09 19:43:15 +00:00
StageNameFlag = "stage.name"
2019-09-07 00:13:21 +00:00
// StageNumberFlag corresponds to plugin.Stage.Number.
2019-09-09 19:43:15 +00:00
StageNumberFlag = "stage.number"
2019-09-07 00:13:21 +00:00
// StageOSFlag corresponds to plugin.Stage.OS.
2019-09-09 19:43:15 +00:00
StageOSFlag = "stage.os"
2019-09-07 00:13:21 +00:00
// StageStartedFlag corresponds to plugin.Stage.Started.
2019-09-09 19:43:15 +00:00
StageStartedFlag = "stage.started"
2019-09-07 00:13:21 +00:00
// StageStatusFlag corresponds to plugin.Stage.Status.
2019-09-09 19:43:15 +00:00
StageStatusFlag = "stage.status"
2019-09-07 00:13:21 +00:00
// StageTypeFlag corresponds to plugin.Stage.Type.
2019-09-09 19:43:15 +00:00
StageTypeFlag = "stage.type"
2019-09-07 00:13:21 +00:00
// StageVariantFlag corresponds to plugin.Stage.Variant.
2019-09-09 19:43:15 +00:00
StageVariantFlag = "stage.variant"
2019-09-07 00:13:21 +00:00
// StageVersionFlag corresponds to plugin.Stage.Version.
2019-09-09 19:43:15 +00:00
StageVersionFlag = "stage.version"
2019-09-07 00:13:21 +00:00
)
// StageFlags has the cli.Flags for the plugin.Stage
func StageFlags() []cli.Flag {
return []cli.Flag{
cli.StringFlag{
Name: StageArchFlag,
Usage: "stage arch",
EnvVar: plugin.StageArchEnvVar,
Hidden: true,
},
cli.StringSliceFlag{
Name: StageDependsOnFlag,
Usage: "stage depends on",
EnvVar: plugin.StageDependsOnEnvVar,
Hidden: true,
},
cli.Int64Flag{
Name: StageFinishedFlag,
Usage: "stage finished",
EnvVar: plugin.StageFinishedEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageKindFlag,
Usage: "stage kind",
EnvVar: plugin.StageKindEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageMachineFlag,
Usage: "stage machine",
EnvVar: plugin.StageMachineEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageNameFlag,
Usage: "stage name",
EnvVar: plugin.StageNameEnvVar,
Hidden: true,
}, cli.IntFlag{
Name: StageNumberFlag,
Usage: "stage number",
EnvVar: plugin.StageNumberEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageOSFlag,
Usage: "stage os",
EnvVar: plugin.StageOSEnvVar,
Hidden: true,
}, cli.Int64Flag{
Name: StageStartedFlag,
Usage: "stage started",
EnvVar: plugin.StageStartedEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageStatusFlag,
Usage: "stage status",
EnvVar: plugin.StageStatusEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageTypeFlag,
Usage: "stage type",
EnvVar: plugin.StageTypeEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageVariantFlag,
Usage: "stage variant",
EnvVar: plugin.StageVariantEnvVar,
Hidden: true,
}, cli.StringFlag{
Name: StageVersionFlag,
Usage: "stage version",
EnvVar: plugin.StageVersionEnvVar,
Hidden: true,
},
}
}
// StageFromContext creates a plugin.Stage from the cli.Context.
func StageFromContext(ctx *cli.Context) plugin.Stage {
return plugin.Stage{
Arch: ctx.String(StageArchFlag),
DependsOn: ctx.StringSlice(StageDependsOnFlag),
Finished: time.Unix(ctx.Int64(StageFinishedFlag), 0),
Kind: ctx.String(StageKindFlag),
Machine: ctx.String(StageMachineFlag),
Name: ctx.String(StageNameFlag),
Number: ctx.Int(StageNumberFlag),
OS: ctx.String(StageOSFlag),
Started: time.Unix(ctx.Int64(StageStartedFlag), 0),
Status: ctx.String(StageStatusFlag),
Type: ctx.String(StageTypeFlag),
Variant: ctx.String(StageVariantFlag),
Version: ctx.String(StageVersionFlag),
}
}
2019-09-06 23:34:27 +00:00
//---------------------------------------------------------------------
// Step Flags
//---------------------------------------------------------------------
const (
2019-09-07 00:13:21 +00:00
// StepNameFlag corresponds to plugin.Step.Name.
2019-09-06 23:34:27 +00:00
StepNameFlag = "step.name"
2019-09-07 00:13:21 +00:00
// StepNumberFlag corresponds to plugin.Step.Number.
2019-09-06 23:34:27 +00:00
StepNumberFlag = "step.number"
)
// StepFlags has the cli.Flags for the plugin.Step.
func StepFlags() []cli.Flag {
return []cli.Flag{
cli.StringFlag{
Name: StepNameFlag,
Usage: "step name",
EnvVar: plugin.StepNameEnvVar,
Hidden: true,
},
cli.StringFlag{
Name: StepNumberFlag,
Usage: "step number",
EnvVar: plugin.StepNumberEnvVar,
Hidden: true,
},
}
}
// StepFromContext creates a plugin.Step from the cli.Context.
2019-09-07 00:13:21 +00:00
func StepFromContext(ctx *cli.Context) plugin.Step {
2019-09-06 23:34:27 +00:00
return plugin.Step{
Name: ctx.String(StepNameFlag),
Number: ctx.Int(StepNumberFlag),
}
}