lib/scaffoldhub/helper.rb in scaffoldhub-0.0.1 vs lib/scaffoldhub/helper.rb in scaffoldhub-0.0.2

- old
+ new

@@ -1,36 +1,73 @@ module Scaffoldhub module Helper - def self.scaffold - @scaffold - end + class << self + def scaffold_spec + @scaffold_spec + end - def self.scaffold=(scaffold) - @scaffold = scaffold + def scaffold_spec=(scaffold) + @scaffold_spec = scaffold + end end def each_template_file(type) begin - Scaffoldhub::Helper.scaffold ||= Scaffoldhub::Scaffold.new(options[:scaffold], options[:local], status_proc) - Scaffoldhub::SpecFile.new(status_proc).select_files(type).each do |template_file| - if options[:local] - raise Errno::ENOENT.new(template_file.src) unless File.exists?(template_file.src) - else - template_file.download - end - yield template_file + scaffold_spec.select_files(type).each do |template_file| + yield template_file.download! end - rescue Errno::ENOENT - say_status :error, "File not found error for #{File.expand_path(options[:scaffold])}", :red + rescue Errno::ENOENT => e + say_status :error, e.message, :red rescue Scaffoldhub::NotFoundException => e say_status :error, "HTTP 404 not found error for #{e.message}", :red rescue Scaffoldhub::NetworkErrorException => e say_status :error, "HTTP error connecting to #{e.message}", :red end end + def find_template_file(type, name) + begin + template_file = scaffold_spec.find_file(type, name) + template_file.download! unless template_file.nil? + rescue Errno::ENOENT => e + say_status :error, e.message, :red + nil + rescue Scaffoldhub::NotFoundException => e + say_status :error, "HTTP 404 not found error for #{e.message}", :red + nil + rescue Scaffoldhub::NetworkErrorException => e + say_status :error, "HTTP error connecting to #{e.message}", :red + nil + end + end + + def scaffold_spec + Helper.scaffold_spec ||= download_scaffold_spec! + end + + def download_scaffold_spec! + scaffold_spec = ScaffoldSpec.new(scaffold_name, options[:local], status_proc) + scaffold_spec.download_and_parse! + scaffold_spec + end + + def scaffold_name + parse_scaffold_option(0) + end + + def scaffold_parameter + parse_scaffold_option(1) + end + def status_proc - @proc ||= lambda { |url| say_status :download, url } + @status_proc ||= lambda { |url| say_status :download, url } end + + private + + def parse_scaffold_option(index) + options[:scaffold].split(':')[index] + end + end end