diff --git a/cmd/cmd_suite_test.go b/cmd/cmd_suite_test.go new file mode 100644 index 000000000..f05ccd0cb --- /dev/null +++ b/cmd/cmd_suite_test.go @@ -0,0 +1,13 @@ +package cmd_test + +import ( + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + + "testing" +) + +func TestCmd(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Cmd Suite") +} diff --git a/cmd/concourse/command.go b/cmd/concourse/command.go index f6c7faf8d..6d7e44704 100644 --- a/cmd/concourse/command.go +++ b/cmd/concourse/command.go @@ -4,15 +4,16 @@ import ( "github.com/concourse/concourse/atc/atccmd" "github.com/concourse/concourse/worker/land" "github.com/concourse/concourse/worker/retire" - flags "github.com/jessevdk/go-flags" + "github.com/concourse/concourse/worker/workercmd" + "github.com/jessevdk/go-flags" ) type ConcourseCommand struct { Version func() `short:"v" long:"version" description:"Print the version of Concourse and exit"` - Web WebCommand `command:"web" description:"Run the web UI and build scheduler."` - Worker WorkerCommand `command:"worker" description:"Run and register a worker."` - Migrate atccmd.Migration `command:"migrate" description:"Run database migrations."` + Web WebCommand `command:"web" description:"Run the web UI and build scheduler."` + Worker workercmd.WorkerCommand `command:"worker" description:"Run and register a worker."` + Migrate atccmd.Migration `command:"migrate" description:"Run database migrations."` Quickstart QuickstartCommand `command:"quickstart" description:"Run both 'web' and 'worker' together, auto-wired. Not recommended for production."` @@ -22,8 +23,8 @@ type ConcourseCommand struct { GenerateKey GenerateKeyCommand `command:"generate-key" description:"Generate RSA key for use with Concourse components."` } -func (cmd ConcourseCommand) lessenRequirements(parser *flags.Parser) { - cmd.Quickstart.lessenRequirements(parser.Find("quickstart")) - cmd.Web.lessenRequirements(parser.Find("web")) - cmd.Worker.lessenRequirements("", parser.Find("worker")) +func (cmd ConcourseCommand) LessenRequirements(parser *flags.Parser) { + cmd.Quickstart.LessenRequirements(parser.Find("quickstart")) + cmd.Web.LessenRequirements(parser.Find("web")) + cmd.Worker.LessenRequirements("", parser.Find("worker")) } diff --git a/cmd/concourse/main.go b/cmd/concourse/main.go index f7db8588e..253264bf5 100644 --- a/cmd/concourse/main.go +++ b/cmd/concourse/main.go @@ -21,7 +21,7 @@ func main() { parser := flags.NewParser(&cmd, flags.HelpFlag|flags.PassDoubleDash) parser.NamespaceDelimiter = "-" - cmd.lessenRequirements(parser) + cmd.LessenRequirements(parser) cmd.Web.WireDynamicFlags(parser.Command.Find("web")) cmd.Quickstart.WebCommand.WireDynamicFlags(parser.Command.Find("quickstart")) diff --git a/cmd/concourse/quickstart.go b/cmd/concourse/quickstart.go index 3dca67a29..55972cd85 100644 --- a/cmd/concourse/quickstart.go +++ b/cmd/concourse/quickstart.go @@ -6,8 +6,10 @@ import ( "fmt" "os" + concourseCmd "github.com/concourse/concourse/cmd" + "github.com/concourse/concourse/worker/workercmd" "github.com/concourse/flag" - flags "github.com/jessevdk/go-flags" + "github.com/jessevdk/go-flags" "github.com/tedsuo/ifrit" "github.com/tedsuo/ifrit/grouper" "github.com/tedsuo/ifrit/sigmon" @@ -15,13 +17,13 @@ import ( ) type QuickstartCommand struct { - *WebCommand `group:"Web Configuration"` - *WorkerCommand `group:"Worker Configuration" namespace:"worker"` + *WebCommand `group:"Web Configuration"` + *workercmd.WorkerCommand `group:"Worker Configuration" namespace:"worker"` } -func (cmd QuickstartCommand) lessenRequirements(command *flags.Command) { - cmd.WebCommand.lessenRequirements(command) - cmd.WorkerCommand.lessenRequirements("worker-", command) +func (cmd QuickstartCommand) LessenRequirements(command *flags.Command) { + cmd.WebCommand.LessenRequirements(command) + cmd.WorkerCommand.LessenRequirements("worker-", command) // autogenerated command.FindOptionByLongName("session-signing-key").Required = false @@ -106,9 +108,9 @@ func (cmd *QuickstartCommand) Runner(args []string) (ifrit.Runner, error) { return grouper.NewParallel(os.Interrupt, grouper.Members{ { Name: "web", - Runner: NewLoggingRunner(logger.Session("web-runner"), webRunner)}, + Runner: concourseCmd.NewLoggingRunner(logger.Session("web-runner"), webRunner)}, { Name: "worker", - Runner: NewLoggingRunner(logger.Session("worker-runner"), workerRunner)}, + Runner: concourseCmd.NewLoggingRunner(logger.Session("worker-runner"), workerRunner)}, }), nil } diff --git a/cmd/concourse/web.go b/cmd/concourse/web.go index 757dccd84..48ba3445e 100644 --- a/cmd/concourse/web.go +++ b/cmd/concourse/web.go @@ -6,10 +6,12 @@ import ( "fmt" "os" + concourseCmd "github.com/concourse/concourse/cmd" + "github.com/concourse/concourse/atc/atccmd" "github.com/concourse/concourse/tsa/tsacmd" "github.com/concourse/flag" - flags "github.com/jessevdk/go-flags" + "github.com/jessevdk/go-flags" "github.com/tedsuo/ifrit" "github.com/tedsuo/ifrit/grouper" "github.com/tedsuo/ifrit/sigmon" @@ -22,7 +24,7 @@ type WebCommand struct { *tsacmd.TSACommand `group:"TSA Configuration" namespace:"tsa"` } -func (WebCommand) lessenRequirements(command *flags.Command) { +func (WebCommand) LessenRequirements(command *flags.Command) { // defaults to atc external URL command.FindOptionByLongName("tsa-atc-url").Required = false @@ -41,7 +43,7 @@ func (cmd *WebCommand) Execute(args []string) error { func (cmd *WebCommand) Runner(args []string) (ifrit.Runner, error) { if cmd.RunCommand.CLIArtifactsDir == "" { - cmd.RunCommand.CLIArtifactsDir = flag.Dir(discoverAsset("fly-assets")) + cmd.RunCommand.CLIArtifactsDir = flag.Dir(concourseCmd.DiscoverAsset("fly-assets")) } cmd.populateTSAFlagsFromATCFlags() @@ -60,11 +62,11 @@ func (cmd *WebCommand) Runner(args []string) (ifrit.Runner, error) { return grouper.NewParallel(os.Interrupt, grouper.Members{ { Name: "atc", - Runner: NewLoggingRunner(logger.Session("atc-runner"), atcRunner), + Runner: concourseCmd.NewLoggingRunner(logger.Session("atc-runner"), atcRunner), }, { Name: "tsa", - Runner: NewLoggingRunner(logger.Session("tsa-runner"), tsaRunner), + Runner: concourseCmd.NewLoggingRunner(logger.Session("tsa-runner"), tsaRunner), }, }), nil } diff --git a/cmd/concourse/discover_asset.go b/cmd/discover_asset.go similarity index 88% rename from cmd/concourse/discover_asset.go rename to cmd/discover_asset.go index 6225daee8..1f0fe8844 100644 --- a/cmd/concourse/discover_asset.go +++ b/cmd/discover_asset.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "os" @@ -8,7 +8,7 @@ import ( // discoverAsset will find an asset path relative to the executable, assuming // the executable is installed as /usr/local/concourse/bin/concourse, and the // asset lives under /usr/local/concourse -func discoverAsset(name string) string { +func DiscoverAsset(name string) string { self, err := os.Executable() if err != nil { return "" diff --git a/cmd/concourse/logging_runner.go b/cmd/logging_runner.go similarity index 97% rename from cmd/concourse/logging_runner.go rename to cmd/logging_runner.go index f11671acb..23abacd72 100644 --- a/cmd/concourse/logging_runner.go +++ b/cmd/logging_runner.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "os" diff --git a/cmd/concourse/logging_runner_test.go b/cmd/logging_runner_test.go similarity index 96% rename from cmd/concourse/logging_runner_test.go rename to cmd/logging_runner_test.go index c0eb122e5..bac2396ff 100644 --- a/cmd/concourse/logging_runner_test.go +++ b/cmd/logging_runner_test.go @@ -1,11 +1,11 @@ -package main_test +package cmd_test import ( "errors" "os" "code.cloudfoundry.org/lager/lagertest" - . "github.com/concourse/concourse/cmd/concourse" + . "github.com/concourse/concourse/cmd" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/tedsuo/ifrit" diff --git a/fly/commands/login.go b/fly/commands/login.go index 0d6620003..606a5ace4 100644 --- a/fly/commands/login.go +++ b/fly/commands/login.go @@ -323,7 +323,7 @@ func listenForTokenCallback(tokenChannel chan string, errorChannel chan error, p w.Header().Set("Access-Control-Allow-Origin", targetUrl) tokenChannel <- r.FormValue("token") w.WriteHeader(200) - _,_ = fmt.Fprint(w, "token received by fly") + _, _ = fmt.Fprint(w, "token received by fly") }), } diff --git a/cmd/concourse/cmd_runner.go b/worker/workercmd/cmd_runner.go similarity index 96% rename from cmd/concourse/cmd_runner.go rename to worker/workercmd/cmd_runner.go index 91d06fe9a..6943b5e3e 100644 --- a/cmd/concourse/cmd_runner.go +++ b/worker/workercmd/cmd_runner.go @@ -1,4 +1,4 @@ -package main +package workercmd import ( "os" diff --git a/cmd/concourse/dns.go b/worker/workercmd/dns.go similarity index 97% rename from cmd/concourse/dns.go rename to worker/workercmd/dns.go index 081a6be97..1e1ddc373 100644 --- a/cmd/concourse/dns.go +++ b/worker/workercmd/dns.go @@ -1,4 +1,4 @@ -package main +package workercmd import ( "fmt" diff --git a/cmd/concourse/garden_server_runner.go b/worker/workercmd/garden_server_runner.go similarity index 96% rename from cmd/concourse/garden_server_runner.go rename to worker/workercmd/garden_server_runner.go index 12abebb27..fe309c06b 100644 --- a/cmd/concourse/garden_server_runner.go +++ b/worker/workercmd/garden_server_runner.go @@ -1,4 +1,4 @@ -package main +package workercmd import ( "os" diff --git a/cmd/concourse/houdini.go b/worker/workercmd/houdini.go similarity index 97% rename from cmd/concourse/houdini.go rename to worker/workercmd/houdini.go index fa9343c90..1529e54da 100644 --- a/cmd/concourse/houdini.go +++ b/worker/workercmd/houdini.go @@ -1,4 +1,4 @@ -package main +package workercmd import ( "fmt" diff --git a/cmd/concourse/worker.go b/worker/workercmd/worker.go similarity index 93% rename from cmd/concourse/worker.go rename to worker/workercmd/worker.go index f8bf01f75..54582aa1d 100644 --- a/cmd/concourse/worker.go +++ b/worker/workercmd/worker.go @@ -1,4 +1,4 @@ -package main +package workercmd import ( "fmt" @@ -13,6 +13,7 @@ import ( "github.com/concourse/baggageclaim/baggageclaimcmd" bclient "github.com/concourse/baggageclaim/client" "github.com/concourse/concourse" + concourseCmd "github.com/concourse/concourse/cmd" "github.com/concourse/concourse/worker" "github.com/concourse/flag" "github.com/tedsuo/ifrit" @@ -70,7 +71,7 @@ func (cmd *WorkerCommand) Execute(args []string) error { func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) { if cmd.ResourceTypes == "" { - cmd.ResourceTypes = flag.Dir(discoverAsset("resource-types")) + cmd.ResourceTypes = flag.Dir(concourseCmd.DiscoverAsset("resource-types")) } logger, _ := cmd.Logger.Logger("worker") @@ -150,18 +151,18 @@ func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) { if !cmd.gardenIsExternal() { members = append(members, grouper.Member{ Name: "garden", - Runner: NewLoggingRunner(logger.Session("garden-runner"), gardenRunner), + Runner: concourseCmd.NewLoggingRunner(logger.Session("garden-runner"), gardenRunner), }) } members = append(members, grouper.Members{ { Name: "baggageclaim", - Runner: NewLoggingRunner(logger.Session("baggageclaim-runner"), baggageclaimRunner), + Runner: concourseCmd.NewLoggingRunner(logger.Session("baggageclaim-runner"), baggageclaimRunner), }, { Name: "debug", - Runner: NewLoggingRunner( + Runner: concourseCmd.NewLoggingRunner( logger.Session("debug-runner"), http_server.New( fmt.Sprintf("%s:%d", cmd.DebugBindIP.IP, cmd.DebugBindPort), @@ -171,7 +172,7 @@ func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) { }, { Name: "healthcheck", - Runner: NewLoggingRunner( + Runner: concourseCmd.NewLoggingRunner( logger.Session("healthcheck-runner"), http_server.New( fmt.Sprintf("%s:%d", cmd.HealthcheckBindIP.IP, cmd.HealthcheckBindPort), @@ -181,21 +182,21 @@ func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) { }, { Name: "beacon", - Runner: NewLoggingRunner( + Runner: concourseCmd.NewLoggingRunner( logger.Session("beacon-runner"), beaconRunner, ), }, { Name: "container-sweeper", - Runner: NewLoggingRunner( + Runner: concourseCmd.NewLoggingRunner( logger.Session("container-sweeper"), containerSweeper, ), }, { Name: "volume-sweeper", - Runner: NewLoggingRunner( + Runner: concourseCmd.NewLoggingRunner( logger.Session("volume-sweeper"), volumeSweeper, ), diff --git a/cmd/concourse/worker_config.go b/worker/workercmd/worker_config.go similarity index 98% rename from cmd/concourse/worker_config.go rename to worker/workercmd/worker_config.go index 5cc730d8f..2cc2d914e 100644 --- a/cmd/concourse/worker_config.go +++ b/worker/workercmd/worker_config.go @@ -1,4 +1,4 @@ -package main +package workercmd import ( "time" diff --git a/cmd/concourse/worker_linux.go b/worker/workercmd/worker_linux.go similarity index 95% rename from cmd/concourse/worker_linux.go rename to worker/workercmd/worker_linux.go index 056f312f5..d7a708904 100644 --- a/cmd/concourse/worker_linux.go +++ b/worker/workercmd/worker_linux.go @@ -1,4 +1,4 @@ -package main +package workercmd import ( "encoding/json" @@ -15,8 +15,9 @@ import ( "code.cloudfoundry.org/lager" "code.cloudfoundry.org/localip" "github.com/concourse/concourse/atc" + concourseCmd "github.com/concourse/concourse/cmd" "github.com/concourse/flag" - flags "github.com/jessevdk/go-flags" + "github.com/jessevdk/go-flags" "github.com/tedsuo/ifrit" "github.com/tedsuo/ifrit/grouper" ) @@ -34,7 +35,7 @@ type GardenBackend struct { DNS DNSConfig `group:"DNS Proxy Configuration" namespace:"dns-proxy"` } -func (cmd WorkerCommand) lessenRequirements(prefix string, command *flags.Command) { +func (cmd WorkerCommand) LessenRequirements(prefix string, command *flags.Command) { // configured as work-dir/volumes command.FindOptionByLongName(prefix + "baggageclaim-volumes").Required = false } @@ -76,7 +77,7 @@ func (cmd *WorkerCommand) gardenRunner(logger lager.Logger) (atc.Worker, ifrit.R } func (cmd *WorkerCommand) gdnRunner(logger lager.Logger) (ifrit.Runner, error) { - if binDir := discoverAsset("bin"); binDir != "" { + if binDir := concourseCmd.DiscoverAsset("bin"); binDir != "" { // ensure packaged 'gdn' executable is available in $PATH err := os.Setenv("PATH", binDir+":"+os.Getenv("PATH")) if err != nil { @@ -130,7 +131,7 @@ func (cmd *WorkerCommand) gdnRunner(logger lager.Logger) (ifrit.Runner, error) { members = append(members, grouper.Member{ Name: "dns-proxy", - Runner: NewLoggingRunner( + Runner: concourseCmd.NewLoggingRunner( logger.Session("dns-proxy-runner"), dnsProxyRunner, ), @@ -153,7 +154,7 @@ func (cmd *WorkerCommand) gdnRunner(logger lager.Logger) (ifrit.Runner, error) { members = append(members, grouper.Member{ Name: "gdn", - Runner: NewLoggingRunner( + Runner: concourseCmd.NewLoggingRunner( logger.Session("gdn-runner"), cmdRunner{gdnCmd}, ), diff --git a/cmd/concourse/worker_nonlinux.go b/worker/workercmd/worker_nonlinux.go similarity index 86% rename from cmd/concourse/worker_nonlinux.go rename to worker/workercmd/worker_nonlinux.go index c3fa14941..f4eccf418 100644 --- a/cmd/concourse/worker_nonlinux.go +++ b/worker/workercmd/worker_nonlinux.go @@ -1,13 +1,13 @@ // +build !linux -package main +package workercmd import ( "runtime" "code.cloudfoundry.org/lager" "github.com/concourse/concourse/atc" - flags "github.com/jessevdk/go-flags" + "github.com/jessevdk/go-flags" "github.com/tedsuo/ifrit" ) @@ -15,7 +15,7 @@ type GardenBackend struct{} type Certs struct{} -func (cmd WorkerCommand) lessenRequirements(prefix string, command *flags.Command) { +func (cmd WorkerCommand) LessenRequirements(prefix string, command *flags.Command) { // created in the work-dir command.FindOptionByLongName(prefix + "baggageclaim-volumes").Required = false }