command: move remote configuration stuff
This commit is contained in:
parent
a4bc5ba3ff
commit
01cd761023
|
@ -120,7 +120,7 @@ func (c *InitCommand) Run(args []string) int {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize a blank state file with remote enabled
|
// Initialize a blank state file with remote enabled
|
||||||
remoteCmd := &RemoteCommand{
|
remoteCmd := &RemoteConfigCommand{
|
||||||
Meta: c.Meta,
|
Meta: c.Meta,
|
||||||
remoteConf: remoteConf,
|
remoteConf: remoteConf,
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,15 +21,15 @@ type remoteCommandConfig struct {
|
||||||
backupPath string
|
backupPath string
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoteCommand is a Command implementation that is used to
|
// RemoteConfigCommand is a Command implementation that is used to
|
||||||
// enable and disable remote state management
|
// enable and disable remote state management
|
||||||
type RemoteCommand struct {
|
type RemoteConfigCommand struct {
|
||||||
Meta
|
Meta
|
||||||
conf remoteCommandConfig
|
conf remoteCommandConfig
|
||||||
remoteConf terraform.RemoteState
|
remoteConf terraform.RemoteState
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RemoteCommand) Run(args []string) int {
|
func (c *RemoteConfigCommand) Run(args []string) int {
|
||||||
args = c.Meta.process(args, false)
|
args = c.Meta.process(args, false)
|
||||||
config := make(map[string]string)
|
config := make(map[string]string)
|
||||||
cmdFlags := flag.NewFlagSet("remote", flag.ContinueOnError)
|
cmdFlags := flag.NewFlagSet("remote", flag.ContinueOnError)
|
||||||
|
@ -115,7 +115,7 @@ func (c *RemoteCommand) Run(args []string) int {
|
||||||
|
|
||||||
// disableRemoteState is used to disable remote state management,
|
// disableRemoteState is used to disable remote state management,
|
||||||
// and move the state file into place.
|
// and move the state file into place.
|
||||||
func (c *RemoteCommand) disableRemoteState() int {
|
func (c *RemoteConfigCommand) disableRemoteState() int {
|
||||||
if c.stateResult == nil {
|
if c.stateResult == nil {
|
||||||
c.Ui.Error(fmt.Sprintf(
|
c.Ui.Error(fmt.Sprintf(
|
||||||
"Internal error. State() must be called internally before remote\n" +
|
"Internal error. State() must be called internally before remote\n" +
|
||||||
|
@ -173,7 +173,7 @@ func (c *RemoteCommand) disableRemoteState() int {
|
||||||
|
|
||||||
// validateRemoteConfig is used to verify that the remote configuration
|
// validateRemoteConfig is used to verify that the remote configuration
|
||||||
// we have is valid
|
// we have is valid
|
||||||
func (c *RemoteCommand) validateRemoteConfig() error {
|
func (c *RemoteConfigCommand) validateRemoteConfig() error {
|
||||||
conf := c.remoteConf
|
conf := c.remoteConf
|
||||||
_, err := remote.NewClient(conf.Type, conf.Config)
|
_, err := remote.NewClient(conf.Type, conf.Config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -184,7 +184,7 @@ func (c *RemoteCommand) validateRemoteConfig() error {
|
||||||
|
|
||||||
// initBlank state is used to initialize a blank state that is
|
// initBlank state is used to initialize a blank state that is
|
||||||
// remote enabled
|
// remote enabled
|
||||||
func (c *RemoteCommand) initBlankState() int {
|
func (c *RemoteConfigCommand) initBlankState() int {
|
||||||
// Validate the remote configuration
|
// Validate the remote configuration
|
||||||
if err := c.validateRemoteConfig(); err != nil {
|
if err := c.validateRemoteConfig(); err != nil {
|
||||||
return 1
|
return 1
|
||||||
|
@ -212,7 +212,7 @@ func (c *RemoteCommand) initBlankState() int {
|
||||||
|
|
||||||
// updateRemoteConfig is used to update the configuration of the
|
// updateRemoteConfig is used to update the configuration of the
|
||||||
// remote state store
|
// remote state store
|
||||||
func (c *RemoteCommand) updateRemoteConfig() int {
|
func (c *RemoteConfigCommand) updateRemoteConfig() int {
|
||||||
// Validate the remote configuration
|
// Validate the remote configuration
|
||||||
if err := c.validateRemoteConfig(); err != nil {
|
if err := c.validateRemoteConfig(); err != nil {
|
||||||
return 1
|
return 1
|
||||||
|
@ -240,7 +240,7 @@ func (c *RemoteCommand) updateRemoteConfig() int {
|
||||||
|
|
||||||
// enableRemoteState is used to enable remote state management
|
// enableRemoteState is used to enable remote state management
|
||||||
// and to move a state file into place
|
// and to move a state file into place
|
||||||
func (c *RemoteCommand) enableRemoteState() int {
|
func (c *RemoteConfigCommand) enableRemoteState() int {
|
||||||
// Validate the remote configuration
|
// Validate the remote configuration
|
||||||
if err := c.validateRemoteConfig(); err != nil {
|
if err := c.validateRemoteConfig(); err != nil {
|
||||||
return 1
|
return 1
|
||||||
|
@ -299,7 +299,7 @@ func (c *RemoteCommand) enableRemoteState() int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RemoteCommand) Help() string {
|
func (c *RemoteConfigCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform remote [options]
|
Usage: terraform remote [options]
|
||||||
|
|
||||||
|
@ -334,6 +334,6 @@ Options:
|
||||||
return strings.TrimSpace(helpText)
|
return strings.TrimSpace(helpText)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RemoteCommand) Synopsis() string {
|
func (c *RemoteConfigCommand) Synopsis() string {
|
||||||
return "Configures remote state management"
|
return "Configures remote state management"
|
||||||
}
|
}
|
|
@ -8,11 +8,11 @@ import (
|
||||||
"github.com/hashicorp/terraform/state"
|
"github.com/hashicorp/terraform/state"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PullCommand struct {
|
type RemotePullCommand struct {
|
||||||
Meta
|
Meta
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PullCommand) Run(args []string) int {
|
func (c *RemotePullCommand) Run(args []string) int {
|
||||||
args = c.Meta.process(args, false)
|
args = c.Meta.process(args, false)
|
||||||
cmdFlags := flag.NewFlagSet("pull", flag.ContinueOnError)
|
cmdFlags := flag.NewFlagSet("pull", flag.ContinueOnError)
|
||||||
cmdFlags.Usage = func() { c.Ui.Error(c.Help()) }
|
cmdFlags.Usage = func() { c.Ui.Error(c.Help()) }
|
||||||
|
@ -67,7 +67,7 @@ func (c *PullCommand) Run(args []string) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PullCommand) Help() string {
|
func (c *RemotePullCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform pull [options]
|
Usage: terraform pull [options]
|
||||||
|
|
||||||
|
@ -77,6 +77,6 @@ Usage: terraform pull [options]
|
||||||
return strings.TrimSpace(helpText)
|
return strings.TrimSpace(helpText)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PullCommand) Synopsis() string {
|
func (c *RemotePullCommand) Synopsis() string {
|
||||||
return "Refreshes the local state copy from the remote server"
|
return "Refreshes the local state copy from the remote server"
|
||||||
}
|
}
|
|
@ -15,12 +15,12 @@ import (
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPull_noRemote(t *testing.T) {
|
func TestRemotePull_noRemote(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &PullCommand{
|
c := &RemotePullCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -33,7 +33,7 @@ func TestPull_noRemote(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPull_local(t *testing.T) {
|
func TestRemotePull_local(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ func TestPull_local(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &PullCommand{
|
c := &RemotePullCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
|
@ -8,11 +8,11 @@ import (
|
||||||
"github.com/hashicorp/terraform/state"
|
"github.com/hashicorp/terraform/state"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PushCommand struct {
|
type RemotePushCommand struct {
|
||||||
Meta
|
Meta
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PushCommand) Run(args []string) int {
|
func (c *RemotePushCommand) Run(args []string) int {
|
||||||
var force bool
|
var force bool
|
||||||
args = c.Meta.process(args, false)
|
args = c.Meta.process(args, false)
|
||||||
cmdFlags := flag.NewFlagSet("push", flag.ContinueOnError)
|
cmdFlags := flag.NewFlagSet("push", flag.ContinueOnError)
|
||||||
|
@ -71,7 +71,7 @@ func (c *PushCommand) Run(args []string) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PushCommand) Help() string {
|
func (c *RemotePushCommand) Help() string {
|
||||||
helpText := `
|
helpText := `
|
||||||
Usage: terraform push [options]
|
Usage: terraform push [options]
|
||||||
|
|
||||||
|
@ -87,6 +87,6 @@ Options:
|
||||||
return strings.TrimSpace(helpText)
|
return strings.TrimSpace(helpText)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PushCommand) Synopsis() string {
|
func (c *RemotePushCommand) Synopsis() string {
|
||||||
return "Uploads the the local state to the remote server"
|
return "Uploads the the local state to the remote server"
|
||||||
}
|
}
|
|
@ -9,12 +9,12 @@ import (
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPush_noRemote(t *testing.T) {
|
func TestRemotePush_noRemote(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &PushCommand{
|
c := &RemotePushCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -27,7 +27,7 @@ func TestPush_noRemote(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPush_local(t *testing.T) {
|
func TestRemotePush_local(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ func TestPush_local(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &PushCommand{
|
c := &RemotePushCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
|
@ -13,7 +13,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Test disabling remote management
|
// Test disabling remote management
|
||||||
func TestRemote_disable(t *testing.T) {
|
func TestRemoteConfig_disable(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ func TestRemote_disable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -68,7 +68,7 @@ func TestRemote_disable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test disabling remote management without pulling
|
// Test disabling remote management without pulling
|
||||||
func TestRemote_disable_noPull(t *testing.T) {
|
func TestRemoteConfig_disable_noPull(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ func TestRemote_disable_noPull(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -122,12 +122,12 @@ func TestRemote_disable_noPull(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test disabling remote management when not enabled
|
// Test disabling remote management when not enabled
|
||||||
func TestRemote_disable_notEnabled(t *testing.T) {
|
func TestRemoteConfig_disable_notEnabled(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -141,7 +141,7 @@ func TestRemote_disable_notEnabled(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test disabling remote management with a state file in the way
|
// Test disabling remote management with a state file in the way
|
||||||
func TestRemote_disable_otherState(t *testing.T) {
|
func TestRemoteConfig_disable_otherState(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ func TestRemote_disable_otherState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -185,7 +185,7 @@ func TestRemote_disable_otherState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test the case where both managed and non managed state present
|
// Test the case where both managed and non managed state present
|
||||||
func TestRemote_managedAndNonManaged(t *testing.T) {
|
func TestRemoteConfig_managedAndNonManaged(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ func TestRemote_managedAndNonManaged(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -229,12 +229,12 @@ func TestRemote_managedAndNonManaged(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test initializing blank state
|
// Test initializing blank state
|
||||||
func TestRemote_initBlank(t *testing.T) {
|
func TestRemoteConfig_initBlank(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -269,12 +269,12 @@ func TestRemote_initBlank(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test initializing without remote settings
|
// Test initializing without remote settings
|
||||||
func TestRemote_initBlank_missingRemote(t *testing.T) {
|
func TestRemoteConfig_initBlank_missingRemote(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -288,7 +288,7 @@ func TestRemote_initBlank_missingRemote(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test updating remote config
|
// Test updating remote config
|
||||||
func TestRemote_updateRemote(t *testing.T) {
|
func TestRemoteConfig_updateRemote(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ func TestRemote_updateRemote(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
@ -345,7 +345,7 @@ func TestRemote_updateRemote(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test enabling remote state
|
// Test enabling remote state
|
||||||
func TestRemote_enableRemote(t *testing.T) {
|
func TestRemoteConfig_enableRemote(t *testing.T) {
|
||||||
tmp, cwd := testCwd(t)
|
tmp, cwd := testCwd(t)
|
||||||
defer testFixCwd(t, tmp, cwd)
|
defer testFixCwd(t, tmp, cwd)
|
||||||
|
|
||||||
|
@ -365,7 +365,7 @@ func TestRemote_enableRemote(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui := new(cli.MockUi)
|
ui := new(cli.MockUi)
|
||||||
c := &RemoteCommand{
|
c := &RemoteConfigCommand{
|
||||||
Meta: Meta{
|
Meta: Meta{
|
||||||
ContextOpts: testCtxConfig(testProvider()),
|
ContextOpts: testCtxConfig(testProvider()),
|
||||||
Ui: ui,
|
Ui: ui,
|
||||||
|
|
12
commands.go
12
commands.go
|
@ -80,18 +80,6 @@ func init() {
|
||||||
}, nil
|
}, nil
|
||||||
},
|
},
|
||||||
|
|
||||||
"pull": func() (cli.Command, error) {
|
|
||||||
return &command.PullCommand{
|
|
||||||
Meta: meta,
|
|
||||||
}, nil
|
|
||||||
},
|
|
||||||
|
|
||||||
"push": func() (cli.Command, error) {
|
|
||||||
return &command.PushCommand{
|
|
||||||
Meta: meta,
|
|
||||||
}, nil
|
|
||||||
},
|
|
||||||
|
|
||||||
"refresh": func() (cli.Command, error) {
|
"refresh": func() (cli.Command, error) {
|
||||||
return &command.RefreshCommand{
|
return &command.RefreshCommand{
|
||||||
Meta: meta,
|
Meta: meta,
|
||||||
|
|
Loading…
Reference in New Issue