zzap 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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