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*(?:"|'))(\d+\.\d+\.\d+)("|')/
NUMBER_PATTERN =
/(\d+)\.(\d+)\.(\d+)/

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#gem_filename, #gem_module_name, #gem_module_path, #gem_name, #gem_name_from_directory, #gem_version, #gemspec, #gemspec_filename, #github_token, #github_user, #user_email, #user_name

Constructor Details

#initialize(options = {}) ⇒ VersionFile

Returns a new instance of VersionFile.



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

def initialize(options = {})
  @target = options[:target] || :patch
end

Instance Attribute Details

#targetObject (readonly)

Returns the value of attribute target.



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

def target
  @target
end

Instance Method Details

#bump!Object



16
17
18
19
# File 'lib/gem_release/version_file.rb', line 16

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

#filenameObject



35
36
37
# File 'lib/gem_release/version_file.rb', line 35

def filename
  File.expand_path("lib/#{gem_module_path}/version.rb")
end

#force_load!Object



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

def force_load!
  silence { load(filename) }
end

#new_numberObject



25
26
27
28
29
# File 'lib/gem_release/version_file.rb', line 25

def new_number
  @new_number ||= old_number.sub(NUMBER_PATTERN) do
    respond_to?(target) ? send(target, $1, $2, $3) : target
  end
end

#old_numberObject



31
32
33
# File 'lib/gem_release/version_file.rb', line 31

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