middleman-portfolio 1.0.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 +7 -0
- data/Gemfile +19 -0
- data/README.md +95 -0
- data/Rakefile +56 -0
- data/VERSION +1 -0
- data/features/support/env.rb +4 -0
- data/lib/middleman-portfolio.rb +252 -0
- data/lib/middleman_extension.rb +1 -0
- data/lib/template/source/portfolio.html.erb +9 -0
- data/lib/template/source/project.html.erb +5 -0
- data/middleman-portfolio.gemspec +65 -0
- data/screenshot.jpg +0 -0
- metadata +125 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 78258eb595b3e291a9a00adcdc5fe2a0d66f2983
|
|
4
|
+
data.tar.gz: fd7a671381e7f53b89e7b41f3951a1db40334af1
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 3149c6d803dcf84a72ececbd0fc43f8140b938253e15a76c8698ae95cdfe07f32cb7c741af5b64d0408004db7780a794cfea82f422d244ff623f926b13a12b48
|
|
7
|
+
data.tar.gz: 815438f24e1d84ff4411ba17c265c4ccdbce5b21607c3e4b5c73602413485d2b1f062f833c0f2f1c9dec8ba892a6ef3b6727e27699c972ed4d92e05cbd7c10b4
|
data/Gemfile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# If you do not have OpenSSL installed, update
|
|
2
|
+
# the following line to use "http://" instead
|
|
3
|
+
source 'https://rubygems.org'
|
|
4
|
+
|
|
5
|
+
gem 'mini_magick', '~> 4.2.10'
|
|
6
|
+
|
|
7
|
+
group :development do
|
|
8
|
+
gem 'rake'
|
|
9
|
+
gem 'rdoc'
|
|
10
|
+
gem 'yard'
|
|
11
|
+
gem 'jeweler'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
group :test do
|
|
15
|
+
gem 'cucumber'
|
|
16
|
+
gem 'fivemat'
|
|
17
|
+
gem 'aruba'
|
|
18
|
+
gem 'rspec'
|
|
19
|
+
end
|
data/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# middleman-portfolio
|
|
2
|
+
|
|
3
|
+
A low-drama portfolio generator for your [middleman](https://github.com/middleman/middleman) site. Place images in `source/portfolio/[project]/`, and build. That's it.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
Add this to `Gemfile`
|
|
10
|
+
|
|
11
|
+
```rb
|
|
12
|
+
gem "middleman-portfolio"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
and
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
bundle install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Add to `config.rb`
|
|
22
|
+
|
|
23
|
+
```rb
|
|
24
|
+
activate :portfolio
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Add projects to portfolio dir
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
cp -r project-a/ source/portfolio/
|
|
31
|
+
cp -r project-b/ source/portfolio/
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Run `middleman server`
|
|
35
|
+
|
|
36
|
+
* [`http://localhost:4567/portfolio`](http://localhost:4567/portfolio) (if you're using `directory_indexes`)
|
|
37
|
+
|
|
38
|
+
* [`http://localhost:4567/portfolio/index.html`](http://localhost:4567/portfolio/index.html) (vanilla middleman)
|
|
39
|
+
|
|
40
|
+
or `middleman build` if you're ready to roll.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## Configuration (optional)
|
|
44
|
+
|
|
45
|
+
```rb
|
|
46
|
+
activate :portfolio do |f|
|
|
47
|
+
# Looks in source/portfolio/ for projects and builds to build/portfolio/
|
|
48
|
+
f.portfolio_dir = 'portfolio'
|
|
49
|
+
|
|
50
|
+
# thumbnail width (px)
|
|
51
|
+
f.thumbnail_width = 200
|
|
52
|
+
|
|
53
|
+
# thumbnail height (px)
|
|
54
|
+
f.thumbnail_height = 150
|
|
55
|
+
|
|
56
|
+
# class added to thumbnail <img> tag
|
|
57
|
+
f.thumbnail_class, "thumbnail"
|
|
58
|
+
|
|
59
|
+
# class added to thumbnail <a> tag
|
|
60
|
+
f.thumbnail_link_class ""
|
|
61
|
+
|
|
62
|
+
# override default portfolio template (must be located in source/)
|
|
63
|
+
f.portfolio_template "portfolio.html.erb"
|
|
64
|
+
|
|
65
|
+
# override default project template (also must be in source/)
|
|
66
|
+
f.project_template "project.html.erb"
|
|
67
|
+
end
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Custom Templates
|
|
71
|
+
|
|
72
|
+
You can create your own custom portfolio and project template pages by using the `portfolio_template` or `project_tamplate` options (see above).
|
|
73
|
+
|
|
74
|
+
Place your template anywhere in your `source/` dir. Take a look at the default [portfolio](https://github.com/dhulihan/middleman-portfolio/blob/master/lib/template/source/portfolio.html.erb) or [project](https://github.com/dhulihan/middleman-portfolio/blob/master/lib/template/source/project.html.erb) template for a good starting point. Here's an example portfolio page:
|
|
75
|
+
|
|
76
|
+
```erb
|
|
77
|
+
<!-- source/portfolio.html.erb -->
|
|
78
|
+
<% for project in project_resources %>
|
|
79
|
+
<% link_to project.path, class: "thumbnail" do %>
|
|
80
|
+
<%= image_tag project.metadata[:locals][:thumbnail_resources].first.path %>
|
|
81
|
+
<% end %>
|
|
82
|
+
<% end %>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Additional Notes
|
|
86
|
+
|
|
87
|
+
* You can mix and match image types (`.jpg`, `.png`, `.gif`)
|
|
88
|
+
* [minimagick](https://github.com/minimagick/minimagick) is used for thumbnail generation. Make sure imagemagick is installed on your machine.
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
## TODO
|
|
92
|
+
|
|
93
|
+
* Page content from `data/`
|
|
94
|
+
* Non-project images (stored directly in portfolio/)
|
|
95
|
+
* FileWatcher monitor for new images
|
data/Rakefile
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'bundler'
|
|
3
|
+
Bundler::GemHelper.install_tasks
|
|
4
|
+
|
|
5
|
+
task default: :test
|
|
6
|
+
# encoding: utf-8
|
|
7
|
+
|
|
8
|
+
begin
|
|
9
|
+
Bundler.setup(:default, :development)
|
|
10
|
+
rescue Bundler::BundlerError => e
|
|
11
|
+
$stderr.puts e.message
|
|
12
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
|
13
|
+
exit e.status_code
|
|
14
|
+
end
|
|
15
|
+
require 'rake'
|
|
16
|
+
|
|
17
|
+
require 'jeweler'
|
|
18
|
+
|
|
19
|
+
Jeweler::Tasks.new do |gem|
|
|
20
|
+
# gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
|
|
21
|
+
gem.name = "middleman-portfolio"
|
|
22
|
+
gem.homepage = "http://github.com/dhulihan/middleman-portfolio"
|
|
23
|
+
gem.license = "MIT"
|
|
24
|
+
gem.summary = %Q{A low-drama portfolio generator for your middleman site.}
|
|
25
|
+
gem.description = %Q{A low-drama portfolio generator for your middleman site.}
|
|
26
|
+
gem.email = "dhulihan@gmail.com"
|
|
27
|
+
gem.authors = ["Dave Hulihan"]
|
|
28
|
+
# dependencies defined in Gemfile
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Jeweler::RubygemsDotOrgTasks.new
|
|
32
|
+
|
|
33
|
+
require 'rake/testtask'
|
|
34
|
+
Rake::TestTask.new(:test) do |test|
|
|
35
|
+
test.libs << 'lib' << 'test'
|
|
36
|
+
test.pattern = 'test/**/test_*.rb'
|
|
37
|
+
test.verbose = true
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
desc "Code coverage detail"
|
|
41
|
+
task :simplecov do
|
|
42
|
+
ENV['COVERAGE'] = "true"
|
|
43
|
+
Rake::Task['test'].execute
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
task :default => :test
|
|
47
|
+
|
|
48
|
+
require 'rdoc/task'
|
|
49
|
+
Rake::RDocTask.new do |rdoc|
|
|
50
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
|
51
|
+
|
|
52
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
53
|
+
rdoc.title = "middleman-portfolio #{version}"
|
|
54
|
+
rdoc.rdoc_files.include('README*')
|
|
55
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
56
|
+
end
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.0.0
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
class Portfolio < ::Middleman::Extension
|
|
2
|
+
TEMPLATES_DIR = File.expand_path('../template/source/', __FILE__)
|
|
3
|
+
|
|
4
|
+
option :portfolio_dir, 'portfolio', 'Default portfolio directory inside your source'
|
|
5
|
+
option :generate_thumbnails, true, 'Do you want thumbnails?'
|
|
6
|
+
option :thumbnail_width, 200, "Width (in px) for thumbnails"
|
|
7
|
+
option :thumbnail_height, 150, "Height (in px) for thumbnails"
|
|
8
|
+
option :thumbnail_class, "thumbnail", "class for thumbnail <img>"
|
|
9
|
+
option :thumbnail_link_class, "", "class for thumbnail <a> "
|
|
10
|
+
option :portfolio_template, nil, "path to portfolio index page template"
|
|
11
|
+
option :project_template, nil, "path to portfolio project page template"
|
|
12
|
+
|
|
13
|
+
attr_accessor :sitemap
|
|
14
|
+
#alias :included :registered
|
|
15
|
+
|
|
16
|
+
class << self
|
|
17
|
+
def cleanup
|
|
18
|
+
# Delete tmp files
|
|
19
|
+
tmp_files = Dir.glob(File.join(tmp_dir, "*")).select {|f| File.file?(f)}
|
|
20
|
+
tmp_files.each {|f|
|
|
21
|
+
File.delete(f)
|
|
22
|
+
debug "#{f} not deleted" if File.exist?(f)
|
|
23
|
+
}
|
|
24
|
+
Dir.rmdir(tmp_dir)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# path to temp dir for storing intermediate files
|
|
28
|
+
def tmp_dir
|
|
29
|
+
File.join(Dir.tmpdir, "middleman-portfolio")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def initialize(app, options_hash={}, &block)
|
|
34
|
+
# Call super to build options from the options_hash
|
|
35
|
+
super
|
|
36
|
+
|
|
37
|
+
# Create tmp dir
|
|
38
|
+
Dir.mkdir(Portfolio.tmp_dir) unless Dir.exist?(Portfolio.tmp_dir)
|
|
39
|
+
|
|
40
|
+
# set up your extension
|
|
41
|
+
app.after_build do
|
|
42
|
+
Portfolio.cleanup
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def after_configuration
|
|
47
|
+
register_extension_templates
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# generate thumbnail OUTSIDE of build dir
|
|
51
|
+
def generate_thumbnail(image)
|
|
52
|
+
debug "Generating thumbnail of #{image}"
|
|
53
|
+
dst = File.join(Portfolio.tmp_dir, thumbnail_name(image))
|
|
54
|
+
if !File.exist?(dst)
|
|
55
|
+
img = ::MiniMagick::Image.open(image)
|
|
56
|
+
#img.resize "#{options.thumbnail_width}x#{options.thumbnail_height}"
|
|
57
|
+
img = resize_to_fill(img, options.thumbnail_width, options.thumbnail_height)
|
|
58
|
+
img.write(dst)
|
|
59
|
+
raise "Thumbnail not generated at #{dst}" unless File.exist?(dst)
|
|
60
|
+
else
|
|
61
|
+
debug "#{dst} already exists"
|
|
62
|
+
end
|
|
63
|
+
return dst
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Resize to fill target dims. Crop any excess. Will upscale.
|
|
67
|
+
def resize_to_fill(img, width, height, gravity = 'Center')
|
|
68
|
+
cols, rows = img[:dimensions]
|
|
69
|
+
img.combine_options do |cmd|
|
|
70
|
+
if width != cols || height != rows
|
|
71
|
+
scale_x = width/cols.to_f
|
|
72
|
+
scale_y = height/rows.to_f
|
|
73
|
+
if scale_x >= scale_y
|
|
74
|
+
cols = (scale_x * (cols + 0.5)).round
|
|
75
|
+
rows = (scale_x * (rows + 0.5)).round
|
|
76
|
+
cmd.resize "#{cols}"
|
|
77
|
+
else
|
|
78
|
+
cols = (scale_y * (cols + 0.5)).round
|
|
79
|
+
rows = (scale_y * (rows + 0.5)).round
|
|
80
|
+
cmd.resize "x#{rows}"
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
cmd.gravity gravity
|
|
84
|
+
cmd.background "rgba(255,255,255,0.0)"
|
|
85
|
+
cmd.extent "#{width}x#{height}" if cols != width || rows != height
|
|
86
|
+
end
|
|
87
|
+
img = yield(img) if block_given?
|
|
88
|
+
img
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def register_extension_templates
|
|
92
|
+
# We call reload_path to register the templates directory with Middleman.
|
|
93
|
+
# The path given to app.files must be relative to the Middleman site's root.
|
|
94
|
+
templates_dir_relative_from_root = Pathname(TEMPLATES_DIR).relative_path_from(Pathname(app.root))
|
|
95
|
+
app.files.reload_path(templates_dir_relative_from_root)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def template(path)
|
|
99
|
+
full_path = File.join(TEMPLATES_DIR, path)
|
|
100
|
+
raise "Template #{full_path} not found" if !File.exist?(full_path)
|
|
101
|
+
full_path
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def manipulate_resource_list(resources)
|
|
105
|
+
# Load in reverse order for easier building
|
|
106
|
+
proj_resources = projects.collect {|project|
|
|
107
|
+
thumbs = project_thumbnail_resources(project)
|
|
108
|
+
resources += thumbs
|
|
109
|
+
project_resource(project, thumbs)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
# Add project resources to main array
|
|
113
|
+
resources += proj_resources
|
|
114
|
+
# resources += project_thumbnail_resources(project)
|
|
115
|
+
resources << portfolio_index_resource(proj_resources)
|
|
116
|
+
return resources
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# get abs path to portfolio dir
|
|
120
|
+
def portfolio_path
|
|
121
|
+
File.join(app.source_dir, options.portfolio_dir)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def portfolio_index_path
|
|
125
|
+
"#{options.portfolio_dir}.html"
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def portfolio_index_resource(project_resources)
|
|
129
|
+
Middleman::Sitemap::Resource.new(app.sitemap, portfolio_index_path, source_file(:portfolio)).tap do |resource|
|
|
130
|
+
resource.add_metadata(
|
|
131
|
+
# options: { layout: false },
|
|
132
|
+
locals: {
|
|
133
|
+
projects: projects,
|
|
134
|
+
options: options,
|
|
135
|
+
project_resources: project_resources
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# get absolute path to project directory, eg: /path/to/site/portfolio/example-project/
|
|
142
|
+
def project_dir(project)
|
|
143
|
+
File.join(portfolio_path, project)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# array of images for a project
|
|
147
|
+
def project_images(project)
|
|
148
|
+
Dir.glob(File.join(project_dir(project), '*'))
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# project_resource_path("/path/to/image.png") => "portfolio/project/image.png"
|
|
152
|
+
def project_image_resource_path(project, image)
|
|
153
|
+
File.join(options.portfolio_dir, project, File.basename(image))
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Get all projects located in options.portfolio_dir
|
|
157
|
+
def project_dirs
|
|
158
|
+
#debug "Looking in #{options.portfolio_dir} for project subdirectories"
|
|
159
|
+
Dir.glob(File.join(portfolio_path, '*')).select {|f| File.directory? f}
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def projects
|
|
163
|
+
# Look for project directories
|
|
164
|
+
projects = project_dirs.collect {|d| File.basename(d) }
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# portfolio/example-project.html
|
|
168
|
+
def project_resource_path(project)
|
|
169
|
+
File.join(options.portfolio_dir, "#{project}.html")
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def project_resource(project, thumbnail_resources)
|
|
173
|
+
|
|
174
|
+
Middleman::Sitemap::Resource.new(app.sitemap, project_resource_path(project), source_file(:project)).tap do |resource|
|
|
175
|
+
resource.add_metadata(
|
|
176
|
+
locals: {
|
|
177
|
+
name: project,
|
|
178
|
+
options: options,
|
|
179
|
+
thumbnail_resources: thumbnail_resources,
|
|
180
|
+
}
|
|
181
|
+
)
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# create a resource for each portfolio project
|
|
186
|
+
def project_resources(thumbnail_resources)
|
|
187
|
+
projects.collect {|project| project_resource(project, thumbnail_resources)}
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# generate thumbnail and resource for an image in a project
|
|
191
|
+
def project_thumbnail_resource(project, image)
|
|
192
|
+
debug "Generating thumbnail of #{project}/#{image}"
|
|
193
|
+
tmp_image = generate_thumbnail(image)
|
|
194
|
+
|
|
195
|
+
# Add image to sitemap
|
|
196
|
+
path = project_thumbnail_resource_path(project, File.basename(tmp_image))
|
|
197
|
+
debug "Adding #{path} to #{project}"
|
|
198
|
+
Middleman::Sitemap::Resource.new(app.sitemap, path, tmp_image).tap do |resource|
|
|
199
|
+
resource.add_metadata(
|
|
200
|
+
locals: {
|
|
201
|
+
project: project,
|
|
202
|
+
image: File.basename(image)
|
|
203
|
+
}
|
|
204
|
+
)
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# generate thumbnail resource for each image in project dir
|
|
209
|
+
def project_thumbnail_resources(project)
|
|
210
|
+
resources = Array.new
|
|
211
|
+
for image in project_images(project)
|
|
212
|
+
resources << project_thumbnail_resource(project, image)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
return resources
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
# Generate resource path to project thumbnail, eg: "portfolio/example-project/1-thumbnail.jpg"
|
|
219
|
+
def project_thumbnail_resource_path(project, thumbnail)
|
|
220
|
+
File.join(options.portfolio_dir, project, thumbnail)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# get path to source file for page, use default if not set, freak out if missing
|
|
224
|
+
def source_file(page)
|
|
225
|
+
# Load custom template or default
|
|
226
|
+
opt = options.send("#{page}_template")
|
|
227
|
+
|
|
228
|
+
if opt
|
|
229
|
+
path = File.join(app.source_dir, opt)
|
|
230
|
+
raise "#{path} doesn't exist" unless File.exist?(path)
|
|
231
|
+
return path
|
|
232
|
+
else
|
|
233
|
+
return template("#{page}.html.erb")
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# thumbnail_name("1.jpg") => "1-200x150.jpg"
|
|
238
|
+
def thumbnail_name(image)
|
|
239
|
+
name = "#{File.basename(image, '.*')}-#{options.thumbnail_width}x#{options.thumbnail_height}#{File.extname(image)}"
|
|
240
|
+
name.gsub!(/ /, "-")
|
|
241
|
+
return name
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def debug(str)
|
|
245
|
+
#puts str
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
helpers do
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
::Middleman::Extensions.register(:portfolio, Portfolio)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'middleman-portfolio'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<% for project in project_resources %>
|
|
2
|
+
<% if project.metadata[:locals][:thumbnail_resources] %>
|
|
3
|
+
<% link_to project.path, title: project.metadata[:locals][:name], class: "#{options.thumbnail_link_class}" do %>
|
|
4
|
+
<%= image_tag project.metadata[:locals][:thumbnail_resources].first.path, class: "#{options.thumbnail_class}" %>
|
|
5
|
+
<% end %>
|
|
6
|
+
<% else %>
|
|
7
|
+
<!-- No thumbnails found for <%= project.metadata[:locals][:name] %> -->
|
|
8
|
+
<% end %>
|
|
9
|
+
<% end %>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Generated by jeweler
|
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
|
+
# -*- encoding: utf-8 -*-
|
|
5
|
+
# stub: middleman-portfolio 1.0.0 ruby lib
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |s|
|
|
8
|
+
s.name = "middleman-portfolio"
|
|
9
|
+
s.version = "1.0.0"
|
|
10
|
+
|
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
|
+
s.require_paths = ["lib"]
|
|
13
|
+
s.authors = ["Dave Hulihan"]
|
|
14
|
+
s.date = "2015-08-14"
|
|
15
|
+
s.description = "A low-drama portfolio generator for your middleman site."
|
|
16
|
+
s.email = "dhulihan@gmail.com"
|
|
17
|
+
s.extra_rdoc_files = [
|
|
18
|
+
"README.md"
|
|
19
|
+
]
|
|
20
|
+
s.files = [
|
|
21
|
+
"Gemfile",
|
|
22
|
+
"README.md",
|
|
23
|
+
"Rakefile",
|
|
24
|
+
"VERSION",
|
|
25
|
+
"features/support/env.rb",
|
|
26
|
+
"lib/middleman-portfolio.rb",
|
|
27
|
+
"lib/middleman_extension.rb",
|
|
28
|
+
"lib/template/source/portfolio.html.erb",
|
|
29
|
+
"lib/template/source/project.html.erb",
|
|
30
|
+
"middleman-portfolio.gemspec",
|
|
31
|
+
"screenshot.jpg"
|
|
32
|
+
]
|
|
33
|
+
s.homepage = "http://github.com/dhulihan/middleman-portfolio"
|
|
34
|
+
s.licenses = ["MIT"]
|
|
35
|
+
s.rubygems_version = "2.4.5"
|
|
36
|
+
s.summary = "A low-drama portfolio generator for your middleman site."
|
|
37
|
+
|
|
38
|
+
if s.respond_to? :specification_version then
|
|
39
|
+
s.specification_version = 4
|
|
40
|
+
|
|
41
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
42
|
+
s.add_runtime_dependency(%q<middleman-portfolio>, [">= 0"])
|
|
43
|
+
s.add_runtime_dependency(%q<mini_magick>, [">= 0"])
|
|
44
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
|
45
|
+
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
|
46
|
+
s.add_development_dependency(%q<yard>, [">= 0"])
|
|
47
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
48
|
+
else
|
|
49
|
+
s.add_dependency(%q<middleman-portfolio>, [">= 0"])
|
|
50
|
+
s.add_dependency(%q<mini_magick>, [">= 0"])
|
|
51
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
|
52
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
|
53
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
|
54
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
55
|
+
end
|
|
56
|
+
else
|
|
57
|
+
s.add_dependency(%q<middleman-portfolio>, [">= 0"])
|
|
58
|
+
s.add_dependency(%q<mini_magick>, [">= 0"])
|
|
59
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
|
60
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
|
61
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
|
62
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
data/screenshot.jpg
ADDED
|
Binary file
|
metadata
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: middleman-portfolio
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Dave Hulihan
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2015-08-14 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: mini_magick
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 4.2.10
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 4.2.10
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rdoc
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: yard
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: jeweler
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
description: A low-drama portfolio generator for your middleman site.
|
|
84
|
+
email: dhulihan@gmail.com
|
|
85
|
+
executables: []
|
|
86
|
+
extensions: []
|
|
87
|
+
extra_rdoc_files:
|
|
88
|
+
- README.md
|
|
89
|
+
files:
|
|
90
|
+
- Gemfile
|
|
91
|
+
- README.md
|
|
92
|
+
- Rakefile
|
|
93
|
+
- VERSION
|
|
94
|
+
- features/support/env.rb
|
|
95
|
+
- lib/middleman-portfolio.rb
|
|
96
|
+
- lib/middleman_extension.rb
|
|
97
|
+
- lib/template/source/portfolio.html.erb
|
|
98
|
+
- lib/template/source/project.html.erb
|
|
99
|
+
- middleman-portfolio.gemspec
|
|
100
|
+
- screenshot.jpg
|
|
101
|
+
homepage: http://github.com/dhulihan/middleman-portfolio
|
|
102
|
+
licenses:
|
|
103
|
+
- MIT
|
|
104
|
+
metadata: {}
|
|
105
|
+
post_install_message:
|
|
106
|
+
rdoc_options: []
|
|
107
|
+
require_paths:
|
|
108
|
+
- lib
|
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
|
+
requirements:
|
|
111
|
+
- - ">="
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: '0'
|
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
|
+
requirements:
|
|
116
|
+
- - ">="
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: '0'
|
|
119
|
+
requirements: []
|
|
120
|
+
rubyforge_project:
|
|
121
|
+
rubygems_version: 2.4.5
|
|
122
|
+
signing_key:
|
|
123
|
+
specification_version: 4
|
|
124
|
+
summary: A low-drama portfolio generator for your middleman site.
|
|
125
|
+
test_files: []
|