def push(template, options = {})
      args = ['push']
      args << "-message=#{options[:message]}" if options.key?(:message)
      args << "-name=#{options[:name]}" if options.key?(:name)
      args << "-token=#{options[:token]}" if options.key?(:token)
      args << "-var-file=#{options[:var_file]}" if options.key?(:var_file)

      vars = options[:vars] || {}
      vars.each { |key, val| args << "-var '#{key}=#{val}'" }

      args << template

      Packer::Output::Push.new(command(args, options[:live_stream]))
    end
def push(template, options = {})
      args = ['push']
      args << "-message=#{options[:message]}" if options.key?(:message)
      args << "-name=#{options[:name]}" if options.key?(:name)
      args << "-token=#{options[:token]}" if options.key?(:token)
      args << "-var-file=#{options[:var_file]}" if options.key?(:var_file)

      vars = options[:vars] || {}
      vars.each { |key, val| args << "-var '#{key}=#{val}'" }

      args << template

      Packer::Output::Push.new(command(args, options[:live_stream]))
    end
Executes +packer push+.

 Push the given template and supporting files to a Packer build service
 such as Atlas.

 If a build configuration for the given template does not exist, it will
 be created automatically. If the build configuration already exists, a
 new version will be created with this template and the supporting files.

 Additional configuration options (such as Atlas server URL and files to
 include) may be specified in the "push" section of the Packer template.
 Please see the online documentation about these configurables.

 @param [String,Packer::Template] template the Packer template
 @param [Hash] options
 @option options [String] :message a message to identify the purpose of
   changes in this Packer template much like a VCS commit message
 @option options [String] :name the destination build in Atlas. This is
   in a format "username/name".
 @option options [String] :token the access token to use when uploading
 @option options [Hash] :vars variables for templates
 @option options [String] :var_file path to JSON file containing user
   variables
 @option options [IO] :live_stream an IO object to stream packer output to
   in addition to saving output in the output object.
 @return [Packer::Output::Push]