Class: GemRelease::VersionFile

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/gem_release/version_file.rb

Constant Summary collapse

VERSION_PATTERN =
/(VERSION\s*=\s*(?:"|'))((?:(?!"|').)*)("|')/
NUMBER_PATTERN =
/(\d+)\.(\d+)\.(\d+)(.*)/
PRERELEASE_NUMBER_PATTERN =
/(\d+)\.(\d+)\.(\d+)\.(.*)(\d+)/

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#gem_filename, #gem_name, #gem_name_from_directory, #gem_version, #gemspec, #gemspec_dirs, #gemspec_filename, #github_token, #github_user, #in_bootstrapped_dir, #in_gemspec_dirs, #quiet?, #run_cmd, #user_email, #user_name

Constructor Details

#initialize(options = {}) ⇒ VersionFile

Returns a new instance of VersionFile.



13
14
15
16
17
18
# File 'lib/gem_release/version_file.rb', line 13

def initialize(options = {})
  @target = options[:target]
  if @target == nil || @target == ''
    @target = is_prerelease_version_number?(old_number) ? :pre : :patch
  end
end

Instance Attribute Details

#targetObject (readonly)

Returns the value of attribute target.



11
12
13
# File 'lib/gem_release/version_file.rb', line 11

def target
  @target
end

Instance Method Details

#bump!Object



20
21
22
23
# File 'lib/gem_release/version_file.rb', line 20

def bump!
  File.open(filename, 'w+') { |f| f.write(bumped_content) }
  reload_version
end

#filenameObject



48
49
50
51
52
53
54
# File 'lib/gem_release/version_file.rb', line 48

def filename
  path = gem_name
  path = path.gsub('-', '/') unless File.exists?(path_to_version_file(path))
  path = path.gsub('/', '_') unless File.exists?(path_to_version_file(path))

  File.expand_path(path_to_version_file(path))
end

#new_numberObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/gem_release/version_file.rb', line 25

def new_number
  @new_number ||=
    if is_version_number?(target)
      target
    elsif [:major, :minor, :patch].include?(target.to_sym)
      old_number.sub(NUMBER_PATTERN) do
        send(target, $1, $2, $3)
      end
    elsif is_prerelease_version_number?(old_number)
      old_number.sub(PRERELEASE_NUMBER_PATTERN) do
        prerelease($1, $2, $3, $4, $5)
      end
    else
      old_number.sub(NUMBER_PATTERN) do
        "#{patch($1, $2, $3)}.#{target}1"
      end
    end
end

#old_numberObject



44
45
46
# File 'lib/gem_release/version_file.rb', line 44

def old_number
  @old_number ||= content =~ VERSION_PATTERN && $2
end