alula 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/VERSION +1 -1
  2. data/bin/alula +1 -1
  3. data/lib/alula/cli.rb +8 -2
  4. data/lib/alula/site.rb +64 -0
  5. metadata +25 -25
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.3
data/bin/alula CHANGED
@@ -3,7 +3,7 @@
3
3
  $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
4
 
5
5
  # Are we in Alula blog
6
- if File.exists?("Rakefile") and File.read("Rakefile") =~ /alula/
6
+ if File.exists?("Gemfile") and File.read("Gemfile") =~ /alula/
7
7
  require 'bundler/setup'
8
8
  Bundler.require(:default)
9
9
  end
data/lib/alula/cli.rb CHANGED
@@ -47,8 +47,14 @@ module Alula
47
47
  end
48
48
 
49
49
  desc "attach POST ASSET", "Attached given asset, photo or video to given post"
50
- def attach(post, *asset)
51
- puts "Adding to post #{post} assets #{asset.inspect}"
50
+ def attach(post, *assets)
51
+ site = Alula::Site.new
52
+ site.asset_attach(post, assets)
53
+ end
54
+
55
+ desc "hello"
56
+ def hello
57
+ say "Hello world."
52
58
  end
53
59
  end
54
60
  end
data/lib/alula/site.rb CHANGED
@@ -4,6 +4,7 @@ require 'sprockets'
4
4
  require 'RMagick'
5
5
  require 'active_support/inflector/methods'
6
6
  require 'progressbar'
7
+ require 'stringex'
7
8
 
8
9
  require 'alula/theme'
9
10
  require 'alula/plugin'
@@ -135,7 +136,70 @@ module Alula
135
136
  t.join()
136
137
  end
137
138
 
139
+ def asset_attach(post, assets)
140
+ # Find the post
141
+ post = find_post(post)
142
+ post =~ /(?<date>(\d{4}-\d{2}-\d{2}))/
143
+ date = Time.parse(date)
144
+
145
+ width, height = @config["images"].split("x").collect {|i| i.to_i }
146
+ asset_path = File.join(%w{%Y %m %d}.collect{|f| date.strftime(f) })
147
+ file_path = File.join("attachments", "_originals", asset_path)
148
+ FileUtils.mkdir_p(file_path)
149
+
150
+ processed = []
151
+
152
+ post_io = File.open(post, "a")
153
+
154
+ # Generate assets
155
+ image_types = [".jpg", ".png"]
156
+ assets.each do |asset|
157
+ asset_ext = File.extname(asset).downcase
158
+ asset_base = File.basename(asset).downcase
159
+ asset_plain = File.basename(asset, asset_ext)
160
+
161
+ if image_types.include?(asset_ext)
162
+ img = Magick::Image.read(asset).first
163
+ img_normal = img.resize_to_fit(width, height)
164
+ img_normal.write(File.join(file_path, asset_base))
165
+ img_normal = nil
166
+
167
+ img_retina = img.resize_to_fit(width * 2, height * 2)
168
+ retina_fname = File.join(file_path, "#{asset_plain}_2x#{asset_ext}")
169
+ img_retina.write(retina_fname)
170
+ img_retina = nil
171
+
172
+ processed << File.join(asset_path, asset_base)
173
+
174
+ if @config["plugins"].keys.include?("lightbox")
175
+ post_io.puts "{% lightbox #{File.join(asset_path, asset_base)} %}"
176
+ else
177
+ post_io.puts "{% image #{File.join("_originals", asset_path, asset_base)} %}"
178
+ end
179
+
180
+ puts "Asset generated: #{asset_base} (normal, retina)"
181
+ end
182
+ end
183
+
184
+ post_io.close
185
+ end
186
+
138
187
  private
188
+ def find_post(post)
189
+ if File.exists?(post)
190
+ return post
191
+ elsif File.exists?(File.join("posts", post))
192
+ return File.join("posts", post)
193
+ else
194
+ # Try to find by title
195
+ title = post.to_url
196
+ posts = Dir[File.join("posts", "*")].select { |p| p =~ /title/ }
197
+ if posts.count == 1
198
+ return posts.first
199
+ end
200
+ end
201
+ end
202
+
139
203
  def prepare
140
204
  puts "==> Prepare"
141
205
  # Clean our temporary folder
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alula
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jekyll
16
- requirement: &70288390147900 !ruby/object:Gem::Requirement
16
+ requirement: &70149181776880 !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: *70288390147900
24
+ version_requirements: *70149181776880
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sprockets
27
- requirement: &70288390147340 !ruby/object:Gem::Requirement
27
+ requirement: &70149181776400 !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: *70288390147340
35
+ version_requirements: *70149181776400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: thor
38
- requirement: &70288390146760 !ruby/object:Gem::Requirement
38
+ requirement: &70149181775940 !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: *70288390146760
46
+ version_requirements: *70149181775940
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rmagick
49
- requirement: &70288390145980 !ruby/object:Gem::Requirement
49
+ requirement: &70149181775480 !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: *70288390145980
57
+ version_requirements: *70149181775480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sass
60
- requirement: &70288390145160 !ruby/object:Gem::Requirement
60
+ requirement: &70149181774860 !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: *70288390145160
68
+ version_requirements: *70149181774860
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: coffee-script
71
- requirement: &70288390144400 !ruby/object:Gem::Requirement
71
+ requirement: &70149181773960 !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: *70288390144400
79
+ version_requirements: *70149181773960
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: uglifier
82
- requirement: &70288390143820 !ruby/object:Gem::Requirement
82
+ requirement: &70149181773060 !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: *70288390143820
90
+ version_requirements: *70149181773060
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: front-compiler
93
- requirement: &70288390143020 !ruby/object:Gem::Requirement
93
+ requirement: &70149181788900 !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: *70288390143020
101
+ version_requirements: *70149181788900
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: activesupport
104
- requirement: &70288390158560 !ruby/object:Gem::Requirement
104
+ requirement: &70149181788440 !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: *70288390158560
112
+ version_requirements: *70149181788440
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: ruby-progressbar
115
- requirement: &70288390157860 !ruby/object:Gem::Requirement
115
+ requirement: &70149181787980 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 0.0.10
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *70288390157860
123
+ version_requirements: *70149181787980
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: version
126
- requirement: &70288390157300 !ruby/object:Gem::Requirement
126
+ requirement: &70149181787520 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 1.0.0
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70288390157300
134
+ version_requirements: *70149181787520
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: pry
137
- requirement: &70288390156680 !ruby/object:Gem::Requirement
137
+ requirement: &70149181787060 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,7 +142,7 @@ dependencies:
142
142
  version: 0.9.8.4
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70288390156680
145
+ version_requirements: *70149181787060
146
146
  description: Alula is a simple tool for creating fast, static blogs easily.
147
147
  email:
148
148
  - mikko@owlforestry.com