Sha256: 640c3b70ad7db8b93630ea9393f683d2ee548158a04ce9c0cdbf5c8b8990f5d4

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

module Scaffoldhub
  class ScaffoldSpec < RemoteFile

    SCAFFOLD_HUB_SERVER = 'scaffoldhub.org'

    def initialize(url, local, status_proc)
      @scaffold    = url
      @local       = local
      @status_proc = status_proc
      super(@status_proc)
    end

    def download_and_parse!
      if @local
        parse_local
      else
        parse_remote!
      end
    end

    def select_files(type)
      template_file_specs.select { |file_spec| file_spec[:type] == type.to_s }.collect do |file_spec|
        TemplateFile.new file_spec[:src], file_spec[:dest], @local, base_url, @status_proc
      end
    end

    def find_file(type, name)
      file_spec = template_file_specs.detect { |file_spec| file_spec[:src] == name && file_spec[:type] == type.to_s }
      unless file_spec.nil?
        TemplateFile.new file_spec[:src], file_spec[:dest], @local, base_url, @status_proc
      end
    end

    def parse_local
      if File.exists?(url)
        require url
      else
        raise Errno::ENOENT.new(url)
      end
    end

    def parse_remote!
      @spec = YAML::load(remote_file_contents!)
    end

    def template_file_specs
      if @local
        Specification.files
      else
        @spec[:files]
      end
    end

    def url
      if @local
        @scaffold
      else
        "http://#{SCAFFOLD_HUB_SERVER}/scaffolds/#{@scaffold}/spec"
      end
    end

    def base_url
      if @local
        File.dirname(File.expand_path(@scaffold))
      else
        @spec[:base_url]
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
scaffoldhub-0.0.4 lib/scaffoldhub/scaffold_spec.rb
scaffoldhub-0.0.3 lib/scaffoldhub/scaffold_spec.rb
scaffoldhub-0.0.2 lib/scaffoldhub/scaffold_spec.rb