lib/scaffoldhub/helper.rb in scaffoldhub-0.0.12 vs lib/scaffoldhub/helper.rb in scaffoldhub-0.0.13
- old
+ new
@@ -1,8 +1,11 @@
module Scaffoldhub
module Helper
+ class ScaffoldParameterMissing < RuntimeError
+ end
+
class << self
def scaffold_spec
@scaffold_spec
end
@@ -63,10 +66,14 @@
end
def download_scaffold_spec!
scaffold_spec = ScaffoldSpec.new(scaffold_name, options[:local], status_proc)
scaffold_spec.download_and_parse!
+ if scaffold_spec.parameter_example && scaffold_parameter.nil?
+ say_status :error, parameter_missing_message(scaffold_spec.parameter_example), :red
+ raise ScaffoldParameterMissing
+ end
scaffold_spec
end
def scaffold_name
parse_scaffold_option(0)
@@ -75,20 +82,30 @@
def scaffold_parameter
parse_scaffold_option(1)
end
def replace_name_tokens(dest)
- dest.gsub(/PLURAL_NAME/, file_name.pluralize).gsub(/NAME/, file_name)
+ result = dest.gsub(/PLURAL_NAME/, file_name.pluralize).gsub(/NAME/, file_name)
+ result.gsub!(/SCAFFOLD_PARAMETER/, scaffold_parameter) unless scaffold_parameter.nil?
+ result
end
+ def post_install_message
+ message = scaffold_spec.post_install_message
+ replace_name_tokens(message) if message
+ end
+
def status_proc
@status_proc ||= lambda { |url| say_status :download, url }
end
private
def parse_scaffold_option(index)
options[:scaffold].split(':')[index]
end
+ def parameter_missing_message(example)
+ "Scaffold parameter missing; please specify the #{example} after the scaffold name like this: --scaffold #{scaffold_name}:#{example}"
+ end
end
end