Sha256: 102b8f49a284c6d65e5984ec8a800d794b5438632bd79d7bbd1973e5fa4920cd

Contents?: true

Size: 1.68 KB

Versions: 3

Compression:

Stored size: 1.68 KB

Contents

# encoding: utf-8

require "pathname"
require "semantic"

module Desi
  class LocalInstall

    class Release
      def self.all_in(workdir)
        Dir[workdir.join('*')].
          select {|subdir| File.directory?(subdir) && File.basename(subdir) =~ /^elasticsearch\-\d+\.\d+\.\d+/ }.
          map {|dirname| new(dirname, workdir) }
      end

      def initialize(dirname, workdir)
        @dirname = Pathname.new(dirname)
        @workdir = workdir
      end

      def name
        @name ||= File.basename(@dirname)
      end

      def current?
        current_symlink? && current_symlink.realpath == @dirname
      end

      def version
        @version ||= Semantic::Version.new(version_number)
      end

      def with_version?(other_version)
        version == Semantic::Version.new(other_version)
      end

      def to_s
        current_mark = current? ? '*' : '-'

        " #{current_mark} #{name} (#{@dirname})"
      end

      def ==(other)
        other.version.to_s == version.to_s
      end

      def <=>(other)
        name <=> other.name
      end

      def pre_one_zero?
        @pre_one_zero ||= (version < Semantic::Version.new("1.0.0-alpha"))
      end

      def to_path
        @dirname.to_path
      end

      private

      def current_symlink
        @current_symlink ||= Pathname(@workdir).join('current')
      end

      def current_symlink?
        current_symlink.exist?
      end

      # Ugly hack to get around elasticsearch's flakey semver naming
      # (e.g. `1.4.0.Beta1` instead of `1.4.0-beta1`)
      def version_number
        /^elasticsearch\-(?<version>.*)$/.match(name.to_s)[:version].
          sub(/\.(alpha|beta)/i, '-\1')
      end
    end # Release

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
desi-0.7.2 lib/desi/local_install/release.rb
desi-0.7.1 lib/desi/local_install/release.rb
desi-0.7.0 lib/desi/local_install/release.rb