alula 0.1.4 → 0.2.0a
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.
- data/VERSION +1 -1
- data/alula.gemspec +0 -1
- data/bin/alula +8 -3
- data/lib/alula/cli.rb +6 -5
- data/lib/alula/site.rb +39 -23
- data/template/config.yml.erb +6 -3
- metadata +29 -40
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0a
|
data/alula.gemspec
CHANGED
data/bin/alula
CHANGED
@@ -4,9 +4,14 @@ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
|
4
4
|
|
5
5
|
# Are we in Alula blog
|
6
6
|
if File.exists?("Gemfile") and File.read("Gemfile") =~ /alula/
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
# Restart tool from bundle if facing load error (usually older alula already loaded)
|
8
|
+
require 'bundler'
|
9
|
+
begin
|
10
|
+
Bundler.require(:default)
|
11
|
+
rescue LoadError
|
12
|
+
exec "bundle", "exec", "alula", *ARGV
|
13
|
+
end
|
14
|
+
end
|
10
15
|
|
11
16
|
require 'alula/cli'
|
12
17
|
Alula::CLI.start
|
data/lib/alula/cli.rb
CHANGED
@@ -11,7 +11,7 @@ module Alula
|
|
11
11
|
desc "init [PATH]", "Creates a new aLula blog in given path or current directory"
|
12
12
|
def init(path = ".")
|
13
13
|
# Create directory structure
|
14
|
-
%w{attachments attachments/_originals attachments/_thumbnails posts}.each do |dir|
|
14
|
+
%w{attachments attachments/_originals attachments/_thumbnails posts pages}.each do |dir|
|
15
15
|
empty_directory File.join(path, dir)
|
16
16
|
end
|
17
17
|
|
@@ -30,7 +30,7 @@ module Alula
|
|
30
30
|
method_option :development, :type => :boolean, :default => true,
|
31
31
|
:desc => "Generate site using development settings. Keeps all assets and HTML uncompressed."
|
32
32
|
method_option :production, :type => :boolean, :default => false,
|
33
|
-
:desc => "Generate site
|
33
|
+
:desc => "Generate site using production settings. Compresses all assets and HTML."
|
34
34
|
def generate
|
35
35
|
site = Alula::Site.new("asset_compress" => (!options["development"] or options["production"]))
|
36
36
|
site.generate
|
@@ -52,9 +52,10 @@ module Alula
|
|
52
52
|
site.asset_attach(post, assets)
|
53
53
|
end
|
54
54
|
|
55
|
-
desc "
|
56
|
-
def
|
57
|
-
|
55
|
+
desc "clean", "Clean up all generated content"
|
56
|
+
def clean
|
57
|
+
site = Alula::Site.new
|
58
|
+
site.clean
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
data/lib/alula/site.rb
CHANGED
@@ -29,18 +29,14 @@ module Alula
|
|
29
29
|
Alula::Theme.register("themes")
|
30
30
|
|
31
31
|
# Initialize Jekyll
|
32
|
-
options =
|
33
|
-
'source' => '_tmp',
|
34
|
-
'destination' => 'public',
|
35
|
-
'markdown' => 'kramdown',
|
36
|
-
|
32
|
+
options = Alula::DEFAULTS.deep_merge({
|
37
33
|
# Site options
|
38
34
|
'title' => @config["title"],
|
39
35
|
'tagline' => @config["tagline"],
|
40
36
|
'author' => @config["author"],
|
41
37
|
'root' => @config["root"],
|
42
|
-
'asset_path' =>
|
43
|
-
'
|
38
|
+
'asset_path' => File.join(@config["root"], "assets"),
|
39
|
+
'permalink' => @config["permalink"],
|
44
40
|
'paginate' => @config["paginate"],
|
45
41
|
'pagination_dir' => @config["pagination_dir"],
|
46
42
|
'excerpt_link' => @config["excerpt_link"],
|
@@ -136,13 +132,15 @@ module Alula
|
|
136
132
|
t.join()
|
137
133
|
end
|
138
134
|
|
139
|
-
def asset_attach(
|
135
|
+
def asset_attach(a_post, assets)
|
140
136
|
# Find the post
|
141
|
-
post = find_post(post
|
142
|
-
|
137
|
+
post = find_post(a_post) or raise "Cannot find post #{a_post}"
|
138
|
+
|
139
|
+
/(?<date>(\d{4}-\d{2}-\d{2}))/ =~ post
|
140
|
+
# require 'pry';binding.pry
|
143
141
|
date = Time.parse(date)
|
144
142
|
|
145
|
-
width, height = @config["images"].split("x").collect {|i| i.to_i }
|
143
|
+
width, height = @config["images"]["size"].split("x").collect {|i| i.to_i }
|
146
144
|
asset_path = File.join(%w{%Y %m %d}.collect{|f| date.strftime(f) })
|
147
145
|
file_path = File.join("attachments", "_originals", asset_path)
|
148
146
|
FileUtils.mkdir_p(file_path)
|
@@ -156,34 +154,41 @@ module Alula
|
|
156
154
|
assets.each do |asset|
|
157
155
|
asset_ext = File.extname(asset).downcase
|
158
156
|
asset_base = File.basename(asset).downcase
|
159
|
-
asset_plain = File.basename(asset, asset_ext)
|
157
|
+
asset_plain = File.basename(asset, asset_ext).to_url
|
160
158
|
|
161
159
|
if image_types.include?(asset_ext)
|
162
160
|
img = Magick::Image.read(asset).first
|
161
|
+
orig_w, orig_h = img.columns, img.rows
|
162
|
+
|
163
163
|
img_normal = img.resize_to_fit(width, height)
|
164
|
-
img_normal.write(File.join(file_path,
|
164
|
+
img_normal.write(File.join(file_path, "#{asset_plain}#{asset_ext}"))
|
165
165
|
img_normal = nil
|
166
166
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
167
|
+
if (@config["images"]["retina"] and (orig_w > width * 2) or (orig_h > height * 2))
|
168
|
+
img_retina = img.resize_to_fit(width * 2, height * 2)
|
169
|
+
retina_fname = File.join(file_path, "#{asset_plain}_2x#{asset_ext}")
|
170
|
+
img_retina.write(retina_fname)
|
171
|
+
img_retina = nil
|
172
|
+
end
|
171
173
|
|
172
174
|
processed << File.join(asset_path, asset_base)
|
173
175
|
|
174
176
|
if @config["plugins"].keys.include?("lightbox")
|
175
|
-
post_io.puts "{% lightbox #{File.join(asset_path,
|
177
|
+
post_io.puts "{% lightbox #{File.join(asset_path, "#{asset_plain}#{asset_ext}")} %}"
|
176
178
|
else
|
177
|
-
post_io.puts "{% image #{File.join("_originals", asset_path,
|
179
|
+
post_io.puts "{% image #{File.join("_originals", asset_path, "#{asset_plain}#{asset_ext}")} %}"
|
178
180
|
end
|
179
|
-
|
180
|
-
puts "Asset generated: #{asset_base} (normal, retina)"
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
184
184
|
post_io.close
|
185
185
|
end
|
186
186
|
|
187
|
+
def clean
|
188
|
+
cleanup
|
189
|
+
FileUtils.rm_rf(Dir[File.join("attachments", "_thumbnails", "*")])
|
190
|
+
end
|
191
|
+
|
187
192
|
private
|
188
193
|
def find_post(post)
|
189
194
|
if File.exists?(post)
|
@@ -193,7 +198,7 @@ module Alula
|
|
193
198
|
else
|
194
199
|
# Try to find by title
|
195
200
|
title = post.to_url
|
196
|
-
posts = Dir[File.join("posts", "*")].select { |p| p =~
|
201
|
+
posts = Dir[File.join("posts", "*")].select { |p| p =~ /#{title}/ }
|
197
202
|
if posts.count == 1
|
198
203
|
return posts.first
|
199
204
|
end
|
@@ -222,13 +227,16 @@ module Alula
|
|
222
227
|
FileUtils.mkdir_p File.join("_tmp", "_posts")
|
223
228
|
FileUtils.cp_r Dir[File.join("posts", "*")], File.join("_tmp", "_posts")
|
224
229
|
|
230
|
+
# Copy pages
|
231
|
+
FileUtils.cp_r Dir[File.join("pages", "**", "*")], File.join("_tmp")
|
232
|
+
|
225
233
|
FileUtils.mkdir_p File.join("_tmp", "assets")
|
226
234
|
end
|
227
235
|
|
228
236
|
def assetgen
|
229
237
|
puts "==> Generating assets"
|
230
238
|
|
231
|
-
width, height = @config["thumbnails"].split("x").collect {|i| i.to_i }
|
239
|
+
width, height = @config["images"]["thumbnails"].split("x").collect {|i| i.to_i }
|
232
240
|
|
233
241
|
# Get all attachements
|
234
242
|
originals_path = File.join("attachments", "_originals")
|
@@ -320,4 +328,12 @@ module Alula
|
|
320
328
|
FileUtils.rm_rf "_tmp"
|
321
329
|
end
|
322
330
|
end
|
331
|
+
|
332
|
+
DEFAULTS = Jekyll::DEFAULTS.deep_merge({
|
333
|
+
'source' => '_tmp',
|
334
|
+
'destination' => 'public',
|
335
|
+
'markdown' => 'kramdown',
|
336
|
+
|
337
|
+
'pagination_dir' => '/page/',
|
338
|
+
})
|
323
339
|
end
|
data/template/config.yml.erb
CHANGED
@@ -12,14 +12,17 @@ tagline: BLOG TAGLINE
|
|
12
12
|
# Chosed theme
|
13
13
|
theme: minimal
|
14
14
|
|
15
|
-
#
|
16
|
-
|
15
|
+
# Options for image settings
|
16
|
+
images:
|
17
|
+
size: 800x600 # Resize photos to this size
|
18
|
+
thumbnails: 300x300 # # Thumbnail size (width x height)
|
19
|
+
retina: true # Generate photos for retina displays
|
17
20
|
|
18
21
|
# Root URL, if you host blog in directory, fix this according
|
19
22
|
root: /
|
20
23
|
|
21
24
|
# Permalinks style
|
22
|
-
|
25
|
+
permalink: /:year/:month/:title
|
23
26
|
|
24
27
|
# Posts per page on the blog index
|
25
28
|
paginate: 10
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alula
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0a
|
5
|
+
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Mikko Kokkonen
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jekyll
|
16
|
-
requirement: &
|
16
|
+
requirement: &70182215769900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.11.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70182215769900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sprockets
|
27
|
-
requirement: &
|
27
|
+
requirement: &70182215769320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.4.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70182215769320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: thor
|
38
|
-
requirement: &
|
38
|
+
requirement: &70182215768740 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.14.6
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70182215768740
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rmagick
|
49
|
-
requirement: &
|
49
|
+
requirement: &70182215784460 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.13.1
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70182215784460
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sass
|
60
|
-
requirement: &
|
60
|
+
requirement: &70182215783720 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 3.1.15
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70182215783720
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: coffee-script
|
71
|
-
requirement: &
|
71
|
+
requirement: &70182215783040 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 2.2.0
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70182215783040
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: uglifier
|
82
|
-
requirement: &
|
82
|
+
requirement: &70182215782320 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.2.4
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70182215782320
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: front-compiler
|
93
|
-
requirement: &
|
93
|
+
requirement: &70182215781660 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 1.1.0
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70182215781660
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: activesupport
|
104
|
-
requirement: &
|
104
|
+
requirement: &70182215780960 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 3.2.3
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70182215780960
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: stringex
|
115
|
-
requirement: &
|
115
|
+
requirement: &70182215780280 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 1.3.2
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70182215780280
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: ruby-progressbar
|
126
|
-
requirement: &
|
126
|
+
requirement: &70182215779320 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 0.0.10
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70182215779320
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: version
|
137
|
-
requirement: &
|
137
|
+
requirement: &70182215778200 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,18 +142,7 @@ dependencies:
|
|
142
142
|
version: 1.0.0
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
146
|
-
- !ruby/object:Gem::Dependency
|
147
|
-
name: pry
|
148
|
-
requirement: &70331726171460 !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
|
-
requirements:
|
151
|
-
- - ~>
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: 0.9.8.4
|
154
|
-
type: :development
|
155
|
-
prerelease: false
|
156
|
-
version_requirements: *70331726171460
|
145
|
+
version_requirements: *70182215778200
|
157
146
|
description: Alula is a simple tool for creating fast, static blogs easily.
|
158
147
|
email:
|
159
148
|
- mikko@owlforestry.com
|
@@ -198,9 +187,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
188
|
none: false
|
200
189
|
requirements:
|
201
|
-
- - ! '
|
190
|
+
- - ! '>'
|
202
191
|
- !ruby/object:Gem::Version
|
203
|
-
version:
|
192
|
+
version: 1.3.1
|
204
193
|
requirements: []
|
205
194
|
rubyforge_project:
|
206
195
|
rubygems_version: 1.8.17
|