awestructx 0.4.1.x1 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/awestruct/astruct_mixin.rb +3 -13
- data/lib/awestruct/cli/auto.rb +4 -18
- data/lib/awestruct/cli/invoker.rb +1 -12
- data/lib/awestruct/config.rb +0 -10
- data/lib/awestruct/engine.rb +13 -47
- data/lib/awestruct/extensions/atomizer.rb +3 -3
- data/lib/awestruct/extensions/minify.rb +23 -21
- data/lib/awestruct/extensions/posts.rb +4 -4
- data/lib/awestruct/extensions/sitemap.rb +0 -1
- data/lib/awestruct/handler_chains.rb +33 -15
- data/lib/awestruct/handlers/base_handler.rb +1 -16
- data/lib/awestruct/handlers/file_handler.rb +1 -3
- data/lib/awestruct/handlers/front_matter_handler.rb +0 -5
- data/lib/awestruct/handlers/haml_handler.rb +1 -12
- data/lib/awestruct/handlers/markdown_handler.rb +0 -14
- data/lib/awestruct/handlers/sass_handler.rb +0 -7
- data/lib/awestruct/handlers/scss_handler.rb +0 -7
- data/lib/awestruct/handlers/textile_handler.rb +0 -15
- data/lib/awestruct/page.rb +9 -13
- data/lib/awestruct/page_loader.rb +4 -8
- data/lib/awestruct/pipeline.rb +0 -7
- data/lib/awestruct/version.rb +1 -1
- data/lib/guard/awestruct.rb +1 -1
- metadata +267 -172
- data/lib/awestruct/cli/deploy.rb +0 -38
- data/lib/awestruct/dependencies.rb +0 -102
- data/lib/awestruct/deploy/github_pages_deploy.rb +0 -61
- data/lib/awestruct/deploy/rsync_deploy.rb +0 -51
- data/lib/awestruct/deployers.rb +0 -15
- data/lib/awestruct/handlers/asciidoc_handler.rb +0 -57
- data/lib/awestruct/handlers/coffeescript_handler.rb +0 -48
- data/lib/awestruct/handlers/erb_handler.rb +0 -44
- data/lib/awestruct/handlers/orgmode_handler.rb +0 -48
- data/lib/awestruct/handlers/restructuredtext_handler.rb +0 -67
@@ -1,6 +1,4 @@
|
|
1
1
|
|
2
|
-
require 'awestruct/dependencies'
|
3
|
-
|
4
2
|
module Awestruct
|
5
3
|
|
6
4
|
module AStructMixin
|
@@ -23,7 +21,7 @@ module Awestruct
|
|
23
21
|
|
24
22
|
def [](key)
|
25
23
|
r = super( key ) || super( key.to_sym ) || super( key.to_s )
|
26
|
-
transform_entry(
|
24
|
+
transform_entry( r )
|
27
25
|
end
|
28
26
|
|
29
27
|
def method_missing(sym, *args, &blk)
|
@@ -48,11 +46,8 @@ module Awestruct
|
|
48
46
|
end
|
49
47
|
end
|
50
48
|
|
51
|
-
UNTRACKED_KEYS = [
|
52
|
-
:url,
|
53
|
-
]
|
54
49
|
|
55
|
-
def transform_entry(
|
50
|
+
def transform_entry(entry)
|
56
51
|
r = case(entry)
|
57
52
|
when AStructMixin
|
58
53
|
entry
|
@@ -60,15 +55,10 @@ module Awestruct
|
|
60
55
|
#AStruct.new( entry )
|
61
56
|
entry.extend( AStructMixin )
|
62
57
|
when Array
|
63
|
-
entry.map!{|i| transform_entry(
|
58
|
+
entry.map!{|i| transform_entry(i)}
|
64
59
|
else
|
65
60
|
entry
|
66
61
|
end
|
67
|
-
if ( self.is_a? Awestruct::Page )
|
68
|
-
unless UNTRACKED_KEYS.include? for_key.to_sym
|
69
|
-
Awestruct::Dependencies.track_dependency( self )
|
70
|
-
end
|
71
|
-
end
|
72
62
|
r
|
73
63
|
end
|
74
64
|
|
data/lib/awestruct/cli/auto.rb
CHANGED
@@ -4,31 +4,17 @@ module Awestruct
|
|
4
4
|
module CLI
|
5
5
|
class Auto
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
7
|
+
def initialize(path)
|
8
|
+
@path = path
|
9
9
|
end
|
10
10
|
|
11
11
|
def run()
|
12
12
|
Guard.setup
|
13
|
-
Guard.start( :
|
14
|
-
:watchdir=>@
|
13
|
+
Guard.start( :guardfile=>File.dirname(__FILE__) + '/Guardfile',
|
14
|
+
:watchdir=>@path,
|
15
15
|
:watch_all_modifications=>true )
|
16
16
|
end
|
17
17
|
|
18
|
-
def guardfile_contents
|
19
|
-
ignored = [
|
20
|
-
"'.awestruct'",
|
21
|
-
"'#{File.basename( @config.tmp_dir )}'",
|
22
|
-
"'#{File.basename( @config.output_dir )}'",
|
23
|
-
]
|
24
|
-
c = ''
|
25
|
-
c += "guard :awestruct do\n"
|
26
|
-
c += " watch %r(.*)\n"
|
27
|
-
c += " ignore_paths #{ignored.join(', ')}"
|
28
|
-
c += "end\n"
|
29
|
-
c
|
30
|
-
end
|
31
18
|
end
|
32
|
-
|
33
19
|
end
|
34
20
|
end
|
@@ -3,7 +3,6 @@ require 'awestruct/cli/options'
|
|
3
3
|
require 'awestruct/cli/generate'
|
4
4
|
require 'awestruct/cli/auto'
|
5
5
|
require 'awestruct/cli/server'
|
6
|
-
require 'awestruct/cli/deploy'
|
7
6
|
|
8
7
|
require 'pathname'
|
9
8
|
|
@@ -65,7 +64,6 @@ module Awestruct
|
|
65
64
|
|
66
65
|
def setup_config()
|
67
66
|
@config = Awestruct::Config.new( Dir.pwd )
|
68
|
-
@config.track_dependencies = true if ( options.auto )
|
69
67
|
end
|
70
68
|
|
71
69
|
def invoke_init()
|
@@ -75,7 +73,6 @@ module Awestruct
|
|
75
73
|
end
|
76
74
|
|
77
75
|
def invoke_force()
|
78
|
-
FileUtils.rm_rf( File.join( config.dir, '.awestruct', 'dependency-cache' ) )
|
79
76
|
FileUtils.rm_rf( config.output_dir )
|
80
77
|
end
|
81
78
|
|
@@ -84,18 +81,10 @@ module Awestruct
|
|
84
81
|
end
|
85
82
|
|
86
83
|
def invoke_deploy()
|
87
|
-
deploy_config = profile[ 'deploy' ]
|
88
|
-
|
89
|
-
if ( deploy_config.nil? )
|
90
|
-
$stderr.puts "No configuration for 'deploy'"
|
91
|
-
return
|
92
|
-
end
|
93
|
-
|
94
|
-
Awestruct::CLI::Deploy.new( config, deploy_config ).run
|
95
84
|
end
|
96
85
|
|
97
86
|
def invoke_auto()
|
98
|
-
run_in_thread( Awestruct::CLI::Auto.new( config ) )
|
87
|
+
run_in_thread( Awestruct::CLI::Auto.new( config.dir ) )
|
99
88
|
end
|
100
89
|
|
101
90
|
def invoke_server()
|
data/lib/awestruct/config.rb
CHANGED
@@ -12,10 +12,6 @@ module Awestruct
|
|
12
12
|
attr_accessor :skin_dir
|
13
13
|
attr_accessor :tmp_dir
|
14
14
|
attr_accessor :ignore
|
15
|
-
attr_accessor :track_dependencies
|
16
|
-
|
17
|
-
attr_accessor :images_dir
|
18
|
-
attr_accessor :stylesheets_dir
|
19
15
|
|
20
16
|
def initialize(dir = Dir.pwd)
|
21
17
|
@dir = Pathname.new( dir )
|
@@ -26,13 +22,7 @@ module Awestruct
|
|
26
22
|
@extension_dir = Pathname.new( File.join(dir, '_ext') )
|
27
23
|
@skin_dir = Pathname.new( File.join(dir, '_skin') )
|
28
24
|
@tmp_dir = Pathname.new( File.join(dir, '_tmp') )
|
29
|
-
|
30
|
-
@images_dir = Pathname.new( File.join(dir, 'images') )
|
31
|
-
@stylesheets_dir = Pathname.new( File.join(dir, 'stylesheets') )
|
32
|
-
|
33
25
|
@ignore = File.exists?(ignore_file = File.join(dir, ".awestruct_ignore")) ? Dir[*IO.read(ignore_file).each_line.map(&:strip)] : []
|
34
|
-
|
35
|
-
@track_dependencies = false
|
36
26
|
end
|
37
27
|
|
38
28
|
end
|
data/lib/awestruct/engine.rb
CHANGED
@@ -10,7 +10,6 @@ require 'awestruct/page_loader'
|
|
10
10
|
require 'awestruct/extensions/pipeline'
|
11
11
|
|
12
12
|
require 'fileutils'
|
13
|
-
require 'set'
|
14
13
|
|
15
14
|
class OpenStruct
|
16
15
|
def inspect
|
@@ -55,24 +54,9 @@ module Awestruct
|
|
55
54
|
execute_pipeline
|
56
55
|
configure_compass
|
57
56
|
set_urls( site.pages )
|
58
|
-
build_page_index
|
59
57
|
generate_output
|
60
58
|
end
|
61
59
|
|
62
|
-
def build_page_index
|
63
|
-
site.pages_by_relative_source_path = {}
|
64
|
-
site.pages.each do |p|
|
65
|
-
if ( p.relative_source_path )
|
66
|
-
site.pages_by_relative_source_path[ p.relative_source_path ] = p
|
67
|
-
end
|
68
|
-
end
|
69
|
-
site.layouts.each do |p|
|
70
|
-
if ( p.relative_source_path )
|
71
|
-
site.pages_by_relative_source_path[ p.relative_source_path ] = p
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
60
|
def set_base_url(base_url, default_base_url)
|
77
61
|
if ( base_url )
|
78
62
|
site.base_url = base_url
|
@@ -208,46 +192,28 @@ module Awestruct
|
|
208
192
|
if ( page.stale_output?( generated_path ) )
|
209
193
|
generate_page( page, generated_path )
|
210
194
|
else
|
211
|
-
|
195
|
+
puts "Up-to-date: #{generated_path}"
|
212
196
|
end
|
213
197
|
end
|
214
198
|
end
|
215
199
|
|
216
|
-
def generate_page(page, generated_path
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
file << page.rendered_content
|
222
|
-
end
|
223
|
-
elsif ( site.config.track_dependencies )
|
224
|
-
if page.dependencies.load!
|
225
|
-
puts "Cached: #{generated_path}"
|
226
|
-
else
|
227
|
-
puts "Analyzing: #{generated_path}"
|
228
|
-
page.rendered_content
|
229
|
-
end
|
200
|
+
def generate_page(page, generated_path)
|
201
|
+
puts "Generating: #{generated_path}"
|
202
|
+
FileUtils.mkdir_p( File.dirname( generated_path ) )
|
203
|
+
File.open( generated_path, 'w' ) do |file|
|
204
|
+
file << page.rendered_content
|
230
205
|
end
|
231
206
|
end
|
232
207
|
|
233
208
|
def generate_page_by_output_path(path)
|
234
209
|
full_path = File.join( '', path )
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
regen_pages << page unless ( page.output_path.nil? )
|
243
|
-
regen_pages += page.dependencies.dependents
|
244
|
-
|
245
|
-
#puts regen_pages.collect{|e|e.output_path}.inspect
|
246
|
-
regen_pages.each do |p|
|
247
|
-
unless ( p.output_path.nil? || p.__is_layout )
|
248
|
-
generated_path = File.join( site.config.output_dir, p.output_path )
|
249
|
-
generate_page( p, generated_path )
|
250
|
-
end
|
210
|
+
#puts "regen path #{full_path}"
|
211
|
+
page = site.pages.find{|p| p.relative_source_path.to_s==full_path}
|
212
|
+
if ( page.nil? )
|
213
|
+
#puts "Unable to locate page for #{path}"
|
214
|
+
else
|
215
|
+
generated_path = File.join( site.config.output_dir, page.output_path )
|
216
|
+
generate_page(page, generated_path)
|
251
217
|
end
|
252
218
|
end
|
253
219
|
|
@@ -2,8 +2,8 @@ module Awestruct
|
|
2
2
|
module Extensions
|
3
3
|
class Atomizer
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@
|
5
|
+
def initialize(entries_name, output_path, opts={})
|
6
|
+
@entries_name = entries_name
|
7
7
|
@output_path = output_path
|
8
8
|
@num_entries = opts[:num_entries] || 50
|
9
9
|
@content_url = opts[:content_url]
|
@@ -11,7 +11,7 @@ module Awestruct
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def execute(site)
|
14
|
-
entries =
|
14
|
+
entries = site.send( @entries_name ) || []
|
15
15
|
unless ( @num_entries == :all )
|
16
16
|
entries = entries[0, @num_entries]
|
17
17
|
end
|
@@ -12,10 +12,10 @@ require 'fileutils'
|
|
12
12
|
#
|
13
13
|
# These commands must be available on your PATH in order to use them.
|
14
14
|
#
|
15
|
-
# This class is loaded as a transformer
|
15
|
+
# This class is loaded as a transformer in the Awestruct pipeline. The
|
16
16
|
# constructor accepts an array of symbols representing the file types to minimize.
|
17
17
|
#
|
18
|
-
#
|
18
|
+
# extension Awestruct::Extensions::Minify.new
|
19
19
|
#
|
20
20
|
# This transform recognizes the following symbols:
|
21
21
|
#
|
@@ -57,28 +57,30 @@ module Awestruct
|
|
57
57
|
|
58
58
|
def transform(site, page, input)
|
59
59
|
if site.minify
|
60
|
-
ext = File.extname(page.output_path)
|
61
|
-
if
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
end
|
60
|
+
ext = File.extname(page.output_path)[1..-1].to_sym
|
61
|
+
if @types.include?(ext)
|
62
|
+
case ext
|
63
|
+
when :html
|
64
|
+
print "minifying html #{page.output_path}"
|
65
|
+
htmlcompressor(page, input, site.minify_html_opts)
|
66
|
+
when :css
|
67
|
+
print "minifying css #{page.output_path}"
|
68
|
+
yuicompressor(page, input, :css)
|
69
|
+
when :js
|
70
|
+
print "minifying js #{page.output_path}"
|
71
|
+
yuicompressor(page, input, :js)
|
72
|
+
when :png
|
73
|
+
print "minifying png #{page.output_path}"
|
74
|
+
pngcrush(page, input)
|
75
|
+
else
|
76
|
+
input
|
78
77
|
end
|
78
|
+
else
|
79
|
+
input
|
79
80
|
end
|
81
|
+
else
|
82
|
+
input
|
80
83
|
end
|
81
|
-
input
|
82
84
|
end
|
83
85
|
|
84
86
|
private
|
@@ -27,22 +27,22 @@ module Awestruct
|
|
27
27
|
date = Time.parse page.date
|
28
28
|
end
|
29
29
|
year = date.year
|
30
|
-
month =
|
31
|
-
day =
|
30
|
+
month = date.month
|
31
|
+
day = date.day
|
32
32
|
page.date = Time.utc(year, month, day)
|
33
33
|
slug = $1
|
34
34
|
end
|
35
35
|
|
36
36
|
# if a date was found create a post
|
37
37
|
if( year and month and day)
|
38
|
-
page.slug
|
38
|
+
page.slug = slug
|
39
39
|
#context = OpenStruct.new({
|
40
40
|
#:site=>site,
|
41
41
|
#:page=>page,
|
42
42
|
#})
|
43
43
|
context = page.create_context
|
44
44
|
#page.body = page.render( context )
|
45
|
-
page.output_path = "#{@path_prefix}/#{year}/#{month}/#{day}/#{
|
45
|
+
page.output_path = "#{@path_prefix}/#{year}/#{month}/#{day}/#{slug}.html"
|
46
46
|
#page.layout = 'post'
|
47
47
|
posts << page
|
48
48
|
end
|
@@ -1,31 +1,49 @@
|
|
1
1
|
require 'awestruct/handler_chain'
|
2
2
|
require 'awestruct/handlers/file_handler'
|
3
|
+
require 'awestruct/handlers/front_matter_handler'
|
4
|
+
require 'awestruct/handlers/interpolation_handler'
|
3
5
|
require 'awestruct/handlers/markdown_handler'
|
4
|
-
require 'awestruct/handlers/orgmode_handler'
|
5
|
-
require 'awestruct/handlers/asciidoc_handler'
|
6
|
-
require 'awestruct/handlers/restructuredtext_handler'
|
7
6
|
require 'awestruct/handlers/textile_handler'
|
8
|
-
require 'awestruct/handlers/erb_handler'
|
9
7
|
require 'awestruct/handlers/haml_handler'
|
10
8
|
require 'awestruct/handlers/sass_handler'
|
11
9
|
require 'awestruct/handlers/scss_handler'
|
12
|
-
require 'awestruct/handlers/
|
10
|
+
require 'awestruct/handlers/layout_handler'
|
11
|
+
require 'awestruct/handlers/page_delegating_handler'
|
13
12
|
|
14
13
|
module Awestruct
|
15
14
|
|
16
15
|
class HandlerChains
|
17
16
|
|
17
|
+
|
18
18
|
DEFAULTS = [
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
19
|
+
HandlerChain.new( /\.md$/,
|
20
|
+
Awestruct::Handlers::FileHandler,
|
21
|
+
Awestruct::Handlers::FrontMatterHandler,
|
22
|
+
Awestruct::Handlers::InterpolationHandler,
|
23
|
+
Awestruct::Handlers::MarkdownHandler,
|
24
|
+
Awestruct::Handlers::LayoutHandler
|
25
|
+
),
|
26
|
+
HandlerChain.new( /\.textile$/,
|
27
|
+
Awestruct::Handlers::FileHandler,
|
28
|
+
Awestruct::Handlers::FrontMatterHandler,
|
29
|
+
Awestruct::Handlers::InterpolationHandler,
|
30
|
+
Awestruct::Handlers::TextileHandler,
|
31
|
+
Awestruct::Handlers::LayoutHandler
|
32
|
+
),
|
33
|
+
HandlerChain.new( /\.haml$/,
|
34
|
+
Awestruct::Handlers::FileHandler,
|
35
|
+
Awestruct::Handlers::FrontMatterHandler,
|
36
|
+
Awestruct::Handlers::HamlHandler,
|
37
|
+
Awestruct::Handlers::LayoutHandler
|
38
|
+
),
|
39
|
+
HandlerChain.new( /\.sass$/,
|
40
|
+
Awestruct::Handlers::FileHandler,
|
41
|
+
Awestruct::Handlers::SassHandler
|
42
|
+
),
|
43
|
+
HandlerChain.new( /\.scss$/,
|
44
|
+
Awestruct::Handlers::FileHandler,
|
45
|
+
Awestruct::Handlers::ScssHandler
|
46
|
+
),
|
29
47
|
HandlerChain.new( /.*/, Awestruct::Handlers::FileHandler )
|
30
48
|
]
|
31
49
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
|
2
2
|
require 'hashery/open_cascade'
|
3
|
-
require 'open3'
|
4
3
|
|
5
4
|
module Awestruct
|
6
5
|
module Handlers
|
@@ -83,12 +82,7 @@ module Awestruct
|
|
83
82
|
end
|
84
83
|
|
85
84
|
def inherit_front_matter(page)
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
def dependencies
|
90
|
-
return @delegate.dependencies if @delegate
|
91
|
-
[]
|
85
|
+
@delegate.inherit_front_matter(page) if @delegate
|
92
86
|
end
|
93
87
|
|
94
88
|
def to_chain
|
@@ -97,15 +91,6 @@ module Awestruct
|
|
97
91
|
chain.flatten
|
98
92
|
end
|
99
93
|
|
100
|
-
def execute_shell(command, input=nil)
|
101
|
-
Open3.popen3(command) do |stdin, stdout, _|
|
102
|
-
stdin.puts input unless input.nil?
|
103
|
-
out = stdout.read
|
104
|
-
end
|
105
|
-
rescue Errno::EPIPE
|
106
|
-
""
|
107
|
-
end
|
108
|
-
|
109
94
|
end
|
110
95
|
end
|
111
96
|
end
|