marv 0.3.2 → 0.4.0
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/.document +5 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +8 -10
- data/Gemfile.lock +16 -43
- data/LICENSE +0 -24
- data/README.md +9 -10
- data/Rakefile +4 -20
- data/VERSION +1 -1
- data/bin/marv +1 -1
- data/layouts/config/global.rb +31 -0
- data/layouts/config/project.rb +27 -0
- data/layouts/config/{router.php.erb → router.php} +5 -1
- data/layouts/config/server.rb +12 -0
- data/layouts/config/{wp-config.php.erb → wp-config.php} +0 -0
- data/layouts/plugin/{images → assets/images}/screenshot.png +0 -0
- data/layouts/plugin/{javascripts → assets/javascripts}/admin.coffee +0 -0
- data/layouts/plugin/{javascripts → assets/javascripts}/admin.js +0 -0
- data/layouts/plugin/{javascripts → assets/javascripts}/plugin.coffee +0 -0
- data/layouts/plugin/assets/javascripts/plugin.js +1 -0
- data/layouts/plugin/{stylesheets → assets/stylesheets}/plugin.scss +0 -0
- data/layouts/plugin/functions/{plugin.php.erb → plugin.php} +8 -7
- data/layouts/theme/{images → assets/images}/screenshot.png +0 -0
- data/layouts/theme/{javascripts → assets/javascripts}/admin.coffee +0 -0
- data/layouts/theme/{javascripts → assets/javascripts}/admin.js +0 -0
- data/layouts/theme/{javascripts → assets/javascripts}/theme.coffee +0 -0
- data/layouts/theme/{javascripts → assets/javascripts}/theme.js +0 -0
- data/layouts/theme/assets/stylesheets/_header.scss +18 -0
- data/layouts/theme/{stylesheets/style.scss.erb → assets/stylesheets/style.scss} +0 -0
- data/layouts/theme/functions/{functions.php.erb → functions.php} +0 -0
- data/layouts/theme/includes/{filters-admin.php.erb → filters-admin.php} +0 -0
- data/layouts/theme/includes/{filters.php.erb → filters.php} +0 -0
- data/layouts/theme/includes/{helpers.php.erb → helpers.php} +0 -0
- data/layouts/theme/templates/{404.php.erb → pages/404.php} +0 -0
- data/layouts/theme/templates/{archive.php.erb → pages/archive.php} +0 -0
- data/layouts/theme/templates/{author.php.erb → pages/author.php} +0 -0
- data/layouts/theme/templates/{search.php.erb → pages/search.php} +0 -0
- data/layouts/theme/templates/partials/{comments.php.erb → comments.php} +0 -0
- data/layouts/theme/templates/partials/{content-none.php.erb → content-none.php} +0 -0
- data/layouts/theme/templates/partials/{content.php.erb → content.php} +0 -0
- data/layouts/theme/templates/partials/{searchform.php.erb → searchform.php} +0 -0
- data/lib/marv.rb +8 -8
- data/lib/marv/cli.rb +15 -192
- data/lib/marv/cli/project.rb +57 -0
- data/lib/marv/cli/server.rb +65 -0
- data/lib/marv/global.rb +285 -0
- data/lib/marv/project/actions.rb +144 -0
- data/lib/marv/project/builder.rb +61 -0
- data/lib/marv/project/builder/assets.rb +112 -0
- data/lib/marv/{engines.rb → project/builder/engines.rb} +3 -1
- data/lib/marv/project/builder/functions.rb +112 -0
- data/lib/marv/project/builder/templates.rb +37 -0
- data/lib/marv/project/create.rb +139 -0
- data/lib/marv/project/guard.rb +83 -0
- data/lib/marv/project/guard/assets.rb +37 -0
- data/lib/{guard/marv → marv/project/guard}/config.rb +5 -9
- data/lib/marv/project/guard/functions.rb +44 -0
- data/lib/marv/project/guard/templates.rb +35 -0
- data/lib/marv/project/project.rb +149 -0
- data/lib/marv/server/actions.rb +79 -0
- data/lib/marv/server/create.rb +100 -0
- data/lib/marv/server/server.rb +201 -0
- data/marv.gemspec +69 -71
- metadata +82 -107
- data/.rspec +0 -1
- data/features/step_definitions/marv_steps.rb +0 -38
- data/features/support/env.rb +0 -17
- data/layouts/config/project-config.rb +0 -17
- data/layouts/plugin/javascripts/plugin.js +0 -1
- data/layouts/theme/stylesheets/_header.scss.erb +0 -18
- data/lib/guard/marv/assets.rb +0 -33
- data/lib/guard/marv/folders.rb +0 -33
- data/lib/guard/marv/functions.rb +0 -34
- data/lib/guard/marv/templates.rb +0 -33
- data/lib/marv/builder.rb +0 -355
- data/lib/marv/error.rb +0 -8
- data/lib/marv/generator.rb +0 -140
- data/lib/marv/guard.rb +0 -68
- data/lib/marv/project.rb +0 -134
- data/lib/marv/server.rb +0 -284
- data/spec/lib/marv/project_spec.rb +0 -34
- data/spec/spec_helper.rb +0 -12
data/lib/guard/marv/folders.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'guard'
|
2
|
-
require 'guard/guard'
|
3
|
-
|
4
|
-
module Guard
|
5
|
-
class MarvFolders < ::Guard::Guard
|
6
|
-
|
7
|
-
def initialize(watchers=[], options={})
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
# Runs on marv watch
|
12
|
-
def start
|
13
|
-
copy_folders("Copying folders over", true)
|
14
|
-
end
|
15
|
-
|
16
|
-
# Runs on all command in guard console
|
17
|
-
def run_all
|
18
|
-
copy_folders("Rebuilding all folders", true)
|
19
|
-
end
|
20
|
-
|
21
|
-
# Called on file(s) modifications
|
22
|
-
def run_on_change(paths)
|
23
|
-
copy_folders("Folders have changed, copying over", nil)
|
24
|
-
end
|
25
|
-
|
26
|
-
# Copy folders
|
27
|
-
def copy_folders(message, clean)
|
28
|
-
UI.info message
|
29
|
-
::Marv::Guard.builder.copy_folders(clean)
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
data/lib/guard/marv/functions.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'guard'
|
2
|
-
require 'guard/guard'
|
3
|
-
|
4
|
-
module Guard
|
5
|
-
class MarvFunctions < ::Guard::Guard
|
6
|
-
|
7
|
-
def initialize(watchers=[], options={})
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
# Runs on marv watch
|
12
|
-
def start
|
13
|
-
copy_functions("Copying functions over", true)
|
14
|
-
end
|
15
|
-
|
16
|
-
# Runs on all command in guard console
|
17
|
-
def run_all
|
18
|
-
copy_functions("Rebuilding all functions", true)
|
19
|
-
end
|
20
|
-
|
21
|
-
# Called on file(s) modifications
|
22
|
-
def run_on_change(paths)
|
23
|
-
copy_functions("Functions have changed, copying over", nil)
|
24
|
-
end
|
25
|
-
|
26
|
-
# Copy and clean functions and includes folder
|
27
|
-
def copy_functions(message, clean)
|
28
|
-
UI.info message
|
29
|
-
::Marv::Guard.builder.copy_functions(clean)
|
30
|
-
::Marv::Guard.builder.copy_includes(clean)
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
data/lib/guard/marv/templates.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'guard'
|
2
|
-
require 'guard/guard'
|
3
|
-
|
4
|
-
module Guard
|
5
|
-
class MarvTemplates < ::Guard::Guard
|
6
|
-
|
7
|
-
def initialize(watchers=[], options={})
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
# Runs on marv watch
|
12
|
-
def start
|
13
|
-
copy_templates("Copying templates over", true)
|
14
|
-
end
|
15
|
-
|
16
|
-
# Runs on all command in guard console
|
17
|
-
def run_all
|
18
|
-
copy_templates("Rebuilding all templates", true)
|
19
|
-
end
|
20
|
-
|
21
|
-
# Called on file(s) modifications
|
22
|
-
def run_on_change(paths)
|
23
|
-
copy_templates("Templates have changed, copying over", nil)
|
24
|
-
end
|
25
|
-
|
26
|
-
# Copy templates
|
27
|
-
def copy_templates(message, clean)
|
28
|
-
UI.info message
|
29
|
-
::Marv::Guard.builder.copy_templates(clean)
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
data/lib/marv/builder.rb
DELETED
@@ -1,355 +0,0 @@
|
|
1
|
-
require 'sprockets'
|
2
|
-
require 'sass'
|
3
|
-
require 'less'
|
4
|
-
require 'zip'
|
5
|
-
require 'marv/engines'
|
6
|
-
|
7
|
-
module Marv
|
8
|
-
class Builder
|
9
|
-
|
10
|
-
def initialize(project)
|
11
|
-
@project = project
|
12
|
-
@task = project.task
|
13
|
-
@templates_path = @project.templates_path
|
14
|
-
@assets_path = @project.assets_path
|
15
|
-
@functions_path = @project.functions_path
|
16
|
-
@includes_path = @project.includes_path
|
17
|
-
@package_path = @project.package_path
|
18
|
-
|
19
|
-
init_sprockets
|
20
|
-
end
|
21
|
-
|
22
|
-
# Runs all the methods necessary to build a completed project
|
23
|
-
def build
|
24
|
-
clean_build_directory
|
25
|
-
copy_folders
|
26
|
-
copy_templates
|
27
|
-
copy_functions
|
28
|
-
copy_includes
|
29
|
-
build_assets
|
30
|
-
end
|
31
|
-
|
32
|
-
# Use the rubyzip library to build a zip from the generated source
|
33
|
-
def zip(filename=nil)
|
34
|
-
filename = filename || File.basename(@project.root)
|
35
|
-
project_base = File.basename(@project.root)
|
36
|
-
|
37
|
-
zip_filename = File.join(File.basename(@package_path), "#{filename}.zip")
|
38
|
-
# Create a temporary file for RubyZip to write to
|
39
|
-
temp_filename = "#{zip_filename}.tmp"
|
40
|
-
|
41
|
-
File.delete(temp_filename) if File.exists?(temp_filename)
|
42
|
-
|
43
|
-
# Wrapping the zip creation in Thor's create_file to get "overwrite" prompts
|
44
|
-
# Note: I could be overcomplicating this
|
45
|
-
@task.create_file(zip_filename) do
|
46
|
-
Zip::File.open(temp_filename, Zip::File::CREATE) do |zip|
|
47
|
-
# Get all filenames in the build directory recursively
|
48
|
-
filenames = Dir[File.join(@project.build_path, '**', '*')]
|
49
|
-
|
50
|
-
# Remove the build directory path from the filename
|
51
|
-
filenames.collect! {|path| path.gsub(/#{@project.build_path}\//, '')}
|
52
|
-
|
53
|
-
# Add each file in the build directory to the zip file
|
54
|
-
filenames.each do |filename|
|
55
|
-
zip.add File.join(project_base, filename), File.join(@project.build_path, filename)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
# Give Thor contents of zip file for "overwrite" prompt
|
60
|
-
File.open(temp_filename, 'rb') { |f| f.read }
|
61
|
-
end
|
62
|
-
|
63
|
-
# Clean up the temp file
|
64
|
-
File.delete(temp_filename)
|
65
|
-
end
|
66
|
-
|
67
|
-
# Empty out the build directory
|
68
|
-
def clean_build_directory
|
69
|
-
# create build path if it does not exist
|
70
|
-
unless File.exists?(@project.build_path)
|
71
|
-
FileUtils.mkdir_p(@project.build_path)
|
72
|
-
end
|
73
|
-
# Empty the build path
|
74
|
-
FileUtils.rm_rf Dir.glob(File.join(@project.build_path, '*'))
|
75
|
-
end
|
76
|
-
|
77
|
-
def clean_templates
|
78
|
-
# TODO: cleaner way of removing templates only?
|
79
|
-
Dir.glob(File.join(@project.build_path, '*.php')).each do |path|
|
80
|
-
FileUtils.rm path unless path.include?('functions.php')
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def copy_templates(clean=nil)
|
85
|
-
unless clean.nil?
|
86
|
-
clean_templates
|
87
|
-
end
|
88
|
-
|
89
|
-
template_paths.each do |template_path|
|
90
|
-
# Skip directories
|
91
|
-
next if File.directory?(template_path)
|
92
|
-
|
93
|
-
if template_path.end_with?('.erb')
|
94
|
-
# Chop the .erb extension off the filename
|
95
|
-
destination = File.join(@project.build_path, File.basename(template_path).slice(0..-5))
|
96
|
-
|
97
|
-
write_erb(template_path, destination)
|
98
|
-
else
|
99
|
-
# Regular old copy of PHP-only files
|
100
|
-
FileUtils.cp template_path, @project.build_path
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def clean_functions
|
106
|
-
#remove functions php
|
107
|
-
if File.exists?(File.join(@project.build_path, 'functions.php'))
|
108
|
-
FileUtils.rm File.join(@project.build_path, 'functions.php')
|
109
|
-
end
|
110
|
-
# Remove plugin file
|
111
|
-
if File.exists?(@project.project_php_file)
|
112
|
-
FileUtils.rm File.join(@project.build_path, @project.project_php_file)
|
113
|
-
end
|
114
|
-
# Remove functions folder
|
115
|
-
if File.directory?(File.join(@project.build_path, 'functions'))
|
116
|
-
FileUtils.rm_rf File.join(@project.build_path, 'functions')
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def copy_functions(clean=nil)
|
121
|
-
# Clean functions
|
122
|
-
unless clean.nil?
|
123
|
-
clean_functions
|
124
|
-
end
|
125
|
-
|
126
|
-
# Copy functions
|
127
|
-
functions_erb_path = File.join(@functions_path, 'functions.php.erb')
|
128
|
-
functions_php_path = File.join(@functions_path, 'functions.php')
|
129
|
-
plugin_php_path = File.join(@functions_path, @project.project_php_file)
|
130
|
-
|
131
|
-
if File.exists?(functions_erb_path)
|
132
|
-
destination = File.join(@project.build_path, 'functions.php')
|
133
|
-
write_erb(functions_erb_path, destination)
|
134
|
-
elsif File.exists?(functions_php_path)
|
135
|
-
FileUtils.cp functions_php_path, @project.build_path
|
136
|
-
end
|
137
|
-
|
138
|
-
if File.exists?(plugin_php_path)
|
139
|
-
FileUtils.cp plugin_php_path, @project.build_path
|
140
|
-
end
|
141
|
-
|
142
|
-
functions_paths = Dir.glob(File.join(@functions_path, '*')).reject do |filename|
|
143
|
-
[functions_erb_path, functions_php_path, plugin_php_path].include?(filename)
|
144
|
-
end
|
145
|
-
|
146
|
-
unless functions_paths.empty?
|
147
|
-
# Create the functions folder in the build directory
|
148
|
-
unless File.directory?(File.join(@project.build_path, 'functions'))
|
149
|
-
FileUtils.mkdir_p(File.join(@project.build_path, 'functions'))
|
150
|
-
end
|
151
|
-
|
152
|
-
# Iterate over all files in source/functions, skipping the actual functions.php file
|
153
|
-
paths = Dir.glob(File.join(@functions_path, '**', '*')).reject do |filename|
|
154
|
-
[functions_erb_path, functions_php_path, plugin_php_path].include?(filename)
|
155
|
-
end
|
156
|
-
|
157
|
-
copy_paths_with_erb(paths, @functions_path, File.join(@project.build_path, 'functions'))
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
def clean_includes
|
162
|
-
FileUtils.rm_rf File.join(@project.build_path, 'includes')
|
163
|
-
end
|
164
|
-
|
165
|
-
def copy_includes(clean=nil)
|
166
|
-
# Clean Includes
|
167
|
-
unless clean.nil?
|
168
|
-
clean_includes
|
169
|
-
end
|
170
|
-
|
171
|
-
# Copy includes
|
172
|
-
unless Dir.glob(File.join(@includes_path, '*')).empty?
|
173
|
-
# Create the includes folder in the build directory
|
174
|
-
unless File.directory?(File.join(@project.build_path, 'includes'))
|
175
|
-
FileUtils.mkdir(File.join(@project.build_path, 'includes'))
|
176
|
-
end
|
177
|
-
|
178
|
-
# Iterate over all files in source/includes, so we can exclude if necessary
|
179
|
-
paths = Dir.glob(File.join(@includes_path, '**', '*'))
|
180
|
-
copy_paths_with_erb(paths, @includes_path, File.join(@project.build_path, 'includes'))
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
def clean_folders(folder)
|
185
|
-
# Clean folder
|
186
|
-
relative_path = folder.gsub(@project.source_path, '')
|
187
|
-
destination = File.join(@project.build_path, relative_path)
|
188
|
-
|
189
|
-
FileUtils.rm_rf destination
|
190
|
-
end
|
191
|
-
|
192
|
-
def copy_folders(clean=nil)
|
193
|
-
folders = Dir.glob(File.join(@project.source_path, '*'))
|
194
|
-
|
195
|
-
folders.each do |folder|
|
196
|
-
if File.directory?(folder)
|
197
|
-
unless [@assets_path, @templates_path, @functions_path, @includes_path].include?(folder)
|
198
|
-
# Clean folders
|
199
|
-
unless clean.nil?
|
200
|
-
clean_folders(folder)
|
201
|
-
end
|
202
|
-
# Copy folders
|
203
|
-
paths = Dir.glob(File.join(folder, '**', '*'))
|
204
|
-
copy_paths_with_erb(paths, @project.source_path, @project.build_path)
|
205
|
-
end
|
206
|
-
end
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
def clean_images
|
211
|
-
FileUtils.rm_rf File.join(@project.build_path, 'images')
|
212
|
-
end
|
213
|
-
|
214
|
-
def build_assets(clean=nil)
|
215
|
-
# Clean images
|
216
|
-
unless clean.nil?
|
217
|
-
clean_images
|
218
|
-
end
|
219
|
-
|
220
|
-
# Build assets
|
221
|
-
default_assets = [['style.css'], ['admin.css'], ['javascripts', 'theme.js'], ['javascripts', 'admin.js']]
|
222
|
-
additional_assets = @project.config[:additional_assets]
|
223
|
-
|
224
|
-
if additional_assets
|
225
|
-
assets = default_assets + additional_assets
|
226
|
-
else
|
227
|
-
assets = default_assets
|
228
|
-
end
|
229
|
-
|
230
|
-
assets.each do |asset|
|
231
|
-
destination = File.join(@project.build_path, asset)
|
232
|
-
|
233
|
-
# Catch any sprockets errors and continue the process
|
234
|
-
begin
|
235
|
-
@task.shell.mute do
|
236
|
-
sprocket = @sprockets.find_asset(asset.last)
|
237
|
-
|
238
|
-
FileUtils.mkdir_p(File.dirname(destination)) unless File.directory?(File.dirname(destination))
|
239
|
-
sprocket.write_to(destination) unless sprocket.nil?
|
240
|
-
end
|
241
|
-
rescue Exception => e
|
242
|
-
@task.say "Error while building #{asset.last}:"
|
243
|
-
@task.say e.message, :red
|
244
|
-
|
245
|
-
File.open(destination, 'w') do |file|
|
246
|
-
file.puts(e.message)
|
247
|
-
end
|
248
|
-
|
249
|
-
# Re-initializing sprockets to prevent further errors
|
250
|
-
# TODO: This is done for lack of a better solution
|
251
|
-
init_sprockets
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
|
-
# Copy the images directory over
|
256
|
-
if File.directory?(File.join(@assets_path, 'images'))
|
257
|
-
FileUtils.cp_r(File.join(@assets_path, 'images'), @project.build_path)
|
258
|
-
end
|
259
|
-
|
260
|
-
# Check for screenshot and move it into main build directory
|
261
|
-
Dir.glob(File.join(@project.build_path, 'images', '*')).each do |filename|
|
262
|
-
if filename.index(/screenshot\.(png|jpg|jpeg|gif)/)
|
263
|
-
FileUtils.mv(filename, @project.build_path + File::SEPARATOR )
|
264
|
-
end
|
265
|
-
end
|
266
|
-
end
|
267
|
-
|
268
|
-
private
|
269
|
-
|
270
|
-
def copy_paths_with_erb(paths, source_dir, destination_dir)
|
271
|
-
paths.each do |path|
|
272
|
-
# Remove source directory from full file path to get the relative path
|
273
|
-
relative_path = path.gsub(source_dir, '')
|
274
|
-
|
275
|
-
destination = File.join(destination_dir, relative_path)
|
276
|
-
|
277
|
-
if destination.end_with?('.erb')
|
278
|
-
# Remove the .erb extension if the path was an erb file
|
279
|
-
destination = destination.slice(0..-5)
|
280
|
-
# And process it as an erb
|
281
|
-
write_erb(path, destination)
|
282
|
-
else
|
283
|
-
# Otherwise, we simply move the file over
|
284
|
-
FileUtils.mkdir_p(destination) if File.directory?(path)
|
285
|
-
FileUtils.cp path, destination unless File.directory?(path)
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
289
|
-
|
290
|
-
def init_sprockets
|
291
|
-
@sprockets = Sprockets::Environment.new
|
292
|
-
|
293
|
-
['javascripts', 'stylesheets'].each do |dir|
|
294
|
-
@sprockets.append_path File.join(@assets_path, dir)
|
295
|
-
end
|
296
|
-
|
297
|
-
if @project.config[:compress_js]
|
298
|
-
@sprockets.js_compressor = :uglify
|
299
|
-
end
|
300
|
-
|
301
|
-
if @project.config[:compress_css]
|
302
|
-
@sprockets.css_compressor = :scss
|
303
|
-
end
|
304
|
-
|
305
|
-
# Add assets/styleshets to load path for Less Engine
|
306
|
-
Tilt::LessTemplateWithPaths.load_path = File.join(@assets_path, 'stylesheets')
|
307
|
-
|
308
|
-
@sprockets.register_engine '.less', Tilt::LessTemplateWithPaths
|
309
|
-
|
310
|
-
# Passing the @project instance variable to the Sprockets::Context instance
|
311
|
-
# used for processing the asset ERB files. Ruby meta-programming, FTW.
|
312
|
-
@sprockets.context_class.instance_exec(@project) do |project|
|
313
|
-
define_method :config do
|
314
|
-
project.config
|
315
|
-
end
|
316
|
-
end
|
317
|
-
end
|
318
|
-
|
319
|
-
def template_paths
|
320
|
-
Dir.glob(File.join(@templates_path, '**', '*'))
|
321
|
-
end
|
322
|
-
|
323
|
-
# Generate a unique filename for the zip output
|
324
|
-
def get_output_filename(basename)
|
325
|
-
package_path_base = File.basename(@package_path)
|
326
|
-
filename = File.join(package_path_base, "#{basename}.zip")
|
327
|
-
|
328
|
-
i = 1
|
329
|
-
while File.exists?(filename)
|
330
|
-
filename = File.join(package_path_base, "#{basename}(#{i}).zip")
|
331
|
-
i += 1
|
332
|
-
end
|
333
|
-
|
334
|
-
filename
|
335
|
-
end
|
336
|
-
|
337
|
-
protected
|
338
|
-
|
339
|
-
# Write an .erb from source to destination, catching and reporting errors along the way
|
340
|
-
def write_erb(source, destination)
|
341
|
-
begin
|
342
|
-
@task.shell.mute do
|
343
|
-
@task.create_file(destination) do
|
344
|
-
@project.parse_erb(source)
|
345
|
-
end
|
346
|
-
end
|
347
|
-
rescue Exception => e
|
348
|
-
@task.say "Error while building #{File.basename(source)}:"
|
349
|
-
@task.say e.message + "\n", :red
|
350
|
-
exit
|
351
|
-
end
|
352
|
-
end
|
353
|
-
|
354
|
-
end
|
355
|
-
end
|