{"id":20219947,"url":"https://github.com/torba-rb/suvii","last_synced_at":"2026-05-13T09:01:43.717Z","repository":{"id":59156921,"uuid":"56880962","full_name":"torba-rb/suvii","owner":"torba-rb","description":"Read from a remote tar.gz/zip archive easily","archived":false,"fork":false,"pushed_at":"2016-04-24T08:19:40.000Z","size":338,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-09T22:57:18.727Z","etag":null,"topics":["targz","zip"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/torba-rb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-22T19:43:52.000Z","updated_at":"2017-10-24T11:43:23.000Z","dependencies_parsed_at":"2022-09-13T20:03:38.171Z","dependency_job_id":null,"html_url":"https://github.com/torba-rb/suvii","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/torba-rb/suvii","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torba-rb%2Fsuvii","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torba-rb%2Fsuvii/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torba-rb%2Fsuvii/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torba-rb%2Fsuvii/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/torba-rb","download_url":"https://codeload.github.com/torba-rb/suvii/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torba-rb%2Fsuvii/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32975183,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T06:31:55.726Z","status":"ssl_error","status_checked_at":"2026-05-13T06:31:51.336Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["targz","zip"],"created_at":"2024-11-14T06:44:21.485Z","updated_at":"2026-05-13T09:01:43.684Z","avatar_url":"https://github.com/torba-rb.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Suvii\n\n[![Build Status](https://img.shields.io/travis/torba-rb/suvii.svg)](https://travis-ci.org/torba-rb/suvii)\n[![Gem version](https://img.shields.io/gem/v/suvii.svg)](https://rubygems.org/gems/suvii)\n\n**Suvii** is a library that abstracts content reading from a remote tar.gz/zip archive. It fetches\nthe archive and extracts it to a temp directory.\n\n## Name origin\n\n\"Сувій\" [[suʋii̯][suvii-pronounce]] in Ukrainian can mean a scroll, something which is rolled up or\neven a package.\n\n## Status\n\nProduction ready.\n\n## Documentation\n\n[Released version](http://rubydoc.info/gems/suvii/0.1.0)\n\n\n## Installation\n\nAdd this line to your application's Gemfile and run `bundle`:\n\n```ruby\ngem 'suvii'\n```\n\n## Usage\n\n```ruby\ntemp_directory = Suvii.fetch(\"https://registry.npmjs.org/coffee-script/-/coffee-script-2.0.0.tgz\")\n# do whatever you need with extracted content\nDir.glob(\"#{temp_directory}/**/*\").each do |entry|\n  # ...\nend\n```\n\nNote, that fetching same URL twice will unpack to another temp directory. Such design decision was\nbased on assumption, that generally you don't need everything in an archive, or even have to modify\nsomething. This extra copy/modify step should be totally independent from extraction, and you shouldn't\nworry about cleanup, or that another process could mess things up.\n\n## Origin\n\nExtracted from [Torba][torba-github] library since it looks more like a standalone component.\n\n[suvii-pronounce]: https://commons.wikimedia.org/wiki/File:Uk-%D1%81%D1%83%D0%B2%D1%96%D0%B9.ogg\n[torba-github]: https://github.com/torba-rb/torba\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorba-rb%2Fsuvii","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftorba-rb%2Fsuvii","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorba-rb%2Fsuvii/lists"}