anchor.diff:          sprintf " delete-releases%s" (deleteCommandLine opts)
       | ListEnvironments -> 
           " list-environments"
  +    | Push opts -> 
  +        sprintf " push%s" (pushCommandLine opts)
   
   let serverCommandLineForTracing (opts: OctoServerOptions) = serverCommandLine { opts with ApiKey = "(Removed for security purposes)" }
   
  
positive.code:     /// Maximum (inclusive) version number for the range of versions to delete
      MaxVersion  : string }
  
  /// Option type for selecting one command
  type OctoCommand = 
  | CreateRelease of CreateReleaseOptions * DeployReleaseOptions option
  | DeployRelease of DeployReleaseOptions
  | DeleteRelease of DeleteReleaseOptions
  | ListEnvironments
  
  /// Complete Octo.exe CLI params
  type OctoParams = {
  
negative.code:     [ (optionalStringParam "server" (liftString opts.Server))
        (optionalStringParam "apikey" (liftString opts.ApiKey)) ] 
      |> List.fold (+) ""
  
  /// [omit]
  let pushCommandLine (opts : PushOptions) =
      [ stringListParam "package" opts.Packages
        flag "replace-existing" opts.ReplaceExisting ]
      |> List.fold (+) ""     
  
  /// Maps a command to string input for the octopus tools cli.
  let commandLine command =
  