Sha256: dc8cf5e777be4e4416d1e1ab6224850ec0615b40b0a440d267cd8b3ddca178e6

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 KB

Contents

class Bueller
  class GemSpecHelper
    class VersionMissing < StandardError; end
    class NoGemspecFound < StandardError; end

    attr_accessor :spec, :spec_source, :base_dir, :errors

    def errors
      @errors ||= []
    end

    def initialize(base_dir = nil)
      self.base_dir = base_dir || ''
    end

    def valid?
      begin
        reload_spec
        spec
      rescue => e
        errors << "could not eval gemspec: #{e}"
        return false
      end

      begin
        spec.validate
      rescue => e
        errors << "gemspec is invalid: #{e}"
        return false
      end

      true
    end

    def write
      File.open(path, 'w') do |f|
        f.puts spec_source
      end 
    end

    def path
      return @path unless @path.nil?
      denormalized_path = Dir.glob(File.join(base_dir, '*.gemspec')).first
      raise NoGemspecFound, "No gemspec found in #{base_dir}" if denormalized_path.nil?
      absolute_path = File.expand_path(denormalized_path)
      @path = absolute_path.gsub(Dir.getwd + File::SEPARATOR, '') 
    end

    def spec_source
      @spec_source ||= File.read(path)
    end

    def reload_spec
      @spec = nil
    end

    def spec
      @spec ||= eval(spec_source)
    end

    def gem_path
      File.join(base_dir, 'pkg', spec.file_name)
    end

    def update_version(version)
      raise VersionMissing unless has_version?
      spec_source.sub! /\.version\s*=\s*.*/, %Q{.version = "#{version}"}
      reload_spec
    end

    def set_date
      spec_source.sub! /\.date\s*=\s*.*/, %Q{.date = "#{Time.now.strftime('%Y-%m-%d')}"}
      reload_spec
    end

    def has_version?
      !spec.version.nil?
    end

    def version
      spec.version
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bueller-0.0.4 lib/bueller/gemspec_helper.rb
bueller-0.0.3 lib/bueller/gemspec_helper.rb
bueller-0.0.2 lib/bueller/gemspec_helper.rb