mirror of
https://github.com/thegeeklab/drone-plugin-lib.git
synced 2024-11-05 12:50:40 +00:00
696 lines
20 KiB
Go
696 lines
20 KiB
Go
// 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 (
|
|
"time"
|
|
|
|
"github.com/urfave/cli"
|
|
|
|
"github.com/drone-plugins/drone-plugin-lib/internal/environ"
|
|
"github.com/drone-plugins/drone-plugin-lib/pkg/plugin"
|
|
)
|
|
|
|
//---------------------------------------------------------------------
|
|
// Pipeline
|
|
//---------------------------------------------------------------------
|
|
|
|
// PipelineFlags has the cli.Flags for the plugin.Pipeline.
|
|
func PipelineFlags() []cli.Flag {
|
|
flags := []cli.Flag{}
|
|
|
|
flags = append(flags, BuildFlags()...)
|
|
flags = append(flags, RepoFlags()...)
|
|
flags = append(flags, CommitFlags()...)
|
|
flags = append(flags, StageFlags()...)
|
|
flags = append(flags, StepFlags()...)
|
|
flags = append(flags, SemVerFlags()...)
|
|
|
|
return flags
|
|
}
|
|
|
|
// PipelineFromContext creates a plugin.Pipeline from the cli.Context.
|
|
func PipelineFromContext(ctx *cli.Context) plugin.Environment {
|
|
return plugin.Pipeline{
|
|
Build: BuildFromContext(ctx),
|
|
Repo: RepoFromContext(ctx),
|
|
Commit: CommitFromContext(ctx),
|
|
Stage: StageFromContext(ctx),
|
|
Step: StepFromContext(ctx),
|
|
SemVer: SemVerFromContext(ctx),
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Build Flags
|
|
//---------------------------------------------------------------------
|
|
|
|
const (
|
|
// BuildActionFlag corresponds to plugin.Build.Action.
|
|
BuildActionFlag = "build.action"
|
|
// BuildCreatedFlag corresponds to plugin.Build.Created.
|
|
BuildCreatedFlag = "build.created"
|
|
// BuildDeployToFlag corresponds to plugin.Build.DeployTo.
|
|
BuildDeployToFlag = "build.deploy-to"
|
|
// BuildEventFlag corresponds to plugin.Build.Event.
|
|
BuildEventFlag = "build.event"
|
|
// BuildFailedStagesFlag corresponds to plugin.Build.FailedStages.
|
|
BuildFailedStagesFlag = "build.failed-stages"
|
|
// BuildFailedStepsFlag corresponds to plugin.Build.FailedSteps.
|
|
BuildFailedStepsFlag = "build.failed-steps"
|
|
// BuildFinishedFlag corresponds to plugin.Build.Finished.
|
|
BuildFinishedFlag = "build.finished"
|
|
// BuildNumberFlag corresponds to plugin.Build.Created.
|
|
BuildNumberFlag = "build.number"
|
|
// BuildParentFlag corresponds to plugin.Build.Parent.
|
|
BuildParentFlag = "build.parent"
|
|
// BuildPullRequestFlag corresponds to plugin.Build.PullRequest.
|
|
BuildPullRequestFlag = "build.pull-request"
|
|
// BuildSourceBranchFlag corresponds to plugin.Build.SourceBranch.
|
|
BuildSourceBranchFlag = "build.source-branch"
|
|
// BuildStartedFlag corresponds to plugin.Build.Started.
|
|
BuildStartedFlag = "build.started"
|
|
// BuildStatusFlag corresponds to plugin.Build.Status.
|
|
BuildStatusFlag = "build.status"
|
|
// BuildTagFlag corresponds to plugin.Build.Tag.
|
|
BuildTagFlag = "build.tag"
|
|
// BuildTargetBranchFlag corresponds to plugin.Build.TargetBranch.
|
|
BuildTargetBranchFlag = "build.target-branch"
|
|
)
|
|
|
|
// BuildFlags has the cli.Flags for the plugin.Build.
|
|
func BuildFlags() []cli.Flag {
|
|
return []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: BuildActionFlag,
|
|
Usage: "build action",
|
|
EnvVar: environ.BuildActionEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildCreatedFlag,
|
|
Usage: "build created",
|
|
EnvVar: environ.BuildCreatedEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildDeployToFlag,
|
|
Usage: "build deploy to",
|
|
EnvVar: environ.BuildDeployToEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildEventFlag,
|
|
Usage: "build event",
|
|
EnvVar: environ.BuildEventEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringSliceFlag{
|
|
Name: BuildFailedStagesFlag,
|
|
Usage: "build failed stages",
|
|
EnvVar: environ.BuildFailedStagesEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringSliceFlag{
|
|
Name: BuildFailedStepsFlag,
|
|
Usage: "build failed steps",
|
|
EnvVar: environ.BuildFailedStepsEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildFinishedFlag,
|
|
Usage: "build finished",
|
|
EnvVar: environ.BuildFinishedEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.IntFlag{
|
|
Name: BuildNumberFlag,
|
|
Usage: "build number",
|
|
EnvVar: environ.BuildNumberEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.IntFlag{
|
|
Name: BuildParentFlag,
|
|
Usage: "build parent",
|
|
EnvVar: environ.BuildParentEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.IntFlag{
|
|
Name: BuildPullRequestFlag,
|
|
Usage: "build pull request",
|
|
EnvVar: environ.BuildPullRequestEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildSourceBranchFlag,
|
|
Usage: "build source branch",
|
|
EnvVar: environ.BuildSourceBranchEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildStartedFlag,
|
|
Usage: "build started",
|
|
EnvVar: environ.BuildStartedEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildStatusFlag,
|
|
Usage: "build status",
|
|
EnvVar: environ.BuildStatusEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildTagFlag,
|
|
Usage: "build tag",
|
|
EnvVar: environ.BuildTagEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: BuildTargetBranchFlag,
|
|
Usage: "build target branch",
|
|
EnvVar: environ.BuildTargetBranchEnvVar,
|
|
Hidden: true,
|
|
},
|
|
}
|
|
}
|
|
|
|
// BuildFromContext creates a plugin.Build from the cli.Context.
|
|
func BuildFromContext(ctx *cli.Context) plugin.Build {
|
|
return plugin.Build{
|
|
Action: ctx.String(BuildActionFlag),
|
|
Created: time.Unix(ctx.Int64(BuildCreatedFlag), 0),
|
|
DeployTo: ctx.String(BuildDeployToFlag),
|
|
Event: ctx.String(BuildEventFlag),
|
|
FailedStages: ctx.StringSlice(BuildFailedStagesFlag),
|
|
FailedSteps: ctx.StringSlice(BuildFailedStepsFlag),
|
|
Finished: time.Unix(ctx.Int64(BuildFinishedFlag), 0),
|
|
Number: ctx.Int(BuildNumberFlag),
|
|
Parent: ctx.Int(BuildParentFlag),
|
|
PullRequest: ctx.Int(BuildPullRequestFlag),
|
|
SourceBranch: ctx.String(BuildSourceBranchFlag),
|
|
Started: time.Unix(ctx.Int64(BuildStartedFlag), 0),
|
|
Status: ctx.String(BuildStatusFlag),
|
|
Tag: ctx.String(BuildTagFlag),
|
|
TargetBranch: ctx.String(BuildTargetBranchFlag),
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Repo Flags
|
|
//---------------------------------------------------------------------
|
|
|
|
const (
|
|
// RepoDefaultBranchFlag corresponds to plugin.Repo.DefaultBranch.
|
|
RepoDefaultBranchFlag = "repo.branch"
|
|
// RepoFullNameFlag corresponds to plugin.Repo.FullName.
|
|
RepoFullNameFlag = "repo.full-name"
|
|
// RepoLinkFlag corresponds to plugin.Repo.Link.
|
|
RepoLinkFlag = "repo.link"
|
|
// RepoNameFlag corresponds to plugin.Repo.Name
|
|
RepoNameFlag = "repo.name"
|
|
// RepoOwnerFlag corresponds to plugin.Repo.Owner.
|
|
RepoOwnerFlag = "repo.owner"
|
|
// RepoPrivateFlag corresponds to plugin.Repo.Private.
|
|
RepoPrivateFlag = "repo.private"
|
|
// RepoRemoteURLFlag corresponds to plugin.Repo.RemoteURL.
|
|
RepoRemoteURLFlag = "repo.remote-url"
|
|
// RepoSCMFlag corresponds to plugin.Repo.SCM.
|
|
RepoSCMFlag = "repo.scm"
|
|
// RepoVisibilityFlag corresponds to plugin.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: environ.RepoDefaultBranchEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: RepoFullNameFlag,
|
|
Usage: "repo full name",
|
|
EnvVar: environ.RepoFullNameEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: RepoLinkFlag,
|
|
Usage: "repo link",
|
|
EnvVar: environ.RepoLinkEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: RepoNameFlag,
|
|
Usage: "repo name",
|
|
EnvVar: environ.RepoNameEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: RepoOwnerFlag,
|
|
Usage: "repo owner",
|
|
EnvVar: environ.RepoOwnerEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.BoolFlag{
|
|
Name: RepoPrivateFlag,
|
|
Usage: "repo private",
|
|
EnvVar: environ.RepoPrivateEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: RepoRemoteURLFlag,
|
|
Usage: "repo remote url",
|
|
EnvVar: environ.RepoRemoteURLEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: RepoSCMFlag,
|
|
Usage: "repo scm",
|
|
EnvVar: environ.RepoSCMEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: RepoVisibilityFlag,
|
|
Usage: "repo visibility",
|
|
EnvVar: environ.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),
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Commit Flags
|
|
//---------------------------------------------------------------------
|
|
|
|
const (
|
|
// CommitAfterFlag corresponds to plugin.Commit.After.
|
|
CommitAfterFlag = "commit.after"
|
|
// CommitAuthorFlag corresponds to plugin.Commit.Author.
|
|
CommitAuthorFlag = "commit.author"
|
|
// CommitAuthorAvatarFlag corresponds to plugin.Commit.AuthorAvatar.
|
|
CommitAuthorAvatarFlag = "commit.author-avatar"
|
|
// CommitAuthorEmailFlag corresponds to plugin.Commit.AuthorEmail.
|
|
CommitAuthorEmailFlag = "commit.author-email"
|
|
// CommitAuthorNameFlag corresponds to plugin.Commit.AuthorName.
|
|
CommitAuthorNameFlag = "commit.author-name"
|
|
// CommitBeforeFlag corresponds to plugin.Commit.Before.
|
|
CommitBeforeFlag = "commit.before"
|
|
// CommitBranchFlag corresponds to plugin.Commit.Branch.
|
|
CommitBranchFlag = "commit.branch"
|
|
// CommitLinkFlag corresponds to plugin.Commit.Link.
|
|
CommitLinkFlag = "commit.link"
|
|
// CommitMessageFlag corresponds to plugin.Commit.Message.
|
|
CommitMessageFlag = "commit.message"
|
|
// CommitRefFlag corresponds to plugin.Commit.Ref.
|
|
CommitRefFlag = "commit.ref"
|
|
// CommitSHAFlag corresponds to plugin.Commit.SHA.
|
|
CommitSHAFlag = "commit.sha"
|
|
)
|
|
|
|
// CommitFlags has the cli.Flags for the plugin.Commit.
|
|
func CommitFlags() []cli.Flag {
|
|
return []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: CommitAfterFlag,
|
|
Usage: "commit after",
|
|
EnvVar: environ.CommitAfterEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitAuthorFlag,
|
|
Usage: "commit author",
|
|
EnvVar: environ.CommitAuthorEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitAuthorAvatarFlag,
|
|
Usage: "commit author avatar",
|
|
EnvVar: environ.CommitAuthorAvatarEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitAuthorEmailFlag,
|
|
Usage: "commit author email",
|
|
EnvVar: environ.CommitAuthorEmailEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitAuthorNameFlag,
|
|
Usage: "commit author name",
|
|
EnvVar: environ.CommitAuthorNameEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitBeforeFlag,
|
|
Usage: "commit before",
|
|
EnvVar: environ.CommitBeforeEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitBranchFlag,
|
|
Usage: "commit branch",
|
|
EnvVar: environ.CommitBranchEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitLinkFlag,
|
|
Usage: "commit link",
|
|
EnvVar: environ.CommitLinkEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitMessageFlag,
|
|
Usage: "commit message",
|
|
EnvVar: environ.CommitMessageEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitRefFlag,
|
|
Usage: "commit ref",
|
|
EnvVar: environ.CommitRefEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: CommitSHAFlag,
|
|
Usage: "commit sha",
|
|
EnvVar: environ.CommitSHAEnvVar,
|
|
Hidden: true,
|
|
},
|
|
}
|
|
}
|
|
|
|
// CommitFromContext creates a plugin.Commit from the cli.Context.
|
|
func CommitFromContext(ctx *cli.Context) plugin.Commit {
|
|
return plugin.Commit{
|
|
After: ctx.String(CommitAfterFlag),
|
|
Author: ctx.String(CommitAuthorFlag),
|
|
AuthorAvatar: ctx.String(CommitAuthorAvatarFlag),
|
|
AuthorEmail: ctx.String(CommitAuthorEmailFlag),
|
|
AuthorName: ctx.String(CommitAuthorNameFlag),
|
|
Before: ctx.String(CommitBeforeFlag),
|
|
Branch: ctx.String(CommitBranchFlag),
|
|
Link: ctx.String(CommitLinkFlag),
|
|
Message: ctx.String(CommitMessageFlag),
|
|
Ref: ctx.String(CommitRefFlag),
|
|
SHA: ctx.String(CommitSHAFlag),
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Stage Flags
|
|
//---------------------------------------------------------------------
|
|
|
|
const (
|
|
// StageArchFlag corresponds to plugin.Stage.Arch.
|
|
StageArchFlag = "stage.arch"
|
|
// StageDependsOnFlag corresponds to plugin.Stage.DependsOn.
|
|
StageDependsOnFlag = "stage.depends-on"
|
|
// StageFinishedFlag corresponds to plugin.Stage.Finished.
|
|
StageFinishedFlag = "stage.finished"
|
|
// StageKindFlag corresponds Stage.Kind.
|
|
StageKindFlag = "stage.kind"
|
|
// StageMachineFlag corresponds to plugin.Stage.Machine.
|
|
StageMachineFlag = "stage.machine"
|
|
// StageNameFlag corresponds to plugin.Stage.Name.
|
|
StageNameFlag = "stage.name"
|
|
// StageNumberFlag corresponds to plugin.Stage.Number.
|
|
StageNumberFlag = "stage.number"
|
|
// StageOSFlag corresponds to plugin.Stage.OS.
|
|
StageOSFlag = "stage.os"
|
|
// StageStartedFlag corresponds to plugin.Stage.Started.
|
|
StageStartedFlag = "stage.started"
|
|
// StageStatusFlag corresponds to plugin.Stage.Status.
|
|
StageStatusFlag = "stage.status"
|
|
// StageTypeFlag corresponds to plugin.Stage.Type.
|
|
StageTypeFlag = "stage.type"
|
|
// StageVariantFlag corresponds to plugin.Stage.Variant.
|
|
StageVariantFlag = "stage.variant"
|
|
// StageVersionFlag corresponds to plugin.Stage.Version.
|
|
StageVersionFlag = "stage.version"
|
|
)
|
|
|
|
// StageFlags has the cli.Flags for the plugin.Stage
|
|
func StageFlags() []cli.Flag {
|
|
return []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: StageArchFlag,
|
|
Usage: "stage arch",
|
|
EnvVar: environ.StageArchEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringSliceFlag{
|
|
Name: StageDependsOnFlag,
|
|
Usage: "stage depends on",
|
|
EnvVar: environ.StageDependsOnEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.Int64Flag{
|
|
Name: StageFinishedFlag,
|
|
Usage: "stage finished",
|
|
EnvVar: environ.StageFinishedEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageKindFlag,
|
|
Usage: "stage kind",
|
|
EnvVar: environ.StageKindEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageMachineFlag,
|
|
Usage: "stage machine",
|
|
EnvVar: environ.StageMachineEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageNameFlag,
|
|
Usage: "stage name",
|
|
EnvVar: environ.StageNameEnvVar,
|
|
Hidden: true,
|
|
}, cli.IntFlag{
|
|
Name: StageNumberFlag,
|
|
Usage: "stage number",
|
|
EnvVar: environ.StageNumberEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageOSFlag,
|
|
Usage: "stage os",
|
|
EnvVar: environ.StageOSEnvVar,
|
|
Hidden: true,
|
|
}, cli.Int64Flag{
|
|
Name: StageStartedFlag,
|
|
Usage: "stage started",
|
|
EnvVar: environ.StageStartedEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageStatusFlag,
|
|
Usage: "stage status",
|
|
EnvVar: environ.StageStatusEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageTypeFlag,
|
|
Usage: "stage type",
|
|
EnvVar: environ.StageTypeEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageVariantFlag,
|
|
Usage: "stage variant",
|
|
EnvVar: environ.StageVariantEnvVar,
|
|
Hidden: true,
|
|
}, cli.StringFlag{
|
|
Name: StageVersionFlag,
|
|
Usage: "stage version",
|
|
EnvVar: environ.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),
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Step Flags
|
|
//---------------------------------------------------------------------
|
|
|
|
const (
|
|
// StepNameFlag corresponds to plugin.Step.Name.
|
|
StepNameFlag = "step.name"
|
|
// StepNumberFlag corresponds to plugin.Step.Number.
|
|
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: environ.StepNameEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: StepNumberFlag,
|
|
Usage: "step number",
|
|
EnvVar: environ.StepNumberEnvVar,
|
|
Hidden: true,
|
|
},
|
|
}
|
|
}
|
|
|
|
// StepFromContext creates a plugin.Step from the cli.Context.
|
|
func StepFromContext(ctx *cli.Context) plugin.Step {
|
|
return plugin.Step{
|
|
Name: ctx.String(StepNameFlag),
|
|
Number: ctx.Int(StepNumberFlag),
|
|
}
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// SemVer Flags
|
|
//---------------------------------------------------------------------
|
|
|
|
const (
|
|
// SemVerBuildFlag corresponds to plugin.SemVer.Build.
|
|
SemVerBuildFlag = "semver.build"
|
|
// SemVerErrorFlag corresponds to plugin.SemVer.Error.
|
|
SemVerErrorFlag = "semver.error"
|
|
// SemVerMajorFlag corresponds to plugin.SemVer.Major.
|
|
SemVerMajorFlag = "semver.major"
|
|
// SemVerMinorFlag corresponds to plugin.SemVer.Minor.
|
|
SemVerMinorFlag = "semver.minor"
|
|
// SemVerPatchFlag corresponds to plugin.SemVer.Patch.
|
|
SemVerPatchFlag = "semver.patch"
|
|
// SemVerPrereleaseFlag corresponds to plugin.SemVer.Prerelease
|
|
SemVerPrereleaseFlag = "semver.prerelease"
|
|
// SemVerShortFlag corresponds to plugin.SemVer.Short.
|
|
SemVerShortFlag = "semver.short"
|
|
// SemVerVersionFlag corresponds to plugin.SemVer.Version
|
|
SemVerVersionFlag = "semver.version"
|
|
)
|
|
|
|
// SemVerFlags has the cli.Flags for the plugin.SemVer.
|
|
func SemVerFlags() []cli.Flag {
|
|
return []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: SemVerBuildFlag,
|
|
Usage: "semver build",
|
|
EnvVar: environ.SemVerBuildEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: SemVerErrorFlag,
|
|
Usage: "semver error",
|
|
EnvVar: environ.SemVerErrorEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: SemVerMajorFlag,
|
|
Usage: "semver major",
|
|
EnvVar: environ.SemVerMajorEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: SemVerMinorFlag,
|
|
Usage: "semver minor",
|
|
EnvVar: environ.SemVerMinorEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: SemVerPatchFlag,
|
|
Usage: "semver patch",
|
|
EnvVar: environ.SemVerPatchEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: SemVerPrereleaseFlag,
|
|
Usage: "semver prerelease",
|
|
EnvVar: environ.SemVerPrereleaseEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: SemVerShortFlag,
|
|
Usage: "semver short",
|
|
EnvVar: environ.SemVerShortEnvVar,
|
|
Hidden: true,
|
|
},
|
|
cli.StringFlag{
|
|
Name: SemVerVersionFlag,
|
|
Usage: "semver version",
|
|
EnvVar: environ.SemVerVersionEnvVar,
|
|
Hidden: true,
|
|
},
|
|
}
|
|
}
|
|
|
|
// SemVerFromContext creates a plugin.Step from the cli.Context.
|
|
func SemVerFromContext(ctx *cli.Context) plugin.SemVer {
|
|
return plugin.SemVer{
|
|
Build: ctx.String(SemVerBuildFlag),
|
|
Error: ctx.String(SemVerErrorFlag),
|
|
Major: ctx.String(SemVerMajorFlag),
|
|
Minor: ctx.String(SemVerMinorFlag),
|
|
Patch: ctx.String(SemVerPatchFlag),
|
|
Prerelease: ctx.String(SemVerPrereleaseFlag),
|
|
Short: ctx.String(SemVerShortFlag),
|
|
Version: ctx.String(SemVerVersionFlag),
|
|
}
|
|
}
|