alula 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,2 +1,6 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+
4
+ # Versioning
5
+ require 'rake/version_task'
6
+ Rake::VersionTask.new
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/alula.gemspec CHANGED
@@ -16,12 +16,17 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = Alula::VERSION
18
18
 
19
- gem.add_dependency 'jekyll'
20
- gem.add_dependency 'sprockets'
21
- gem.add_dependency 'thor'
22
- gem.add_dependency 'rmagick'
23
- gem.add_dependency 'sass'
24
- gem.add_dependency 'coffee-script'
25
- gem.add_dependency 'uglifier'
26
- gem.add_dependency 'activesupport'
19
+ gem.add_dependency 'jekyll', '~> 0.11.2'
20
+ gem.add_dependency 'sprockets', '~> 2.4.0'
21
+ gem.add_dependency 'thor', '~> 0.14.6'
22
+ gem.add_dependency 'rmagick', '~> 2.13.1'
23
+ gem.add_dependency 'sass', '~> 3.1.15'
24
+ gem.add_dependency 'coffee-script', '~> 2.2.0'
25
+ gem.add_dependency 'uglifier', '~> 1.2.4'
26
+ gem.add_dependency 'front-compiler', '~> 1.1.0'
27
+ gem.add_dependency 'activesupport', '~> 3.2.3'
28
+ gem.add_dependency 'ruby-progressbar', '~> 0.0.10'
29
+
30
+ gem.add_development_dependency 'version', '~> 1.0.0'
31
+ gem.add_development_dependency 'pry', '~> 0.9.8.4'
27
32
  end
data/bin/alula CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
4
 
5
- require 'alula/cli'
5
+ # Are we in Alula blog
6
+ if File.exists?("Rakefile") and File.read("Rakefile") =~ /alula/
7
+ require 'bundler/setup'
8
+ Bundler.require(:default)
9
+ end
6
10
 
11
+ require 'alula/cli'
7
12
  Alula::CLI.start
data/lib/alula/cli.rb CHANGED
@@ -15,35 +15,40 @@ module Alula
15
15
  empty_directory File.join(path, dir)
16
16
  end
17
17
 
18
- # Create Gemfile
19
- create_file File.join(path, "Gemfile") do
20
- <<EOF
21
- source :rubygems
22
-
23
- gem "alula"
24
- gem "alula-plugins"
25
- gem "alula-themes"
26
- EOF
27
- end
28
-
29
- # Create Rakefile
30
- create_file File.join(path, "Rakefile") do
31
- <<EOF
32
- require 'rubygems'
33
- require "bundler/setup"
34
- Bundler.require(:default)
35
-
36
- require 'alula/tasks'
37
- EOF
18
+ # Insert templates
19
+ %w{Gemfile config.yml}.each do |tpl|
20
+ template "#{tpl}.erb" File.join(path, tpl)
38
21
  end
39
22
 
40
- # Create config
41
- template "config.yml.erb", File.join(path, "config.yml")
42
-
43
23
  # Initialize system
44
24
  inside File.join(path) do
45
25
  run "bundle install"
46
26
  end
47
27
  end
28
+
29
+ desc "generate", "Generates blog"
30
+ method_option :development, :type => :boolean, :default => true,
31
+ :desc => "Generate site using development settings. Keeps all assets and HTML uncompressed."
32
+ method_option :production, :type => :boolean, :default => false,
33
+ :desc => "Generate site suing production settings. Compresses all assets and HTML."
34
+ def generate
35
+ site = Alula::Site.new("asset_compress" => (!options["development"] or options["production"]))
36
+ site.generate
37
+ end
38
+
39
+ desc "preview", "Preview blog"
40
+ method_option :development, :type => :boolean, :default => true,
41
+ :desc => "Preview site using development settings. Keeps all assets and HTML uncompressed."
42
+ method_option :production, :type => :boolean, :default => false,
43
+ :desc => "Preview site suing production settings. Compresses all assets and HTML."
44
+ def preview
45
+ site = Alula::Site.new("asset_compress" => (!options["development"] or options["production"]))
46
+ site.preview
47
+ end
48
+
49
+ desc "attach POST ASSET", "Attached given asset, photo or video to given post"
50
+ def attach(post, asset)
51
+ puts "Hii haa"
52
+ end
48
53
  end
49
54
  end
@@ -1,5 +1,6 @@
1
1
  require 'sass'
2
2
  require 'uglifier'
3
+ require 'front-compiler'
3
4
 
4
5
  module Alula
5
6
  module Compressors
@@ -19,7 +20,15 @@ module Alula
19
20
 
20
21
  class JSCompressor
21
22
  def compress(content)
22
- Uglifier.new.compress(content)
23
+ @@compressor ||= Uglifier.new
24
+ @@compressor.compress(content)
25
+ end
26
+ end
27
+
28
+ module HTMLCompressor
29
+ def output_with_compression
30
+ @@compressor ||= FrontCompiler.new
31
+ @@compressor.compact_html(@output)
23
32
  end
24
33
  end
25
34
  end
@@ -40,7 +40,14 @@ module Alula
40
40
  default "scripts"
41
41
 
42
42
  def content(asset)
43
- "<script type=\"text/javascript\" src=\"#{asset}\"></script>"
43
+ if File.size(File.join("public", asset)) < 10
44
+ content = File.read(File.join("public", asset))
45
+ unless content == ";"
46
+ "<script type=\"text/javascript\">#{content}</script>"
47
+ end
48
+ else
49
+ "<script type=\"text/javascript\" src=\"#{asset}\"></script>"
50
+ end
44
51
  end
45
52
  end
46
53
 
@@ -25,6 +25,18 @@ module Alula
25
25
  site = Alula::Site.new
26
26
  site.preview
27
27
  end
28
+
29
+ desc "Generate blog (deployment)"
30
+ task :publish do
31
+ site = Alula::Site.new("asset_compress" => true)
32
+ site.generate
33
+ end
34
+
35
+ desc "Starts preview server in deployment mode"
36
+ task :preview_publish do
37
+ site = Alula::Site.new("asset_compress" => true)
38
+ site.preview
39
+ end
28
40
  end
29
41
  end
30
42
  end
data/lib/alula/site.rb CHANGED
@@ -3,6 +3,7 @@ require 'jekyll'
3
3
  require 'sprockets'
4
4
  require 'RMagick'
5
5
  require 'active_support/inflector/methods'
6
+ require 'progressbar'
6
7
 
7
8
  require 'alula/theme'
8
9
  require 'alula/plugin'
@@ -19,9 +20,9 @@ module Alula
19
20
 
20
21
  attr_reader :config, :jekyll
21
22
 
22
- def initialize
23
+ def initialize(override = {})
23
24
  # Load configuration
24
- @config = YAML.load_file('config.yml')
25
+ @config = YAML.load_file('config.yml').deep_merge(override)
25
26
 
26
27
  # Register local theme path
27
28
  Alula::Theme.register("themes")
@@ -57,6 +58,12 @@ module Alula
57
58
  if @config['asset_compress']
58
59
  @sprockets.css_compressor = Alula::Compressors::CSSCompressor.new
59
60
  @sprockets.js_compressor = Alula::Compressors::JSCompressor.new
61
+
62
+ [Jekyll::Post, Jekyll::Page].each do |klass|
63
+ klass.send(:include, Alula::Compressors::HTMLCompressor)
64
+ klass.send(:alias_method, :output_without_compression, :output)
65
+ klass.send(:alias_method, :output, :output_with_compression)
66
+ end
60
67
  end
61
68
 
62
69
  # Add theme to asset paths
@@ -163,23 +170,22 @@ module Alula
163
170
  originals_path = File.join("attachments", "_originals")
164
171
  thumbnails_path = File.join("attachments", "_thumbnails")
165
172
 
166
- Dir[File.join(originals_path, "**", "*")]
173
+ assets = Dir[File.join(originals_path, "**", "*")]
167
174
  .select {|f| File.file?(f) }
168
175
  .collect {|f| File.join(f.split("/")[2..-1])}
169
- .each do |original|
170
- print "#{original}: "
171
-
172
- unless File.exists?(File.join(thumbnails_path, original))
173
- image = Magick::Image.read(File.join(originals_path, original)).first
174
- image.crop_resized!(width, height, Magick::NorthGravity)
175
- FileUtils.mkdir_p File.dirname(File.join(thumbnails_path, original))
176
- image.write(File.join(thumbnails_path, original))
177
-
178
- puts "generated."
179
- else
180
- puts "exists."
181
- end
176
+ pb = ProgressBar.new "Assets", assets.count
177
+
178
+ assets.each do |original|
179
+ unless File.exists?(File.join(thumbnails_path, original))
180
+ image = Magick::Image.read(File.join(originals_path, original)).first
181
+ image.crop_resized!(width, height, Magick::NorthGravity)
182
+ FileUtils.mkdir_p File.dirname(File.join(thumbnails_path, original))
183
+ image.write(File.join(thumbnails_path, original))
184
+ end
185
+ pb.inc
182
186
  end
187
+
188
+ pb.finish
183
189
  end
184
190
 
185
191
  def compile
@@ -196,19 +202,15 @@ module Alula
196
202
 
197
203
  # Package javascript
198
204
  File.open(File.join("_tmp", "assets", "scripts.js"), "w") do |tf|
199
- tf.puts "/*"
200
- tf.puts " *=require #{@config["theme"]}"
205
+ tf.puts "//=require #{@config["theme"]}"
201
206
  # Plugins
202
- @config["plugins"].each { |plugin, opts| tf.puts " *=require #{plugin}" }
203
- tf.puts " */"
207
+ @config["plugins"].each { |plugin, opts| tf.puts "//=require #{plugin}" }
204
208
  end
205
209
 
206
210
  File.open(File.join("_tmp", "assets", "scripts_body.js"), "w") do |tf|
207
- tf.puts "/*"
208
- tf.puts " *=require #{@config["theme"]}_body"
211
+ tf.puts "//=require #{@config["theme"]}_body"
209
212
  # Plugins
210
- @config["plugins"].each { |plugin, opts| tf.puts " *=require #{plugin}_body" }
211
- tf.puts " */"
213
+ @config["plugins"].each { |plugin, opts| tf.puts "//=require #{plugin}_body" }
212
214
  end
213
215
 
214
216
 
@@ -231,6 +233,11 @@ module Alula
231
233
 
232
234
  # Inject our manifest to jekyll
233
235
  @jekyll.config["manifest"] = @manifest
236
+
237
+ # Cleanup
238
+ %w{styles.css scripts.js scripts_body.js}.each do |f|
239
+ FileUtils.rm(File.join("_tmp", "assets", f))
240
+ end
234
241
  end
235
242
 
236
243
  def process
data/lib/alula/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Alula
2
- VERSION = "0.0.1"
3
- end
2
+ VERSION = File.read(File.join(File.dirname(__FILE__), %w{.. .. VERSION})).strip
3
+ end
@@ -0,0 +1,5 @@
1
+ source :rubygems
2
+
3
+ gem "alula"
4
+ gem "alula-plugins"
5
+ gem "alula-themes"
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.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,92 +13,136 @@ date: 2012-04-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jekyll
16
- requirement: &70211932354580 !ruby/object:Gem::Requirement
16
+ requirement: &70325892298600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.11.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70211932354580
24
+ version_requirements: *70325892298600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sprockets
27
- requirement: &70211932353820 !ruby/object:Gem::Requirement
27
+ requirement: &70325892297560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
- - - ! '>='
30
+ - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: 2.4.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70211932353820
35
+ version_requirements: *70325892297560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: thor
38
- requirement: &70211932369740 !ruby/object:Gem::Requirement
38
+ requirement: &70325892349240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ! '>='
41
+ - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: '0'
43
+ version: 0.14.6
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70211932369740
46
+ version_requirements: *70325892349240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rmagick
49
- requirement: &70211932369100 !ruby/object:Gem::Requirement
49
+ requirement: &70325892348540 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
- - - ! '>='
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 2.13.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70211932369100
57
+ version_requirements: *70325892348540
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sass
60
- requirement: &70211932368460 !ruby/object:Gem::Requirement
60
+ requirement: &70325892347940 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
- - - ! '>='
63
+ - - ~>
64
64
  - !ruby/object:Gem::Version
65
- version: '0'
65
+ version: 3.1.15
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70211932368460
68
+ version_requirements: *70325892347940
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: coffee-script
71
- requirement: &70211932367840 !ruby/object:Gem::Requirement
71
+ requirement: &70325892347340 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
- - - ! '>='
74
+ - - ~>
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: 2.2.0
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70211932367840
79
+ version_requirements: *70325892347340
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: uglifier
82
- requirement: &70211932367220 !ruby/object:Gem::Requirement
82
+ requirement: &70325892346700 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
- - - ! '>='
85
+ - - ~>
86
86
  - !ruby/object:Gem::Version
87
- version: '0'
87
+ version: 1.2.4
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70211932367220
90
+ version_requirements: *70325892346700
91
+ - !ruby/object:Gem::Dependency
92
+ name: front-compiler
93
+ requirement: &70325892346080 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 1.1.0
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70325892346080
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: activesupport
93
- requirement: &70211932366560 !ruby/object:Gem::Requirement
104
+ requirement: &70325892345600 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 3.2.3
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: *70325892345600
113
+ - !ruby/object:Gem::Dependency
114
+ name: ruby-progressbar
115
+ requirement: &70325892345100 !ruby/object:Gem::Requirement
94
116
  none: false
95
117
  requirements:
96
- - - ! '>='
118
+ - - ~>
97
119
  - !ruby/object:Gem::Version
98
- version: '0'
120
+ version: 0.0.10
99
121
  type: :runtime
100
122
  prerelease: false
101
- version_requirements: *70211932366560
123
+ version_requirements: *70325892345100
124
+ - !ruby/object:Gem::Dependency
125
+ name: version
126
+ requirement: &70325892344620 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 1.0.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *70325892344620
135
+ - !ruby/object:Gem::Dependency
136
+ name: pry
137
+ requirement: &70325892344100 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ version: 0.9.8.4
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *70325892344100
102
146
  description: Alula is a simple tool for creating fast, static blogs easily.
103
147
  email:
104
148
  - mikko@owlforestry.com
@@ -112,6 +156,7 @@ files:
112
156
  - LICENSE
113
157
  - README.md
114
158
  - Rakefile
159
+ - VERSION
115
160
  - alula.gemspec
116
161
  - bin/alula
117
162
  - lib/alula.rb
@@ -124,6 +169,7 @@ files:
124
169
  - lib/alula/tasks.rb
125
170
  - lib/alula/theme.rb
126
171
  - lib/alula/version.rb
172
+ - template/Gemfile.erb
127
173
  - template/config.yml.erb
128
174
  - vendor/javascripts/jquery.js
129
175
  homepage: http://owlforestry.github.com/alula