discourse_theme 0.2.3 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec7463e33dfb0fdd1b383377b7a6a47149c15acf54bdf7cc095c1ca5bdeb4cab
4
- data.tar.gz: 61570cd30caea545b9212b0a4d32b79728fe6965b6aba8e91ecfa8e3d8d5bcc8
3
+ metadata.gz: c652f5407703115888ee2c75b3e1caf69b1aa526fcaf124ab54a0024fc471fcf
4
+ data.tar.gz: ee147aaef2475063959ba39f3025bc27257dc9dd5bd4f4d89b89dde0e4bcb4ed
5
5
  SHA512:
6
- metadata.gz: 7ccd6dd6a930061d111a7fb412753de1d21001175a51eebdbdd6e9bcb29c6bdbaeec55d90d401b461aeb5908bc5c7fb26d0ec96753befcd4f854821b6a93975f
7
- data.tar.gz: 1e20d0e1721b12902184cd7e1b90f2dd5ed5d9cd46920f3a5232514c38b48e0e957d7f7b5b5aaab5811db4b3df2b932abc306ffabec5fd3959b5f202bf07ad5b
6
+ metadata.gz: 225b2d921edf71526a2b552dedfa5e5ace15cba32f4ab050d3ba5d4f22efe8fc156d597af1e92afabe63671f66357af9618e37f2a7d7ac5f29d515ee52469656
7
+ data.tar.gz: 75fbb8dd55a4effd2c99938bb76f6ad38ea4e687bc8461297146036cc9f4d2ef30d408260d963ab5fc175edd73e8e55e668c9c83c02a96a8a46ae70c9daf6607
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require "rake/testtask"
4
4
  Rake::TestTask.new(:test) do |t|
5
5
  t.libs << "test"
6
6
  t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
7
+ t.test_files = FileList["test/**/test_*.rb"]
8
8
  end
9
9
 
10
10
  task default: :test
@@ -34,6 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency "listen", "~> 3.1"
35
35
  spec.add_dependency "multipart-post", "~> 2.0"
36
36
  spec.add_dependency "tty-prompt", "~> 0.18"
37
+ spec.add_dependency "rubyzip", "~> 1.2"
37
38
 
38
39
  spec.required_ruby_version = '>= 2.2.0'
39
40
  end
@@ -62,7 +62,8 @@ module DiscourseTheme
62
62
 
63
63
  response = request(Net::HTTP::Get.new endpoint)
64
64
  raise "Error downloading theme: #{response.code}" unless response.code.to_i == 200
65
- response.body
65
+ raise "Error downloading theme: no content disposition" unless response["content-disposition"]
66
+ [response.body, response["content-disposition"].match(/filename=(\"?)(.+)\1/)[2]]
66
67
  end
67
68
 
68
69
  def update_theme(id, args)
@@ -1,3 +1,5 @@
1
+ require 'zip'
2
+
1
3
  class DiscourseTheme::Downloader
2
4
 
3
5
  def initialize(dir:, client:)
@@ -7,17 +9,27 @@ class DiscourseTheme::Downloader
7
9
  end
8
10
 
9
11
  def download_theme(id)
10
- raw = @client.get_raw_theme_export(id)
11
- sio = StringIO.new(raw)
12
- gz = Zlib::GzipReader.new(sio)
13
- Minitar.unpack(gz, @dir)
12
+ raw, filename = @client.get_raw_theme_export(id)
13
+
14
+ if filename.end_with?(".zip")
15
+ Zip::File.open_buffer(raw) do |zip_file|
16
+ zip_file.each do |entry|
17
+ new_path = File.join(@dir, entry.name)
18
+ entry.extract(new_path)
19
+ end
20
+ end
21
+ else
22
+ sio = StringIO.new(raw)
23
+ gz = Zlib::GzipReader.new(sio)
24
+ Minitar.unpack(gz, @dir)
14
25
 
15
- # Minitar extracts into a sub directory, move all the files up one dir
16
- Dir.chdir(@dir) do
17
- folders = Dir.glob('*/')
18
- raise "Extraction failed" unless folders.length == 1
19
- FileUtils.mv(Dir.glob("#{folders[0]}*"), "./")
20
- FileUtils.remove_dir(folders[0])
26
+ # Minitar extracts into a sub directory, move all the files up one dir
27
+ Dir.chdir(@dir) do
28
+ folders = Dir.glob('*/')
29
+ raise "Extraction failed" unless folders.length == 1
30
+ FileUtils.mv(Dir.glob("#{folders[0]}*"), "./")
31
+ FileUtils.remove_dir(folders[0])
32
+ end
21
33
  end
22
34
  end
23
35
 
@@ -1,3 +1,3 @@
1
1
  module DiscourseTheme
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discourse_theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-13 00:00:00.000000000 Z
11
+ date: 2019-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.18'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubyzip
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.2'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.2'
153
167
  description: CLI helper for creating Discourse themes
154
168
  email:
155
169
  - sam.saffron@gmail.com