# File lib/heroku/commands/pgbackups.rb, line 84
    def restore
      db_id = extract_option("--db")
      confirm = extract_option("--confirm")
      to_name, to_url = resolve_db_id(db_id, :default => "DATABASE_URL")
      db_id = to_name

      abort(" !   No database addon detected.") unless to_url

      backup_id = args.shift

      if backup_id =~ /^http(s?):\/\//
        from_url  = backup_id
        from_name = "EXTERNAL_BACKUP"
        from_uri  = URI.parse backup_id
        backup_id = from_uri.path.empty? ? from_uri : File.basename(from_uri.path)
      else
        if backup_id
          backup = pgbackup_client.get_backup(backup_id)
          abort("Backup #{backup_id} already deleted.") if backup["destroyed_at"]
        else
          backup = pgbackup_client.get_latest_backup
          to_uri = URI.parse backup["to_url"]
          backup_id = File.basename(to_uri.path, '.*')
          backup_id = "#{backup_id} (most recent)"
        end

        from_url  = backup["to_url"]
        from_name = "BACKUP"
      end

      db_display = db_id
      db_display += " (DATABASE_URL)" if db_id != "DATABASE_URL" && config_vars[db_id] == config_vars["DATABASE_URL"]
      padding = " " * "#{db_display}  <---restore---  ".length
      display "\n#{db_display}  <---restore---  #{backup_id}"
      if backup
        display padding + "#{backup['from_name']}"
        display padding + "#{backup['created_at']}"
        display padding + "#{backup['size']}"
      end

      @args += ['--confirm', confirm]
      if confirm_command
        restore = transfer!(from_url, from_name, to_url, to_name)
        restore = poll_transfer!(restore)

        if restore["error_at"]
          message  =   " !    An error occurred and your restore did not finish."
          message += "\n !    The backup url is invalid. Use `pgbackups:url` to generate a new temporary URL." if restore['log'] =~ /Invalid dump format: .*: XML  document text/
          abort(message)
        end
      end
    end