zzap 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/exe/zzap +35 -33
  3. data/lib/zzap/version.rb +1 -1
  4. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b9986011cf3b6f1fe0775d5d65eadc682dfc2ae
4
- data.tar.gz: 168c8885d21155511f0b79d9478d79b59fd89b6c
3
+ metadata.gz: f00054e2287c34f5f6d9bdbcfc6808b2b1eee10a
4
+ data.tar.gz: aae42f645fa7d7919eea50398adf1ea4046aa7f9
5
5
  SHA512:
6
- metadata.gz: 83b292a455fd9bf898484dabfb9f490d1773291ddfbd93af687394c2f0ed5f8571ad5fccd1174f7a54338a8606b867d8fa73c7458da29642265a5265369d07ca
7
- data.tar.gz: '0088ce8dee5c25ed434fec44eadf161fb688c7ac7b7921ccab92ad9fca2bb5791003d6fdcc27bb3c12fa87f27ad1351d7c40e705b63567e2222e27bce4020dde'
6
+ metadata.gz: 3f1fb1c04e163141f67c6eb202adc6b3add2f071ebc236bd1ac5292b92cf6bfea77da63b745b455c770db0e3451007b682b1f2b8a2beaf8ac310a80e9f0f0261
7
+ data.tar.gz: 9f923b3d926ea7c5b01ccb2daa6d155f7aa5fa8d797ce7cce5565a08d356ea612f0272875a034aa97c668ec7184ac9e81b3f4a0181eb4eab0ea07040dfff59cb
data/exe/zzap CHANGED
@@ -2,8 +2,7 @@
2
2
 
3
3
  require "pathname"
4
4
  require "open-uri"
5
- require "zlib"
6
- require "rubygems/package" # TarReader
5
+ require "zip"
7
6
  require "net/http"
8
7
  require "tempfile"
9
8
 
@@ -19,17 +18,17 @@ module Zzap
19
18
  def run
20
19
  abort("Target '#{target_name}' already exists! Aborting.") if File.exists?(target_name)
21
20
 
22
- tarball = Tempfile.new("zzap")
21
+ zipball = Tempfile.new("zzap")
23
22
 
24
- fetch_source(tarball)
25
- extract_tarball(tarball)
23
+ fetch_source(zipball)
24
+ extract_zipball(zipball)
26
25
  perform_rename
27
26
  perform_sub
28
27
 
29
28
  ensure
30
- if tarball
31
- tarball.close
32
- tarball.unlink
29
+ if zipball
30
+ zipball.close
31
+ zipball.unlink
33
32
  end
34
33
  end
35
34
 
@@ -60,47 +59,50 @@ module Zzap
60
59
  end
61
60
  end
62
61
 
63
- def fetch_source(tarball)
62
+ def fetch_source(zipball)
64
63
  case source
65
64
  when /\Ahttp/
66
65
  warn "Fetching #{source}"
67
66
  uri = URI.parse(source)
68
- tarball.write(uri.read)
67
+ zipball.write(uri.read)
68
+ zipball.rewind
69
69
  end
70
70
  end
71
71
 
72
- def extract_tarball(tarball)
73
- File.open(tarball.path, "rb") do |file|
74
- Zlib::GzipReader.wrap(file) do |gz|
75
- Gem::Package::TarReader.new(gz) do |tar|
76
- # Figure out leading root folder name
77
- root = tar.find(&:file?).full_name.split(File::SEPARATOR).shift
78
-
79
- tar.each do |entry|
80
- if entry.file?
81
- # Trim root folder name from full name
82
- full_name = Pathname(target_name) + Pathname(entry.full_name).sub(root + "/", "")
83
-
84
- FileUtils.mkdir_p(File.dirname(full_name))
85
- File.open(full_name, "wb") do |f|
86
- f.write(entry.read)
87
- end
88
- File.chmod(entry.header.mode, full_name)
89
- end
90
- end
91
- end
72
+ def extract_zipball(zipball)
73
+ require "zip"
74
+
75
+ Zip::File.open(zipball.path) do |zip_file|
76
+ root = zip_file.find(&:file?).name.split(File::SEPARATOR).shift
77
+
78
+ zip_file.each do |entry|
79
+ next unless entry.file?
80
+
81
+ full_name = Pathname(target_name) + Pathname(entry.name).sub(root + "/", "")
82
+
83
+ FileUtils.mkdir_p(File.dirname(full_name))
84
+ zip_file.extract(entry, full_name)
92
85
  end
93
86
  end
94
87
  end
95
88
 
96
89
  def self.run(argv)
97
- target_name = ARGV[0] || abort("Missing target")
98
- repo = ARGV[1] || abort("Missing repo")
90
+ target_name = ARGV[0] || abort(usage)
91
+ repo = ARGV[1] || abort(usage)
99
92
 
100
- source = "https://api.github.com/repos/#{repo}/tarball"
93
+ source = "https://api.github.com/repos/#{repo}/zipball"
101
94
 
102
95
  new(target_name, source).run
103
96
  end
97
+
98
+ def self.usage
99
+ <<~EOM
100
+ Usage: zzap target_name user_name/repo_name
101
+
102
+ target_name Snake cased folder name that will also be the application name
103
+ user_name/repo_name Github user and repository
104
+ EOM
105
+ end
104
106
  end
105
107
  end
106
108
 
@@ -1,3 +1,3 @@
1
1
  module Zzap
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zzap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Daniels
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-29 00:00:00.000000000 Z
11
+ date: 2017-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rubyzip
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.2'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rubygems-tasks
15
29
  requirement: !ruby/object:Gem::Requirement