awestruct 0.0.5 → 0.0.6
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/bin/awestruct +22 -19
- data/lib/awestruct/commands/generate.rb +1 -1
- data/lib/awestruct/commands/init.rb +1 -0
- data/lib/awestruct/commands/manifest.rb +41 -8
- data/lib/awestruct/engine.rb +14 -1
- data/lib/awestruct/erb_file.rb +24 -0
- data/lib/awestruct/erbable.rb +19 -0
- data/lib/awestruct/org_mode_file.rb +24 -0
- data/lib/awestruct/org_modeable.rb +16 -0
- data/lib/awestruct/scss_file.rb +20 -0
- metadata +25 -4
data/bin/awestruct
CHANGED
@@ -87,7 +87,18 @@ def parse(args)
|
|
87
87
|
options
|
88
88
|
end
|
89
89
|
|
90
|
+
def site_path
|
91
|
+
dir = (@profiles_data.nil? || @profile_data.nil? || @profile_data['output_dir'].nil?) ? '_site' : @profile_data['output_dir']
|
92
|
+
path = File.join( Dir.pwd, dir )
|
93
|
+
end
|
94
|
+
|
90
95
|
options = parse(ARGV)
|
96
|
+
unless options.init
|
97
|
+
site_yaml_file = File.join( Dir.pwd, '_config', 'site.yml' )
|
98
|
+
site_yaml = YAML.load( File.read( site_yaml_file ) )
|
99
|
+
@profiles_data = site_yaml ? site_yaml['profiles'] : {}
|
100
|
+
@profile_data = @profiles_data[options.profile]
|
101
|
+
end
|
91
102
|
|
92
103
|
if ( options.init )
|
93
104
|
if ( options.generate || options.auto || options.server )
|
@@ -101,7 +112,7 @@ end
|
|
101
112
|
|
102
113
|
if ( options.deploy )
|
103
114
|
if ( options.auto || options.server )
|
104
|
-
$stderr.puts "--
|
115
|
+
$stderr.puts "--deploy may not be used with --auto or --server"
|
105
116
|
exit
|
106
117
|
end
|
107
118
|
|
@@ -111,38 +122,29 @@ if ( options.deploy )
|
|
111
122
|
end
|
112
123
|
|
113
124
|
|
114
|
-
|
115
|
-
|
116
|
-
$stderr.puts "No _site/ generated yet."
|
125
|
+
if ( @profiles_data.nil? )
|
126
|
+
$stderr.puts "_config/site.yml must define a 'profiles' section"
|
117
127
|
exit
|
118
128
|
end
|
119
129
|
|
120
|
-
site_yaml_file = File.join( Dir.pwd, '_config', 'site.yml' )
|
121
130
|
|
122
|
-
|
123
|
-
|
124
|
-
profiles_data = site_yaml['profiles']
|
125
|
-
|
126
|
-
if ( profiles_data.nil? )
|
127
|
-
$stderr.puts "_config/site.yml must define a 'profiles' section"
|
131
|
+
if ( @profile_data.nil? )
|
132
|
+
$stderr.puts "Unknown profile '#{options.profile}'"
|
128
133
|
exit
|
129
134
|
end
|
130
135
|
|
131
|
-
|
132
|
-
|
133
|
-
if ( profile_data.nil? )
|
134
|
-
$stderr.puts "Unknown profile '#{options.profile}'"
|
136
|
+
if ( ! File.exist?( site_path ) )
|
137
|
+
$stderr.puts "No #{site_path}/ generated yet."
|
135
138
|
exit
|
136
139
|
end
|
137
140
|
|
138
|
-
deploy_data = profile_data['deploy']
|
139
|
-
|
141
|
+
deploy_data = @profile_data['deploy']
|
140
142
|
if ( deploy_data.nil? )
|
141
143
|
$stderr.puts "No configuration for 'deploy'"
|
142
144
|
exit
|
143
145
|
end
|
144
146
|
|
145
|
-
cmd = Awestruct::Commands::Deploy.new(
|
147
|
+
cmd = Awestruct::Commands::Deploy.new( site_path, deploy_data )
|
146
148
|
|
147
149
|
cmd.run
|
148
150
|
exit
|
@@ -174,7 +176,8 @@ end
|
|
174
176
|
|
175
177
|
if ( options.server )
|
176
178
|
threads << Thread.new {
|
177
|
-
|
179
|
+
puts "Serving site at #{site_path}"
|
180
|
+
server_cmd = Awestruct::Commands::Server.new( site_path, options.bind_addr, options.port )
|
178
181
|
server_cmd.run
|
179
182
|
}
|
180
183
|
end
|
@@ -26,6 +26,7 @@ module Awestruct
|
|
26
26
|
if ( @scaffold )
|
27
27
|
manifest.copy_file( '_layouts/base.html.haml', File.join( File.dirname(__FILE__), '/base_layout.html.haml' ) )
|
28
28
|
manifest.copy_file( 'index.html.haml', File.join( File.dirname(__FILE__), '/base_index.html.haml' ) )
|
29
|
+
manifest.touch_file( '_config/site.yml' )
|
29
30
|
end
|
30
31
|
manifest.perform( @dir )
|
31
32
|
end
|
@@ -1,16 +1,31 @@
|
|
1
1
|
require 'compass/logger'
|
2
2
|
require 'compass/actions'
|
3
3
|
require 'compass/commands/base'
|
4
|
+
require 'compass/commands/registry'
|
4
5
|
require 'compass/commands/create_project'
|
5
|
-
require 'compass/installers/
|
6
|
+
require 'compass/installers/bare_installer'
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
module Compass::AppIntegration::StandAlone
|
9
|
+
end
|
10
|
+
|
11
|
+
class Compass::AppIntegration::StandAlone::Installer
|
12
|
+
def write_configuration_files(config_file = nil)
|
13
|
+
# no!
|
10
14
|
end
|
15
|
+
def finalize(opts={})
|
16
|
+
puts <<-END.gsub(/^ {6}/, '')
|
17
|
+
|
18
|
+
Now you're awestruct!
|
19
|
+
|
20
|
+
To generate your site continuous during development, simply run:
|
11
21
|
|
12
|
-
|
13
|
-
|
22
|
+
awestruct -d
|
23
|
+
|
24
|
+
and visit your site at
|
25
|
+
|
26
|
+
http://localhost:4242/
|
27
|
+
|
28
|
+
END
|
14
29
|
end
|
15
30
|
end
|
16
31
|
|
@@ -34,6 +49,10 @@ module Awestruct
|
|
34
49
|
def copy_file(path, input_path)
|
35
50
|
steps << CopyFile.new( path, input_path )
|
36
51
|
end
|
52
|
+
|
53
|
+
def touch_file(path)
|
54
|
+
steps << TouchFile.new(path)
|
55
|
+
end
|
37
56
|
|
38
57
|
def install_compass(framework)
|
39
58
|
steps << InstallCompass.new(framework)
|
@@ -104,6 +123,20 @@ module Awestruct
|
|
104
123
|
FileUtils.rmdir( p )
|
105
124
|
end
|
106
125
|
end
|
126
|
+
|
127
|
+
class TouchFile
|
128
|
+
def initialize(path)
|
129
|
+
@path = path
|
130
|
+
end
|
131
|
+
|
132
|
+
def perform(dir)
|
133
|
+
FileUtils.touch(File.join(dir, @path))
|
134
|
+
end
|
135
|
+
|
136
|
+
def unperform(dir)
|
137
|
+
#nothing
|
138
|
+
end
|
139
|
+
end
|
107
140
|
|
108
141
|
class CopyFile
|
109
142
|
def initialize(path, input_path)
|
@@ -154,8 +187,8 @@ module Awestruct
|
|
154
187
|
cmd = Compass::Commands::CreateProject.new( dir, {
|
155
188
|
:framework=>@framework,
|
156
189
|
:project_type=>:stand_alone,
|
157
|
-
|
158
|
-
|
190
|
+
:css_dir=>'_site/stylesheets',
|
191
|
+
:sass_dir=>'stylesheets',
|
159
192
|
:images_dir=>'images',
|
160
193
|
:javascripts_dir=>'javascripts',
|
161
194
|
} )
|
data/lib/awestruct/engine.rb
CHANGED
@@ -7,8 +7,11 @@ require 'time'
|
|
7
7
|
require 'awestruct/config'
|
8
8
|
require 'awestruct/site'
|
9
9
|
require 'awestruct/haml_file'
|
10
|
+
require 'awestruct/erb_file'
|
10
11
|
require 'awestruct/maruku_file'
|
11
12
|
require 'awestruct/sass_file'
|
13
|
+
require 'awestruct/scss_file'
|
14
|
+
require 'awestruct/org_mode_file'
|
12
15
|
require 'awestruct/verbatim_file'
|
13
16
|
|
14
17
|
require 'awestruct/context_helper'
|
@@ -86,10 +89,16 @@ module Awestruct
|
|
86
89
|
|
87
90
|
if ( path =~ /\.haml$/ )
|
88
91
|
page = HamlFile.new( site, path, fixed_relative_path )
|
92
|
+
elsif ( path =~ /\.erb$/ )
|
93
|
+
page = ErbFile.new( site, path, fixed_relative_path )
|
89
94
|
elsif ( path =~ /\.md$/ )
|
90
95
|
page = MarukuFile.new( site, path, fixed_relative_path )
|
91
96
|
elsif ( path =~ /\.sass$/ )
|
92
97
|
page = SassFile.new( site, path, fixed_relative_path )
|
98
|
+
elsif ( path =~ /\.scss$/ )
|
99
|
+
page = ScssFile.new( site, path, fixed_relative_path )
|
100
|
+
elsif ( path =~ /\.org$/ )
|
101
|
+
page = OrgModeFile.new( site, path, fixed_relative_path )
|
93
102
|
elsif ( File.file?( path ) )
|
94
103
|
page = VerbatimFile.new( site, path, fixed_relative_path )
|
95
104
|
end
|
@@ -113,6 +122,9 @@ module Awestruct
|
|
113
122
|
result = instance_eval( str )
|
114
123
|
result
|
115
124
|
end
|
125
|
+
def evaluate_erb(erb)
|
126
|
+
erb.result( binding )
|
127
|
+
end
|
116
128
|
end
|
117
129
|
context
|
118
130
|
end
|
@@ -239,7 +251,7 @@ module Awestruct
|
|
239
251
|
else
|
240
252
|
site.send( "#{k}=", v )
|
241
253
|
end
|
242
|
-
end
|
254
|
+
end if data
|
243
255
|
|
244
256
|
profile_data.each do |k,v|
|
245
257
|
site.send( "#{k}=", v )
|
@@ -267,6 +279,7 @@ module Awestruct
|
|
267
279
|
dir_pathname = Pathname.new( dir )
|
268
280
|
site.pages.clear
|
269
281
|
Find.find( dir ) do |path|
|
282
|
+
next if path == dir
|
270
283
|
basename = File.basename( path )
|
271
284
|
if ( basename == '.htaccess' )
|
272
285
|
#special case
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
require 'haml'
|
3
|
+
require 'awestruct/front_matter_file'
|
4
|
+
require 'awestruct/erbable'
|
5
|
+
|
6
|
+
module Awestruct
|
7
|
+
class ErbFile < FrontMatterFile
|
8
|
+
|
9
|
+
include Erbable
|
10
|
+
|
11
|
+
def initialize(site, source_path, relative_source_path)
|
12
|
+
super(site, source_path, relative_source_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def output_filename
|
16
|
+
File.basename( self.source_path, '.erb' )
|
17
|
+
end
|
18
|
+
|
19
|
+
def output_extension
|
20
|
+
File.extname( output_filename )
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'sass'
|
2
|
+
|
3
|
+
require 'compass'
|
4
|
+
|
5
|
+
module Awestruct
|
6
|
+
module Erbable
|
7
|
+
|
8
|
+
def render(context)
|
9
|
+
erb = ERB.new( raw_page_content )
|
10
|
+
context.evaluate_erb( erb )
|
11
|
+
end
|
12
|
+
|
13
|
+
def content
|
14
|
+
context = site.engine.create_context( self )
|
15
|
+
render( context )
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
require 'sass'
|
3
|
+
require 'awestruct/front_matter_file'
|
4
|
+
require 'awestruct/org_modeable'
|
5
|
+
|
6
|
+
module Awestruct
|
7
|
+
class OrgModeFile < FrontMatterFile
|
8
|
+
|
9
|
+
include OrgModeable
|
10
|
+
|
11
|
+
def initialize(site, source_path, relative_source_path)
|
12
|
+
super( site, source_path, relative_source_path )
|
13
|
+
end
|
14
|
+
|
15
|
+
def output_filename
|
16
|
+
File.basename( self.source_path, '.org' ) + output_extension
|
17
|
+
end
|
18
|
+
|
19
|
+
def output_extension
|
20
|
+
'.html'
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
require 'sass'
|
3
|
+
require 'awestruct/renderable_file'
|
4
|
+
require 'awestruct/sassable'
|
5
|
+
|
6
|
+
module Awestruct
|
7
|
+
class ScssFile < RenderableFile
|
8
|
+
|
9
|
+
include Sassable
|
10
|
+
|
11
|
+
def initialize(site, source_path, relative_source_path)
|
12
|
+
super( site, source_path, relative_source_path )
|
13
|
+
end
|
14
|
+
|
15
|
+
def output_filename
|
16
|
+
File.basename( source_path, '.scss' ) + '.css'
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awestruct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Bob McWhirter
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-06-12 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: hpricot
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
version: "0"
|
@@ -33,9 +36,11 @@ dependencies:
|
|
33
36
|
name: haml
|
34
37
|
prerelease: false
|
35
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
36
40
|
requirements:
|
37
41
|
- - ">="
|
38
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
39
44
|
segments:
|
40
45
|
- 0
|
41
46
|
version: "0"
|
@@ -45,9 +50,11 @@ dependencies:
|
|
45
50
|
name: maruku
|
46
51
|
prerelease: false
|
47
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
48
54
|
requirements:
|
49
55
|
- - ">="
|
50
56
|
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
51
58
|
segments:
|
52
59
|
- 0
|
53
60
|
version: "0"
|
@@ -57,9 +64,11 @@ dependencies:
|
|
57
64
|
name: compass
|
58
65
|
prerelease: false
|
59
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
60
68
|
requirements:
|
61
69
|
- - ">="
|
62
70
|
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
63
72
|
segments:
|
64
73
|
- 0
|
65
74
|
version: "0"
|
@@ -69,9 +78,11 @@ dependencies:
|
|
69
78
|
name: mongrel
|
70
79
|
prerelease: false
|
71
80
|
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ">="
|
74
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
75
86
|
segments:
|
76
87
|
- 0
|
77
88
|
version: "0"
|
@@ -95,6 +106,8 @@ files:
|
|
95
106
|
- lib/awestruct/config.rb
|
96
107
|
- lib/awestruct/context_helper.rb
|
97
108
|
- lib/awestruct/engine.rb
|
109
|
+
- lib/awestruct/erb_file.rb
|
110
|
+
- lib/awestruct/erbable.rb
|
98
111
|
- lib/awestruct/extensions/atomizer.rb
|
99
112
|
- lib/awestruct/extensions/google_analytics.rb
|
100
113
|
- lib/awestruct/extensions/indexifier.rb
|
@@ -107,10 +120,13 @@ files:
|
|
107
120
|
- lib/awestruct/hamlable.rb
|
108
121
|
- lib/awestruct/maruku_file.rb
|
109
122
|
- lib/awestruct/marukuable.rb
|
123
|
+
- lib/awestruct/org_mode_file.rb
|
124
|
+
- lib/awestruct/org_modeable.rb
|
110
125
|
- lib/awestruct/renderable.rb
|
111
126
|
- lib/awestruct/renderable_file.rb
|
112
127
|
- lib/awestruct/sass_file.rb
|
113
128
|
- lib/awestruct/sassable.rb
|
129
|
+
- lib/awestruct/scss_file.rb
|
114
130
|
- lib/awestruct/site.rb
|
115
131
|
- lib/awestruct/util/default_inflections.rb
|
116
132
|
- lib/awestruct/util/inflector.rb
|
@@ -119,6 +135,7 @@ files:
|
|
119
135
|
- lib/awestruct/commands/base_index.html.haml
|
120
136
|
- lib/awestruct/commands/base_layout.html.haml
|
121
137
|
- lib/awestruct/extensions/template.atom.haml
|
138
|
+
- bin/awestruct
|
122
139
|
has_rdoc: true
|
123
140
|
homepage:
|
124
141
|
licenses: []
|
@@ -129,23 +146,27 @@ rdoc_options: []
|
|
129
146
|
require_paths:
|
130
147
|
- lib
|
131
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
132
150
|
requirements:
|
133
151
|
- - ">="
|
134
152
|
- !ruby/object:Gem::Version
|
153
|
+
hash: 3
|
135
154
|
segments:
|
136
155
|
- 0
|
137
156
|
version: "0"
|
138
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
none: false
|
139
159
|
requirements:
|
140
160
|
- - ">="
|
141
161
|
- !ruby/object:Gem::Version
|
162
|
+
hash: 3
|
142
163
|
segments:
|
143
164
|
- 0
|
144
165
|
version: "0"
|
145
166
|
requirements: []
|
146
167
|
|
147
168
|
rubyforge_project:
|
148
|
-
rubygems_version: 1.3.
|
169
|
+
rubygems_version: 1.3.7
|
149
170
|
signing_key:
|
150
171
|
specification_version: 3
|
151
172
|
summary: Static site-baking utility
|