     .command("ci [key]")
     .usage("[key] [options]")
     .description("Runs Cypress in CI Mode")
-    .option("-r, --reporter <reporter>", "runs a specific mocha reporter. pass a path to use a custom reporter. defaults to 'spec'")
-    .option("-p, --port <port>",         "runs cypress on a specific port. overrides any value in cypress.json. defaults to '2020'")
-    .option("-e, --env <env vars>",      "sets environment variables. overrides any value in cypress.json or cypress.env.json.")
+    .option("-r, --reporter <reporter>", text("reporter"))
+    .option("-p, --port <port>",         text("port"))
+    .option("-e, --env <env vars>",      text("env"))
     .action (key, opts) ->
       require("./commands/ci")(key, parseOpts(opts))
 

  program
    .command("install")
    .description("Installs Cypress")
    .option("-d, --destination <path>", "destination path to extract and install Cypress to.")
    .action (opts) ->
      require("./commands/install")(parseOpts(opts))


parseOpts = (opts) ->
  _.pick(opts, "spec", "reporter", "path", "destination", "port", "env")

descriptions = {
  destination: "destination path to extract and install Cypress to"
  spec:        "runs a specific spec file. defaults to 'all'"
  reporter:    "runs a specific mocha reporter. pass a path to use a custom reporter. defaults to 'spec'"
  port:        "runs cypress on a specific port. overrides any value in cypress.json. defaults to '2020'"
  env:         "sets environment variables. separate multiple values with a comma. overrides any value in cypress.json or cypress.env.json"
}

text = (d) ->
  descriptions[d] ? throw new Error("Could not find description for: #{d}")

module.exports = ->
  ## instantiate a new program for
  ## easier testability
