drjekyll 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1abacc0051e57841738784b05c84d1adb06051ad
4
- data.tar.gz: d756a8cd82ef92f2310f8dd40445583c8abf3c7c
3
+ metadata.gz: 5f8388480e3692910b92dcd78a42097b242f72f9
4
+ data.tar.gz: 8ac266778b6fcf94ed8e86e6a80454e378fb3d6e
5
5
  SHA512:
6
- metadata.gz: 0c127f82e87a8eaf5e5dc2be3440c11863d61c0282917e5fd03925531cb7e8281407a7273ad2feb6f4d51bb620a45dea1b759a170993fd8ae528457af5cf805b
7
- data.tar.gz: 09f07a808b355bbcb8cb06ea2a5c466af3d22ab84829dfe813128ae5fa4212cc5053827c9862848bcd49c228504632ecdec6bfca9e703bec839dcbb8993ad52a
6
+ metadata.gz: 1970d2319f64132371a156f9a6b128568401781bd91a59d254b8fde164f7f8b960800e8b7682b14792515eb17ad4c294edd00fbc3284c6ad19da710d41e7195f
7
+ data.tar.gz: 88523b5e8dce44330ffb9612703b0a345a39b30f927a7a3dbcc91f97a1a4d3334342d684f76700f9f3ef9685efead37bf502338a6f8d7bce0a6438863e5434d5
data/Manifest.txt CHANGED
@@ -9,7 +9,9 @@ lib/drjekyll/catalog.rb
9
9
  lib/drjekyll/cli/download.rb
10
10
  lib/drjekyll/cli/list.rb
11
11
  lib/drjekyll/cli/main.rb
12
+ lib/drjekyll/cli/new.rb
12
13
  lib/drjekyll/cli/opts.rb
13
14
  lib/drjekyll/cli/unzip.rb
15
+ lib/drjekyll/package.rb
14
16
  lib/drjekyll/version.rb
15
17
  test/data/themes.yml
data/README.md CHANGED
@@ -1,2 +1,165 @@
1
- # drjekyll
2
- drjekyll
1
+ # drjekyll - the missing theme package manager
2
+
3
+ jekyll command line tool
4
+
5
+ * home :: [github.com/drjekyllthemes/drjekyll](https://github.com/drjekyllthemes/drjekyll)
6
+ * bugs :: [github.com/drjekyllthemes/drjekyll/issues](https://github.com/drjekyllthemes/drjekyll/issues)
7
+ * gem :: [rubygems.org/gems/drjekyll](https://rubygems.org/gems/drjekyll)
8
+ * rdoc :: [rubydoc.info/gems/drjekyll](http://rubydoc.info/gems/drjekyll)
9
+ * forum :: [wwwmake](http://groups.google.com/group/wwwmake)
10
+
11
+
12
+ ## Usage
13
+
14
+ The drjekyll gem includes a command line tool that
15
+ lets you manage static site theme packages.
16
+
17
+ Try:
18
+
19
+ ```
20
+ $ drjekyll --help # or
21
+ $ drj -h
22
+ ```
23
+
24
+ Resulting in:
25
+
26
+ ```
27
+ NAME
28
+ drjekyll/drj - jekyll command line tool .:. the missing static site package manager
29
+
30
+ SYNOPSIS
31
+ drjekyll/drj [global options] command [command options] [arguments...]
32
+
33
+ VERSION
34
+ 0.1.0
35
+
36
+ GLOBAL OPTIONS
37
+ --help - Show this message
38
+ --verbose - (Debug) Show debug messages
39
+ --version - Display the program version
40
+
41
+ COMMANDS
42
+ list, ls, l - List themes
43
+ new, n - Download 'n' setup (unzip/unpack) theme
44
+ download, dl, d, get, g - (Debug) Step 1: Download theme; .zip archive saved in working folder (./)
45
+ unpack, pk, p, setup, s - (Debug) Step 2: Setup (unzip/unpack) theme; uses saved .zip archive in working folder (./)
46
+ help - Shows a list of commands or help for one command
47
+ test - (Debug) Test command suite
48
+ ```
49
+
50
+
51
+ ### List Themes Command - `list`, `ls`, `l`
52
+
53
+ Use:
54
+
55
+ ```
56
+ $ drjekyll list # or
57
+ $ drjekyll ls # or
58
+ $ drjekyll l # or
59
+ $ drj l
60
+ ```
61
+
62
+ Resulting in:
63
+
64
+ ```
65
+ 1..Planet Jekyll's Starter (Minimal) (starter | planetjekyllsstarterminimal) by Gerald Bauer - #white
66
+ 2..Dr Jekyll's Minimal (minimial | drjekyllsminimal) by Gerald Bauer - #white
67
+ 3..Dr Jekyll's Bootstrap (bootstrap | drjekyllsbootstrap) by Gerald Bauer - #bootstrap #scss #white
68
+ 4..Dr Jekyll's Classics Book (classics | drjekyllsclassicsbook) by Gerald Bauer - #books #white
69
+ 5..Poole (poole) by Mark Otto - #poole
70
+ 6..Poole's Hyde (pooleshyde) by Mark Otto - #poole
71
+ 7..Poole's Lanyon (pooleslanyon) by Mark Otto - #poole
72
+ 8..Beautiful Jekyll (beautifuljekyll) by Dean Attali
73
+ ...
74
+ ```
75
+
76
+ Note: You can filter by name or tags; just add the query e.g.:
77
+
78
+ ```
79
+ $ drjekyll list resume # or
80
+ $ drjkeyll ls resume # or
81
+ $ drjkeyll l resume # or
82
+ $ drj l resume
83
+ ```
84
+
85
+ Resulting in:
86
+
87
+ ```
88
+ 68..Resume Cards (resumecards) by Elle Kasai - #resume
89
+ 104..iCard Resume (icardresume) by Dong Liang - #resume
90
+ 109..Resume (resume) by Joel Glovier - #resume
91
+ ```
92
+
93
+
94
+ ### New Theme Command - `new`, `n`
95
+
96
+ To download and install (unzip/unpack) a theme archive use:
97
+
98
+ ```
99
+ $ drjekyll new starter # or
100
+ $ drjekyll n starter # or
101
+ $ drj n starter
102
+ ```
103
+
104
+ This will download the `starter.zip` to your working folder and
105
+ unzip the archive into the `./starter` folder.
106
+
107
+
108
+ **More Examples**
109
+
110
+ To download and install (unzip/unpack):
111
+
112
+ ```
113
+ 7..Poole's Lanyon (pooleslanyon) by Mark Otto - #poole
114
+ ```
115
+
116
+ Use:
117
+
118
+ ```
119
+ $ drjekyll new pooleslanyon # or
120
+ $ drjekyll n pooleslanyon # or
121
+ $ drj n pooleslanyon
122
+ ```
123
+
124
+ To download and install (unzip/unpack):
125
+
126
+ ```
127
+ 8..Beautiful Jekyll (beautifuljekyll) by Dean Attali
128
+ ```
129
+
130
+ Use:
131
+
132
+ ```
133
+ $ drjekyll new beautifuljekyll # or
134
+ $ drjekyll n beautifuljekyll # or
135
+ $ drj n beautifuljekyll
136
+ ```
137
+
138
+ And so on and so forth.
139
+
140
+
141
+
142
+ **More Themes**
143
+
144
+ See the [Dr. Jekyll's Themes](https://drjekyllthemes.github.io) directory .
145
+
146
+
147
+
148
+ ## Install
149
+
150
+ Just install the gem:
151
+
152
+ $ gem install drjekyll
153
+
154
+
155
+ ## License
156
+
157
+ The `drjekyll` scripts are dedicated to the public domain.
158
+ Use it as you please with no restrictions whatsoever.
159
+
160
+
161
+ ## Questions? Comments?
162
+
163
+ Send them along to the [wwwmake forum](http://groups.google.com/group/wwwmake).
164
+ Thanks!
165
+
data/Rakefile CHANGED
@@ -18,8 +18,12 @@ Hoe.spec 'drjekyll' do
18
18
  self.history_file = 'HISTORY.md'
19
19
 
20
20
  self.extra_deps = [
21
- ## 3rd party
21
+ ['props', '>=1.1.2'],
22
+ ['logutils', '>=0.6.1'],
22
23
  ['fetcher', '>= 0.4.5'],
24
+ ## 3rd party
25
+ ['gli', '>=2.12.2'],
26
+ ['rubyzip', '>=1.1.7'],
23
27
  ]
24
28
 
25
29
  self.licenses = ['Public Domain']
data/lib/drjekyll.rb CHANGED
@@ -13,26 +13,26 @@ require 'yaml'
13
13
  ## 3rd party gems
14
14
  require 'props' ## Use Env.home
15
15
  require 'logutils'
16
+ require 'fetcher'
16
17
 
17
18
 
18
- ## require 'fetcher'
19
-
20
19
  ## more 3rd party gems
20
+ require 'zip' # use $ gem install rubyzip
21
21
  require 'gli'
22
22
 
23
23
 
24
-
25
24
  # our own code
26
25
 
27
26
  require 'drjekyll/version' # note: version always goes first
28
27
  require 'drjekyll/catalog'
28
+ require 'drjekyll/package'
29
29
 
30
30
  require 'drjekyll/cli/opts'
31
31
  require 'drjekyll/cli/main'
32
32
  require 'drjekyll/cli/list'
33
33
  require 'drjekyll/cli/download'
34
34
  require 'drjekyll/cli/unzip'
35
-
35
+ require 'drjekyll/cli/new'
36
36
 
37
37
 
38
38
  module DrJekyll
@@ -47,7 +47,7 @@ end # module DrJekyll
47
47
  ## DrJekyll.banner ## say hello
48
48
 
49
49
  ## for debugging
50
- pp Env.home
51
- pp DrJekyll.root
50
+ ## pp Env.home
51
+ ## pp DrJekyll.root
52
52
 
53
53
  DrJekyll.main if __FILE__ == $0
@@ -3,10 +3,25 @@
3
3
  module DrJekyll
4
4
 
5
5
  class Catalog
6
-
7
- def initialize( path )
6
+
7
+ def self.from_url( src )
8
+ worker = Fetcher::Worker.new
9
+ text = worker.read_utf8!( src )
10
+ self.from_string( text )
11
+ end
12
+
13
+ def self.from_file( path )
8
14
  ## read in themes catalog
9
- text = File.read( path )
15
+ text = File.read( path ) ## fix: use File.read_utf8 ??
16
+ self.from_string( text )
17
+ end
18
+
19
+ def self.from_string( text )
20
+ self.new( text )
21
+ end
22
+
23
+
24
+ def initialize( text )
10
25
  @themes = YAML.load( text )
11
26
 
12
27
  ## auto-add keys for now (for quick testing)
@@ -70,7 +85,7 @@ class Catalog
70
85
  end
71
86
  end # method filter
72
87
 
73
- def get( key ) ## use fetch or different name - why? why not??
88
+ def find( key ) ## use fetch/get/? or different name - why? why not??
74
89
  ## find theme by key
75
90
  ## fix/todo: use linear search for now; use hash lookup later
76
91
 
@@ -14,20 +14,21 @@ class DownloadCommand ## find a better name - why, why not ??
14
14
  ## note: required template name (defaults to starter for now)
15
15
  key = args[0] || 'starter'
16
16
 
17
- theme = @catalog.get( key )
18
-
17
+ theme = @catalog.find( key )
18
+
19
19
  if theme
20
- download( theme )
20
+ download( key, theme )
21
21
  else
22
22
  ## todo: issue warning - why, why not??
23
+ puts "*** theme '#{key}' not found; sorry"
23
24
  end
24
25
  end
25
-
26
- def download( theme )
27
- ## to be done
28
- pp theme
26
+
27
+ def download( key, theme )
28
+ pak = Package.new( key, theme )
29
+ pak.download
29
30
  end
30
-
31
+
31
32
  end ## class DownloadCommand
32
33
 
33
34
  end # module DrJekyll
@@ -33,20 +33,30 @@ logger = LogUtils::Logger.root
33
33
  opts = Opts.new
34
34
 
35
35
 
36
- program_desc 'drjekyll command line tool'
36
+ program_desc 'jekyll command line tool .:. the missing static site package manager'
37
37
  version VERSION
38
38
 
39
39
 
40
- desc 'Use only local (offline) cached data; no (online) remote network access'
41
- switch [:l, :local], negatable: false
40
+ ## desc 'Use only local (offline) cached data; no (online) remote network access'
41
+ ## switch [:l, :local], negatable: false
42
42
 
43
43
  desc '(Debug) Show debug messages'
44
44
  switch [:verbose], negatable: false ## todo: use -w for short form? check ruby interpreter if in use too?
45
45
 
46
- desc 'Only show warnings, errors and fatal messages'
47
- switch [:q, :quiet], negatable: false
46
+ ## desc 'Only show warnings, errors and fatal messages'
47
+ ## switch [:q, :quiet], negatable: false
48
48
 
49
49
 
50
+ def self.fetch_catalog
51
+ ## themes_dir = "#{DrJekyll.root}/test/data"
52
+ ## catalog = Catalog.new( "#{themes_dir}/themes.yml" )
53
+
54
+ url = "https://github.com/drjekyllthemes/themes/raw/master/o/themes.yml"
55
+
56
+ catalog = Catalog.from_url( url )
57
+ catalog
58
+ end
59
+
50
60
 
51
61
  desc "List themes"
52
62
  arg_name 'QUERY' # optional search query/filter
@@ -54,8 +64,7 @@ command [:list,:ls,:l] do |c|
54
64
 
55
65
  c.action do |g,o,args|
56
66
  ## read in themes diretory
57
- themes_dir = "#{DrJekyll.root}/test/data"
58
- catalog = Catalog.new( "#{themes_dir}/themes.yml" )
67
+ catalog = fetch_catalog
59
68
 
60
69
  cmd = ListCommand.new( catalog, opts )
61
70
  cmd.run( args )
@@ -65,14 +74,13 @@ end # command list
65
74
 
66
75
 
67
76
  ## use get or fetch - why, why not??
68
- desc "Download theme; saved in ~/.drjekyll/cache"
77
+ desc "(Debug) Step 1: Download theme; .zip archive saved in working folder (./)"
69
78
  arg_name 'NAME' # required theme name
70
79
  command [:download,:dl,:d,:get,:g] do |c|
71
80
 
72
81
  c.action do |g,o,args|
73
82
  ## read in themes diretory
74
- themes_dir = "#{DrJekyll.root}/test/data"
75
- catalog = Catalog.new( "#{themes_dir}/themes.yml" )
83
+ catalog = fetch_catalog
76
84
 
77
85
  cmd = DownloadCommand.new( catalog, opts )
78
86
  cmd.run( args )
@@ -82,14 +90,13 @@ end # command download
82
90
 
83
91
 
84
92
  ## use install or unzip/unpack - why, why not??
85
- desc "Setup (unzip/unpack) theme; use archive in ~/.drjekyll/cache"
93
+ desc "(Debug) Step 2: Setup (unzip/unpack) theme; uses saved .zip archive in working folder (./)"
86
94
  arg_name 'NAME' # required theme name
87
95
  command [:unpack,:pk,:p,:setup,:s] do |c|
88
96
 
89
97
  c.action do |g,o,args|
90
98
  ## read in themes diretory
91
- themes_dir = "#{DrJekyll.root}/test/data"
92
- catalog = Catalog.new( "#{themes_dir}/themes.yml" )
99
+ catalog = fetch_catalog
93
100
 
94
101
  cmd = UnzipCommand.new( catalog, opts )
95
102
  cmd.run( args )
@@ -103,12 +110,11 @@ arg_name 'NAME' # required theme name
103
110
  command [:new,:n] do |c|
104
111
 
105
112
  c.action do |g,o,args|
113
+ ## read in themes diretory
114
+ catalog = fetch_catalog
106
115
 
107
- ## todo: required template name (defaults to starter for now)
108
- name = args[0] || 'starter'
109
-
110
- puts " download theme here"
111
- puts " unzip/unpack (setup) here"
116
+ cmd = NewCommand.new( catalog, opts )
117
+ cmd.run( args )
112
118
  puts 'Done.'
113
119
  end # action
114
120
  end # command setup
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ module DrJekyll
5
+
6
+ class NewCommand ## find a better name - why, why not ??
7
+
8
+ def initialize( catalog, opts )
9
+ @catalog = catalog
10
+ @opts = opts
11
+ end
12
+
13
+ def run( args )
14
+ ## note: required template name (defaults to starter for now)
15
+ key = args[0] || 'starter'
16
+
17
+ theme = @catalog.find( key )
18
+
19
+ if theme
20
+ download_and_unzip( key, theme )
21
+ else
22
+ ## todo: issue warning - why, why not??
23
+ puts "*** theme '#{key}' not found; sorry"
24
+ end
25
+ end
26
+
27
+ def download_and_unzip( key, theme )
28
+ pak = Package.new( key, theme )
29
+ pak.download
30
+ pak.unzip( "./#{key}" )
31
+ end
32
+
33
+ end ## class NewCommand
34
+
35
+ end # module DrJekyll
@@ -14,20 +14,21 @@ class UnzipCommand ## find a better name - why, why not ??
14
14
  ## note: required template name (defaults to starter for now)
15
15
  key = args[0] || 'starter'
16
16
 
17
- theme = @catalog.get( key )
18
-
17
+ theme = @catalog.find( key )
18
+
19
19
  if theme
20
- unzip( theme )
20
+ unzip( key, theme )
21
21
  else
22
22
  ## todo: issue warning - why, why not??
23
+ puts "*** theme '#{key}' not found; sorry"
23
24
  end
24
25
  end
25
26
 
26
- def unzip( theme )
27
- ## to be done
28
- pp theme
27
+ def unzip( key, theme )
28
+ pak = Package.new( key, theme )
29
+ pak.unzip( "./#{key}" )
29
30
  end
30
-
31
+
31
32
  end ## class UnzipCommand
32
33
 
33
34
  end # module DrJekyll
@@ -0,0 +1,87 @@
1
+ # encoding: utf-8
2
+
3
+ module DrJekyll
4
+
5
+ class Package
6
+
7
+ def initialize( key, hash ) ## note: for now pass in key as its own arg (not part/included in hash)
8
+ @key = key
9
+ @hash = hash
10
+
11
+ @download_url = @hash['download_url'] # as string
12
+ end
13
+
14
+ def remote_zip_url # remote zip url
15
+ @download_url # as string
16
+ end
17
+
18
+ def local_zip_name
19
+ @key # note: will NOT include/return .zip extension
20
+ end
21
+
22
+ def local_zip_dir
23
+ "." ## use ./tmp or ./dl or ~/.drjekyll/cache ??
24
+ end
25
+
26
+ def local_zip_path # local zip path
27
+ "#{local_zip_dir}/#{local_zip_name}.zip"
28
+ end
29
+
30
+
31
+
32
+ def download
33
+ src = remote_zip_url
34
+ dest_zip = local_zip_path
35
+
36
+ ## make sure dest folder exists
37
+ FileUtils.mkdir_p( local_zip_dir ) unless Dir.exists?( local_zip_dir )
38
+ fetch_theme( src, dest_zip )
39
+ end
40
+
41
+ def unzip( unzip_dir )
42
+ src = local_zip_path
43
+ dest_unzip = unzip_dir ## local_unzip_dir
44
+
45
+ ## check if folders exists? if not create folder in path
46
+ FileUtils.mkdir_p( dest_unzip ) unless Dir.exists?( dest_unzip )
47
+ unzip_theme( src, dest_unzip )
48
+ end
49
+
50
+ private
51
+ def fetch_theme( src, dest )
52
+ ## step 1 - fetch archive
53
+ worker = Fetcher::Worker.new
54
+ worker.copy( src, dest )
55
+ ### fix: add src.sha5
56
+ ### inside folder
57
+ ### lets us check if current HEAD version is in place across datafiles etc.
58
+ ## - try HTTP HEAD ?? to check?
59
+ end
60
+
61
+ def unzip_theme( src, dest, opts={} )
62
+ ### todo/fix: rename or remove root folder -- use opts { root: false or something??}
63
+ # e.g
64
+ # !/starter-gh-pages/_layouts/ becomes
65
+ # !/_layouts/ etc.
66
+ Zip::File.open( src ) do |zipfile|
67
+ zipfile.each do |file|
68
+ if file.directory?
69
+ puts " skip directory zip entry - #{file.name}"
70
+ else
71
+ ### fix: only cut-off if master or gh-pages ???
72
+ ## check if others include root folder?
73
+ name = file.name[ file.name.index('/')+1..-1] ## cut-off root/first path entry
74
+ path = File.join( dest, name)
75
+ puts " unzip file zip entry - #{file.name} to #{path}"
76
+ FileUtils.mkdir_p( File.dirname( path) )
77
+ zipfile.extract(file, path) unless File.exist?(path)
78
+ end
79
+ end
80
+ end
81
+ end # method unzip_theme
82
+
83
+
84
+ end # class Package
85
+
86
+ end # module DrJekyll
87
+
@@ -4,8 +4,8 @@
4
4
  module DrJekyll
5
5
 
6
6
  MAJOR = 0
7
- MINOR = 0
8
- PATCH = 1
7
+ MINOR = 1
8
+ PATCH = 0
9
9
  VERSION = [MAJOR,MINOR,PATCH].join('.')
10
10
 
11
11
  def self.version
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drjekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
@@ -10,6 +10,34 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: props
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.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.1.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: logutils
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.6.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.6.1
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: fetcher
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +52,34 @@ dependencies:
24
52
  - - ">="
25
53
  - !ruby/object:Gem::Version
26
54
  version: 0.4.5
55
+ - !ruby/object:Gem::Dependency
56
+ name: gli
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 2.12.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 2.12.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubyzip
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.1.7
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.1.7
27
83
  - !ruby/object:Gem::Dependency
28
84
  name: rdoc
29
85
  requirement: !ruby/object:Gem::Requirement
@@ -75,8 +131,10 @@ files:
75
131
  - lib/drjekyll/cli/download.rb
76
132
  - lib/drjekyll/cli/list.rb
77
133
  - lib/drjekyll/cli/main.rb
134
+ - lib/drjekyll/cli/new.rb
78
135
  - lib/drjekyll/cli/opts.rb
79
136
  - lib/drjekyll/cli/unzip.rb
137
+ - lib/drjekyll/package.rb
80
138
  - lib/drjekyll/version.rb
81
139
  - test/data/themes.yml
82
140
  homepage: https://github.com/drjekyllthemes/drjekyll