pkg refactor
command/agent/* -> agent/*
command/consul/* -> agent/consul/*
command/agent/command{,_test}.go -> command/agent{,_test}.go
command/base/command.go -> command/base.go
command/base/* -> command/*
commands.go -> command/commands.go
The script which did the refactor is:
(
cd $GOPATH/src/github.com/hashicorp/consul
git mv command/agent/command.go command/agent.go
git mv command/agent/command_test.go command/agent_test.go
git mv command/agent/flag_slice_value{,_test}.go command/
git mv command/agent .
git mv command/base/command.go command/base.go
git mv command/base/config_util{,_test}.go command/
git mv commands.go command/
git mv consul agent
rmdir command/base/
gsed -i -e 's|package agent|package command|' command/agent{,_test}.go
gsed -i -e 's|package agent|package command|' command/flag_slice_value{,_test}.go
gsed -i -e 's|package base|package command|' command/base.go command/config_util{,_test}.go
gsed -i -e 's|package main|package command|' command/commands.go
gsed -i -e 's|base.Command|BaseCommand|' command/commands.go
gsed -i -e 's|agent.Command|AgentCommand|' command/commands.go
gsed -i -e 's|\tCommand:|\tBaseCommand:|' command/commands.go
gsed -i -e 's|base\.||' command/commands.go
gsed -i -e 's|command\.||' command/commands.go
gsed -i -e 's|command|c|' main.go
gsed -i -e 's|range Commands|range command.Commands|' main.go
gsed -i -e 's|Commands: Commands|Commands: command.Commands|' main.go
gsed -i -e 's|base\.BoolValue|BoolValue|' command/operator_autopilot_set.go
gsed -i -e 's|base\.DurationValue|DurationValue|' command/operator_autopilot_set.go
gsed -i -e 's|base\.StringValue|StringValue|' command/operator_autopilot_set.go
gsed -i -e 's|base\.UintValue|UintValue|' command/operator_autopilot_set.go
gsed -i -e 's|\bCommand\b|BaseCommand|' command/base.go
gsed -i -e 's|BaseCommand Options|Command Options|' command/base.go
gsed -i -e 's|base.Command|BaseCommand|' command/*.go
gsed -i -e 's|c\.Command|c.BaseCommand|g' command/*.go
gsed -i -e 's|\tCommand:|\tBaseCommand:|' command/*_test.go
gsed -i -e 's|base\.||' command/*_test.go
gsed -i -e 's|\bCommand\b|AgentCommand|' command/agent{,_test}.go
gsed -i -e 's|cmd.AgentCommand|cmd.BaseCommand|' command/agent.go
gsed -i -e 's|cli.AgentCommand = new(Command)|cli.Command = new(AgentCommand)|' command/agent_test.go
gsed -i -e 's|exec.AgentCommand|exec.Command|' command/agent_test.go
gsed -i -e 's|exec.BaseCommand|exec.Command|' command/agent_test.go
gsed -i -e 's|NewTestAgent|agent.NewTestAgent|' command/agent_test.go
gsed -i -e 's|= TestConfig|= agent.TestConfig|' command/agent_test.go
gsed -i -e 's|: RetryJoin|: agent.RetryJoin|' command/agent_test.go
gsed -i -e 's|\.\./\.\./|../|' command/config_util_test.go
gsed -i -e 's|\bverifyUniqueListeners|VerifyUniqueListeners|' agent/config{,_test}.go command/agent.go
gsed -i -e 's|\bserfLANKeyring\b|SerfLANKeyring|g' agent/{agent,keyring,testagent}.go command/agent.go
gsed -i -e 's|\bserfWANKeyring\b|SerfWANKeyring|g' agent/{agent,keyring,testagent}.go command/agent.go
gsed -i -e 's|\bNewAgent\b|agent.New|g' command/agent{,_test}.go
gsed -i -e 's|\bNewAgent|New|' agent/{acl_test,agent,testagent}.go
gsed -i -e 's|\bAgent\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bBool\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bDefaultConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bDevConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bMergeConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bReadConfigPaths\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bParseMetaPair\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bSerfLANKeyring\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bSerfWANKeyring\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|circonus\.agent|circonus|g' command/agent{,_test}.go
gsed -i -e 's|logger\.agent|logger|g' command/agent{,_test}.go
gsed -i -e 's|metrics\.agent|metrics|g' command/agent{,_test}.go
gsed -i -e 's|// agent.Agent|// agent|' command/agent{,_test}.go
gsed -i -e 's|a\.agent\.Config|a.Config|' command/agent{,_test}.go
gsed -i -e 's|agent\.AppendSliceValue|AppendSliceValue|' command/{configtest,validate}.go
gsed -i -e 's|consul/consul|agent/consul|' GNUmakefile
gsed -i -e 's|\.\./test|../../test|' agent/consul/server_test.go
# fix imports
f=$(grep -rl 'github.com/hashicorp/consul/command/agent' * | grep '\.go')
gsed -i -e 's|github.com/hashicorp/consul/command/agent|github.com/hashicorp/consul/agent|' $f
goimports -w $f
f=$(grep -rl 'github.com/hashicorp/consul/consul' * | grep '\.go')
gsed -i -e 's|github.com/hashicorp/consul/consul|github.com/hashicorp/consul/agent/consul|' $f
goimports -w $f
goimports -w command/*.go main.go
)
2017-06-09 22:28:28 +00:00
|
|
|
package command
|
2013-12-19 19:22:08 +00:00
|
|
|
|
|
|
|
import (
|
2014-11-24 19:05:11 +00:00
|
|
|
"os"
|
|
|
|
"os/signal"
|
2015-03-30 21:50:45 +00:00
|
|
|
"syscall"
|
2014-11-24 19:05:11 +00:00
|
|
|
|
2017-10-17 10:55:04 +00:00
|
|
|
agentcmd "github.com/hashicorp/consul/command/agent"
|
2017-10-17 11:15:23 +00:00
|
|
|
"github.com/hashicorp/consul/command/catalog"
|
|
|
|
catlistdccmd "github.com/hashicorp/consul/command/catalog/list/dc"
|
|
|
|
catlistnodescmd "github.com/hashicorp/consul/command/catalog/list/nodes"
|
|
|
|
catlistsvccmd "github.com/hashicorp/consul/command/catalog/list/services"
|
2017-10-11 12:51:22 +00:00
|
|
|
"github.com/hashicorp/consul/command/event"
|
2017-10-11 12:51:22 +00:00
|
|
|
execmd "github.com/hashicorp/consul/command/exec"
|
2017-10-11 13:47:35 +00:00
|
|
|
"github.com/hashicorp/consul/command/forceleave"
|
2017-10-11 12:51:24 +00:00
|
|
|
"github.com/hashicorp/consul/command/info"
|
2017-10-11 12:51:21 +00:00
|
|
|
"github.com/hashicorp/consul/command/join"
|
2017-10-11 12:51:25 +00:00
|
|
|
"github.com/hashicorp/consul/command/keygen"
|
2017-10-11 13:42:45 +00:00
|
|
|
"github.com/hashicorp/consul/command/keyring"
|
2017-10-11 12:51:25 +00:00
|
|
|
"github.com/hashicorp/consul/command/kv"
|
2017-10-17 11:22:23 +00:00
|
|
|
kvdel "github.com/hashicorp/consul/command/kv/del"
|
|
|
|
kvexp "github.com/hashicorp/consul/command/kv/exp"
|
|
|
|
kvget "github.com/hashicorp/consul/command/kv/get"
|
|
|
|
kvimp "github.com/hashicorp/consul/command/kv/imp"
|
|
|
|
kvput "github.com/hashicorp/consul/command/kv/put"
|
2017-10-11 14:22:28 +00:00
|
|
|
"github.com/hashicorp/consul/command/leave"
|
2017-10-12 21:02:45 +00:00
|
|
|
"github.com/hashicorp/consul/command/lock"
|
2017-10-12 21:55:32 +00:00
|
|
|
"github.com/hashicorp/consul/command/maint"
|
2017-10-12 22:15:13 +00:00
|
|
|
"github.com/hashicorp/consul/command/members"
|
2017-10-13 15:15:54 +00:00
|
|
|
"github.com/hashicorp/consul/command/monitor"
|
2017-10-17 11:28:51 +00:00
|
|
|
"github.com/hashicorp/consul/command/operator"
|
|
|
|
operauto "github.com/hashicorp/consul/command/operator/autopilot"
|
|
|
|
operautoget "github.com/hashicorp/consul/command/operator/autopilot/get"
|
|
|
|
operautoset "github.com/hashicorp/consul/command/operator/autopilot/set"
|
|
|
|
operraft "github.com/hashicorp/consul/command/operator/raft"
|
|
|
|
operraftlist "github.com/hashicorp/consul/command/operator/raft/listpeers"
|
|
|
|
operraftremove "github.com/hashicorp/consul/command/operator/raft/removepeer"
|
2017-10-17 06:47:09 +00:00
|
|
|
"github.com/hashicorp/consul/command/reload"
|
2017-10-17 06:52:50 +00:00
|
|
|
"github.com/hashicorp/consul/command/rtt"
|
2017-10-17 07:03:41 +00:00
|
|
|
"github.com/hashicorp/consul/command/snapshot"
|
2017-10-17 11:06:40 +00:00
|
|
|
snapinspectcmd "github.com/hashicorp/consul/command/snapshot/inspect"
|
|
|
|
snaprestorecmd "github.com/hashicorp/consul/command/snapshot/restore"
|
|
|
|
snapsavecmd "github.com/hashicorp/consul/command/snapshot/save"
|
2017-10-11 12:51:20 +00:00
|
|
|
"github.com/hashicorp/consul/command/validate"
|
2017-10-17 08:06:16 +00:00
|
|
|
versioncmd "github.com/hashicorp/consul/command/version"
|
2017-10-17 08:25:13 +00:00
|
|
|
watchcmd "github.com/hashicorp/consul/command/watch"
|
2016-11-03 00:27:49 +00:00
|
|
|
"github.com/hashicorp/consul/version"
|
2013-12-19 19:22:08 +00:00
|
|
|
"github.com/mitchellh/cli"
|
|
|
|
)
|
|
|
|
|
2014-11-22 17:44:23 +00:00
|
|
|
// Commands is the mapping of all the available Consul commands.
|
2013-12-19 19:22:08 +00:00
|
|
|
var Commands map[string]cli.CommandFactory
|
|
|
|
|
|
|
|
func init() {
|
2016-11-30 04:23:15 +00:00
|
|
|
ui := &cli.BasicUi{Writer: os.Stdout, ErrorWriter: os.Stderr}
|
2013-12-19 19:22:08 +00:00
|
|
|
|
|
|
|
Commands = map[string]cli.CommandFactory{
|
2013-12-19 20:18:06 +00:00
|
|
|
"agent": func() (cli.Command, error) {
|
2017-10-17 10:55:04 +00:00
|
|
|
return agentcmd.New(
|
|
|
|
ui,
|
|
|
|
version.GitCommit,
|
|
|
|
version.Version,
|
|
|
|
version.VersionPrerelease,
|
|
|
|
version.GetHumanVersion(),
|
|
|
|
make(chan struct{}),
|
|
|
|
), nil
|
2013-12-19 20:18:06 +00:00
|
|
|
},
|
|
|
|
|
2017-10-17 11:15:23 +00:00
|
|
|
"catalog": func() (cli.Command, error) { return catalog.New(), nil },
|
|
|
|
"catalog datacenters": func() (cli.Command, error) { return catlistdccmd.New(ui), nil },
|
|
|
|
"catalog nodes": func() (cli.Command, error) { return catlistnodescmd.New(ui), nil },
|
|
|
|
"catalog services": func() (cli.Command, error) { return catlistsvccmd.New(ui), nil },
|
2017-10-17 11:02:14 +00:00
|
|
|
"event": func() (cli.Command, error) { return event.New(ui), nil },
|
|
|
|
"exec": func() (cli.Command, error) { return execmd.New(ui, makeShutdownCh()), nil },
|
|
|
|
"force-leave": func() (cli.Command, error) { return forceleave.New(ui), nil },
|
|
|
|
"info": func() (cli.Command, error) { return info.New(ui), nil },
|
|
|
|
"join": func() (cli.Command, error) { return join.New(ui), nil },
|
|
|
|
"keygen": func() (cli.Command, error) { return keygen.New(ui), nil },
|
|
|
|
"keyring": func() (cli.Command, error) { return keyring.New(ui), nil },
|
|
|
|
"kv delete": func() (cli.Command, error) { return kvdel.New(ui), nil },
|
|
|
|
"kv export": func() (cli.Command, error) { return kvexp.New(ui), nil },
|
|
|
|
"kv get": func() (cli.Command, error) { return kvget.New(ui), nil },
|
|
|
|
"kv import": func() (cli.Command, error) { return kvimp.New(ui), nil },
|
|
|
|
"kv put": func() (cli.Command, error) { return kvput.New(ui), nil },
|
|
|
|
"kv": func() (cli.Command, error) { return kv.New(), nil },
|
|
|
|
"leave": func() (cli.Command, error) { return leave.New(ui), nil },
|
|
|
|
"lock": func() (cli.Command, error) { return lock.New(ui), nil },
|
|
|
|
"maint": func() (cli.Command, error) { return maint.New(ui), nil },
|
|
|
|
"members": func() (cli.Command, error) { return members.New(ui), nil },
|
|
|
|
"monitor": func() (cli.Command, error) { return monitor.New(ui, makeShutdownCh()), nil },
|
2017-10-17 11:28:51 +00:00
|
|
|
"operator": func() (cli.Command, error) { return operator.New(), nil },
|
2017-10-17 11:02:14 +00:00
|
|
|
"operator autopilot": func() (cli.Command, error) { return operauto.New(), nil },
|
|
|
|
"operator autopilot get-config": func() (cli.Command, error) { return operautoget.New(ui), nil },
|
|
|
|
"operator autopilot set-config": func() (cli.Command, error) { return operautoset.New(ui), nil },
|
|
|
|
"operator raft": func() (cli.Command, error) { return operraft.New(), nil },
|
|
|
|
"operator raft list-peers": func() (cli.Command, error) { return operraftlist.New(ui), nil },
|
|
|
|
"operator raft remove-peer": func() (cli.Command, error) { return operraftremove.New(ui), nil },
|
|
|
|
"reload": func() (cli.Command, error) { return reload.New(ui), nil },
|
|
|
|
"rtt": func() (cli.Command, error) { return rtt.New(ui), nil },
|
|
|
|
"snapshot": func() (cli.Command, error) { return snapshot.New(), nil },
|
2017-10-17 11:06:40 +00:00
|
|
|
"snapshot inspect": func() (cli.Command, error) { return snapinspectcmd.New(ui), nil },
|
|
|
|
"snapshot restore": func() (cli.Command, error) { return snaprestorecmd.New(ui), nil },
|
|
|
|
"snapshot save": func() (cli.Command, error) { return snapsavecmd.New(ui), nil },
|
2017-10-17 11:02:14 +00:00
|
|
|
"validate": func() (cli.Command, error) { return validate.New(ui), nil },
|
|
|
|
"version": func() (cli.Command, error) { return versioncmd.New(ui, version.GetHumanVersion()), nil },
|
|
|
|
"watch": func() (cli.Command, error) { return watchcmd.New(ui, makeShutdownCh()), nil },
|
2013-12-19 19:22:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// makeShutdownCh returns a channel that can be used for shutdown
|
|
|
|
// notifications for commands. This channel will send a message for every
|
2015-03-30 21:50:45 +00:00
|
|
|
// interrupt or SIGTERM received.
|
2013-12-19 19:22:08 +00:00
|
|
|
func makeShutdownCh() <-chan struct{} {
|
|
|
|
resultCh := make(chan struct{})
|
|
|
|
|
|
|
|
signalCh := make(chan os.Signal, 4)
|
2015-03-30 21:50:45 +00:00
|
|
|
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM)
|
2013-12-19 19:22:08 +00:00
|
|
|
go func() {
|
|
|
|
for {
|
|
|
|
<-signalCh
|
|
|
|
resultCh <- struct{}{}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
return resultCh
|
|
|
|
}
|