Skip to content

Instantly share code, notes, and snippets.

@spion06
Created February 26, 2018 22:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spion06/611d0593f893e5c0e9a4bd274c808a0c to your computer and use it in GitHub Desktop.
Save spion06/611d0593f893e5c0e9a4bd274c808a0c to your computer and use it in GitHub Desktop.
require 'open-uri'
require "rubygems/package"
require "zlib"
def is_gzip_file?(path)
# You cannot write "\x1F\x8B" because the default encoding of
# ruby >= 1.9.3 is UTF-8 and 8B is an invalid in UTF-8.
IO.binread(path, 2) == [0x1F, 0x8B].pack("C*")
end
def reader(&block)
raw = File.open(archive, "rb")
file = if is_gzip_file?(archive)
Zlib::GzipReader.wrap(raw)
else
raw
end
Gem::Package::TarReader.new(file, &block)
ensure
if file
file.close unless file.closed?
file = nil
end
if raw
raw.close unless raw.closed?
raw = nil
end
end
def archive
return @archive if @archive
tar_url="https://supermarket.chef.io/api/v1/cookbooks/cerner_splunk/versions/2.14.0/download"
archive = URI.parse(tar_url).read
file_name = 'test-file.tar.gz'
File.open(file_name, 'w'){ |f| f.write archive }
@archive = file_name
end
reader do |tar|
tar.each do |entry|
puts entry.full_name
end
end
$ gem env version
2.7.6
$ ruby test.rb
/Users/km022926/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/package/tar_header.rb:128:in `strict_oct': "\x80\x00\x00\x00tf\xE2\xC7" is not an octal string (ArgumentError)
	from /Users/km022926/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/package/tar_header.rb:108:in `from'
	from /Users/km022926/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/package/tar_reader.rb:59:in `each'
	from test.rb:43:in `block in <main>'
	from /Users/km022926/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/package/tar_reader.rb:29:in `new'
	from test.rb:20:in `reader'
	from test.rb:42:in `<main>'
$ gem env version
2.7.5
$ ruby test.rb
cerner_splunk/
cerner_splunk/.foodcritic
cerner_splunk/.gitignore
cerner_splunk/.rubocop.yml
cerner_splunk/.travis.yml
cerner_splunk/attributes/
cerner_splunk/attributes/_configure.rb
cerner_splunk/attributes/_install.rb
cerner_splunk/attributes/_user_management.rb
cerner_splunk/Berksfile
cerner_splunk/chefignore
cerner_splunk/CONTRIBUTING.md
cerner_splunk/docs/
cerner_splunk/docs/attributes.md
cerner_splunk/docs/contributing.md
cerner_splunk/docs/databags.md
cerner_splunk/docs/README.md
cerner_splunk/docs/recipes.md
cerner_splunk/docs/resources.md
cerner_splunk/docs/vagrant.md
cerner_splunk/Gemfile
cerner_splunk/libraries/
cerner_splunk/libraries/alerts.rb
cerner_splunk/libraries/authentication.rb
cerner_splunk/libraries/conf.rb
cerner_splunk/libraries/conf_template.rb
cerner_splunk/libraries/databag.rb
cerner_splunk/libraries/lwrp.rb
cerner_splunk/libraries/matchers.rb
cerner_splunk/libraries/outputs.rb
cerner_splunk/libraries/passive_sensitive.rb
cerner_splunk/libraries/rc4.rb
cerner_splunk/libraries/recipe.rb
cerner_splunk/libraries/roles.rb
cerner_splunk/libraries/splunk_app.rb
cerner_splunk/libraries/splunk_password.rb
cerner_splunk/libraries/splunk_template.rb
cerner_splunk/libraries/tarball.rb
cerner_splunk/libraries/unit_converter.rb
cerner_splunk/LICENSE
cerner_splunk/metadata.json
cerner_splunk/metadata.rb
cerner_splunk/providers/
cerner_splunk/providers/forwarder_monitors.rb
cerner_splunk/providers/sh_cluster.rb
cerner_splunk/README.md
cerner_splunk/recipes/
cerner_splunk/recipes/_cleanup_aeon.rb
cerner_splunk/recipes/_configure.rb
cerner_splunk/recipes/_configure_alerts.rb
cerner_splunk/recipes/_configure_apps.rb
cerner_splunk/recipes/_configure_authentication.rb
cerner_splunk/recipes/_configure_indexes.rb
cerner_splunk/recipes/_configure_inputs.rb
cerner_splunk/recipes/_configure_outputs.rb
cerner_splunk/recipes/_configure_roles.rb
cerner_splunk/recipes/_configure_secret.rb
cerner_splunk/recipes/_configure_server.rb
cerner_splunk/recipes/_configure_shc_alerts.rb
cerner_splunk/recipes/_configure_shc_authentication.rb
cerner_splunk/recipes/_configure_shc_outputs.rb
cerner_splunk/recipes/_configure_shc_roles.rb
cerner_splunk/recipes/_configure_ui.rb
cerner_splunk/recipes/_generate_password.rb
cerner_splunk/recipes/_install.rb
cerner_splunk/recipes/_install_server.rb
cerner_splunk/recipes/_migrate_forwarder.rb
cerner_splunk/recipes/_restart_marker.rb
cerner_splunk/recipes/_start.rb
cerner_splunk/recipes/_user_management.rb
cerner_splunk/recipes/cluster_master.rb
cerner_splunk/recipes/cluster_slave.rb
cerner_splunk/recipes/default.rb
cerner_splunk/recipes/forwarder.rb
cerner_splunk/recipes/heavy_forwarder.rb
cerner_splunk/recipes/image_prep.rb
cerner_splunk/recipes/license_server.rb
cerner_splunk/recipes/search_head.rb
cerner_splunk/recipes/server.rb
cerner_splunk/recipes/shc_captain.rb
cerner_splunk/recipes/shc_deployer.rb
cerner_splunk/recipes/shc_remove_search_head.rb
cerner_splunk/recipes/shc_search_head.rb
cerner_splunk/resources/
cerner_splunk/resources/forwarder_monitors.rb
cerner_splunk/resources/sh_cluster.rb
cerner_splunk/spec/
cerner_splunk/spec/cookbooks/
cerner_splunk/spec/cookbooks/cerner_splunk_test/
cerner_splunk/spec/cookbooks/cerner_splunk_test/attributes/
cerner_splunk/spec/cookbooks/cerner_splunk_test/attributes/default.rb
cerner_splunk/spec/cookbooks/cerner_splunk_test/metadata.rb
cerner_splunk/spec/cookbooks/cerner_splunk_test/providers/
cerner_splunk/spec/cookbooks/cerner_splunk_test/providers/lwrp.rb
cerner_splunk/spec/cookbooks/cerner_splunk_test/recipes/
cerner_splunk/spec/cookbooks/cerner_splunk_test/recipes/_splunk_service.rb
cerner_splunk/spec/cookbooks/cerner_splunk_test/recipes/configure_guids.rb
cerner_splunk/spec/cookbooks/cerner_splunk_test/recipes/default.rb
cerner_splunk/spec/cookbooks/cerner_splunk_test/resources/
cerner_splunk/spec/cookbooks/cerner_splunk_test/resources/lwrp.rb
cerner_splunk/spec/cookbooks/cerner_splunk_test/templates/
cerner_splunk/spec/cookbooks/cerner_splunk_test/templates/default/
cerner_splunk/spec/cookbooks/cerner_splunk_test/templates/default/access.log.erb
cerner_splunk/spec/cookbooks/cerner_splunk_test/templates/default/instance.cfg.erb
cerner_splunk/spec/unit/
cerner_splunk/spec/unit/libraries/
cerner_splunk/spec/unit/libraries/recipe_spec.rb
cerner_splunk/spec/unit/libraries/splunk_app_spec.rb
cerner_splunk/spec/unit/libraries/splunk_password_spec.rb
cerner_splunk/spec/unit/libraries/unit_converter_spec.rb
cerner_splunk/spec/unit/recipes/
cerner_splunk/spec/unit/recipes/_configure_apps_spec.rb
cerner_splunk/spec/unit/recipes/_configure_indexes_spec.rb
cerner_splunk/spec/unit/recipes/_configure_secret_spec.rb
cerner_splunk/spec/unit/recipes/_configure_shc_alerts_spec.rb
cerner_splunk/spec/unit/recipes/_configure_shc_authentication_spec.rb
cerner_splunk/spec/unit/recipes/_configure_shc_outputs_spec.rb
cerner_splunk/spec/unit/recipes/_configure_shc_roles_spec.rb
cerner_splunk/spec/unit/recipes/_configure_spec.rb
cerner_splunk/spec/unit/recipes/_install_spec.rb
cerner_splunk/spec/unit/recipes/_migrate_forwarder_spec.rb
cerner_splunk/spec/unit/recipes/_restart_marker_spec.rb
cerner_splunk/spec/unit/recipes/_start_spec.rb
cerner_splunk/spec/unit/recipes/forwarder_spec.rb
cerner_splunk/spec/unit/recipes/heavy_forwarder_spec.rb
cerner_splunk/spec/unit/recipes/shc_captain_spec.rb
cerner_splunk/spec/unit/recipes/shc_deployer_spec.rb
cerner_splunk/spec/unit/recipes/shc_remove_search_head_spec.rb
cerner_splunk/spec/unit/recipes/shc_search_head_spec.rb
cerner_splunk/spec/unit/resources/
cerner_splunk/spec/unit/resources/sh_cluster.rb
cerner_splunk/spec/unit/spec_helper.rb
cerner_splunk/templates/
cerner_splunk/templates/default/
cerner_splunk/templates/default/generic.conf.erb
cerner_splunk/Thorfile
cerner_splunk/vagrant_repo/
cerner_splunk/vagrant_repo/.chef/
cerner_splunk/vagrant_repo/.chef/knife.rb
cerner_splunk/vagrant_repo/apps/
cerner_splunk/vagrant_repo/apps/my_app/
cerner_splunk/vagrant_repo/apps/my_app/default/
cerner_splunk/vagrant_repo/apps/my_app/default/app.conf
cerner_splunk/vagrant_repo/apps/my_app/default/data/
cerner_splunk/vagrant_repo/apps/my_app/default/data/ui/
cerner_splunk/vagrant_repo/apps/my_app/default/data/ui/nav/
cerner_splunk/vagrant_repo/apps/my_app/default/data/ui/nav/default.xml
cerner_splunk/vagrant_repo/apps/my_app/default/data/ui/views/
cerner_splunk/vagrant_repo/apps/my_app/default/data/ui/views/lorem_ipsum.xml
cerner_splunk/vagrant_repo/apps/my_app/metadata/
cerner_splunk/vagrant_repo/apps/my_app/metadata/default.meta
cerner_splunk/vagrant_repo/clients/
cerner_splunk/vagrant_repo/clients/c1_master.json
cerner_splunk/vagrant_repo/clients/c1_search.json
cerner_splunk/vagrant_repo/clients/c1_slave1.json
cerner_splunk/vagrant_repo/clients/c1_slave2.json
cerner_splunk/vagrant_repo/clients/c1_slave3.json
cerner_splunk/vagrant_repo/clients/c2_boot1.json
cerner_splunk/vagrant_repo/clients/c2_boot2.json
cerner_splunk/vagrant_repo/clients/c2_captain.json
cerner_splunk/vagrant_repo/clients/c2_deployer.json
cerner_splunk/vagrant_repo/clients/c2_newnode.json
cerner_splunk/vagrant_repo/clients/f_debian.json
cerner_splunk/vagrant_repo/clients/f_default.json
cerner_splunk/vagrant_repo/clients/f_heavy.json
cerner_splunk/vagrant_repo/clients/f_win2012r2.json
cerner_splunk/vagrant_repo/clients/knife_workstation.json
cerner_splunk/vagrant_repo/clients/s_license.json
cerner_splunk/vagrant_repo/clients/s_standalone.json
cerner_splunk/vagrant_repo/data_bags/
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/alerts-vagrant.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/authnz-vagrant.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/cluster-apps-vagrant.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/cluster-standalone.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/cluster-vagrant.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/indexes-vagrant.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/license-vagrant.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/license_secrets.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/license_secrets_keys.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/passwords.json
cerner_splunk/vagrant_repo/data_bags/cerner_splunk/passwords_keys.json
cerner_splunk/vagrant_repo/encrypted_data_bag_secret
cerner_splunk/vagrant_repo/environments/
cerner_splunk/vagrant_repo/environments/splunk_license.json
cerner_splunk/vagrant_repo/environments/splunk_server.json
cerner_splunk/vagrant_repo/environments/splunk_standalone.json
cerner_splunk/vagrant_repo/fake-key.pem
cerner_splunk/vagrant_repo/files/
cerner_splunk/vagrant_repo/files/lookups/
cerner_splunk/vagrant_repo/files/lookups/index-owners.csv
cerner_splunk/vagrant_repo/files/lookups/test.txt
cerner_splunk/vagrant_repo/nodes/
cerner_splunk/vagrant_repo/nodes/c1_master.json
cerner_splunk/vagrant_repo/nodes/c1_search.json
cerner_splunk/vagrant_repo/nodes/c1_slave1.json
cerner_splunk/vagrant_repo/nodes/c1_slave2.json
cerner_splunk/vagrant_repo/nodes/c1_slave3.json
cerner_splunk/vagrant_repo/nodes/c2_boot1.json
cerner_splunk/vagrant_repo/nodes/c2_boot2.json
cerner_splunk/vagrant_repo/nodes/c2_captain.json
cerner_splunk/vagrant_repo/nodes/c2_deployer.json
cerner_splunk/vagrant_repo/nodes/c2_newnode.json
cerner_splunk/vagrant_repo/nodes/f_debian.json
cerner_splunk/vagrant_repo/nodes/f_default.json
cerner_splunk/vagrant_repo/nodes/f_heavy.json
cerner_splunk/vagrant_repo/nodes/f_win2012r2.json
cerner_splunk/vagrant_repo/nodes/s_license.json
cerner_splunk/vagrant_repo/nodes/s_standalone.json
cerner_splunk/vagrant_repo/pems/
cerner_splunk/vagrant_repo/pems/c1_master.pem
cerner_splunk/vagrant_repo/pems/c1_search.pem
cerner_splunk/vagrant_repo/pems/c1_slave1.pem
cerner_splunk/vagrant_repo/pems/c1_slave2.pem
cerner_splunk/vagrant_repo/pems/c1_slave3.pem
cerner_splunk/vagrant_repo/pems/c2_boot1.pem
cerner_splunk/vagrant_repo/pems/c2_boot2.pem
cerner_splunk/vagrant_repo/pems/c2_captain.pem
cerner_splunk/vagrant_repo/pems/c2_deployer.pem
cerner_splunk/vagrant_repo/pems/c2_newnode.pem
cerner_splunk/vagrant_repo/pems/f_debian.pem
cerner_splunk/vagrant_repo/pems/f_default.pem
cerner_splunk/vagrant_repo/pems/f_heavy.pem
cerner_splunk/vagrant_repo/pems/f_win2012r2.pem
cerner_splunk/vagrant_repo/pems/s_license.pem
cerner_splunk/vagrant_repo/pems/s_standalone.pem
cerner_splunk/vagrant_repo/roles/
cerner_splunk/vagrant_repo/roles/splunk_mirrors_local.json
cerner_splunk/vagrant_repo/roles/splunk_monitors.json
cerner_splunk/vagrant_repo/roles/splunk_monitors_windows.json
cerner_splunk/Vagrantfile
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment