class Rrm::Repository
Constants
- CLONEDIR
Attributes
branch_name[RW]
dockerfile[RW]
gemfile[RW]
gemfile_lock[RW]
gitlab_ci[RW]
level[RW]
major[RW]
minor[RW]
name[RW]
patch[RW]
rubocop[RW]
travis[RW]
url[RW]
Public Class Methods
new(url, level, update_gems)
click to toggle source
# File lib/rrm/repository.rb, line 13 def initialize(url, level, update_gems) @url = url @name = url.split('/').last.gsub('.git', '') @dockerfile = Rrm::Dockerfile.new(git) @gemfile = Rrm::Gemfile.new(git) @gemfile_lock = Rrm::GemfileLock.new(git, update_gems) @gitlab_ci = Rrm::GitlabCi.new(git) @rubocop = Rrm::Rubocop.new(git) @travis = Rrm::Travis.new(git) @major, @minor, @patch = current_version.split('.') @level = level end
Public Instance Methods
current_version()
click to toggle source
# File lib/rrm/repository.rb, line 30 def current_version @current_version ||= fetch_current_version end
git()
click to toggle source
# File lib/rrm/repository.rb, line 26 def git @git ||= clone_or_update_git end
new_version()
click to toggle source
# File lib/rrm/repository.rb, line 34 def new_version @new_version ||= decide_new_ruby_version end
push!()
click to toggle source
# File lib/rrm/repository.rb, line 51 def push! git.push('origin', @branch_name) end
update!()
click to toggle source
# File lib/rrm/repository.rb, line 38 def update! Rrm.logger.debug "Updating #{name} from #{current_version} to #{new_version}" create_branch dockerfile.update!(new_version) gemfile.update!(new_version) gemfile_lock.update!(new_version) gitlab_ci.update!(new_version) rubocop.update!(new_version.split('.')[0..1].join('.')) travis.update!(new_version) rescue Rrm.logger.warn("Failed to update! #{$!.message} - #{$!.backtrace}") end
Private Instance Methods
all()
click to toggle source
# File lib/rrm/repository.rb, line 62 def all Rrm.all_ruby_versions.dup end
clone_or_update_git()
click to toggle source
# File lib/rrm/repository.rb, line 123 def clone_or_update_git git = Git.open("#{CLONEDIR}#{name}") git.pull('origin', 'master') Rrm.logger.debug("Using previous directory #{CLONEDIR}#{name}") git rescue ArgumentError Rrm.logger.debug("Could not Git.open - reverting to Git.clone instead") Git.clone(url, name, path: CLONEDIR) rescue Rrm.logger.error("Could not open or clone #{url} because #{$!.message} - #{$!.backtrace}") nil end
create_branch()
click to toggle source
# File lib/rrm/repository.rb, line 57 def create_branch @branch_name = "#{Time.new.strftime('%Y%m%d%H%M%S')}_upgrade_to_ruby_#{new_version.delete('.')}" git.branch(@branch_name).checkout end
decide_new_ruby_version()
click to toggle source
# File lib/rrm/repository.rb, line 66 def decide_new_ruby_version case level when :major_next major_next when :major_latest major_latest when :minor_next minor_next when :minor_latest minor_latest when :patch_next patch_next when :patch_latest patch_latest end end
fetch_current_version()
click to toggle source
# File lib/rrm/repository.rb, line 136 def fetch_current_version line = git.object('master:Gemfile').grep('ruby ').flatten.last return nil unless line.flatten.last.include?('ruby ') line.flatten.last.match(/(\d.\d.\d)/).to_s rescue Rrm.logger.warn("fetch_current_version not found for #{name} - #{$!.message} - #{$!.backtrace}") nil end
major_latest()
click to toggle source
# File lib/rrm/repository.rb, line 90 def major_latest next_major = (major.to_i+1).to_s all.select{|v| v > next_major}.last rescue nil end
major_next()
click to toggle source
# File lib/rrm/repository.rb, line 83 def major_next next_major = (major.to_i+1).to_s all.select{|v| v.start_with?("#{next_major}.")}.last rescue nil end
minor_latest()
click to toggle source
# File lib/rrm/repository.rb, line 104 def minor_latest all.select{|v| v.start_with?("#{major}.")}.last rescue nil end
minor_next()
click to toggle source
# File lib/rrm/repository.rb, line 97 def minor_next next_minor = (minor.to_i+1).to_s all.select{|v| v.start_with?("#{major}.#{next_minor}.")}.last rescue nil end
patch_latest()
click to toggle source
# File lib/rrm/repository.rb, line 117 def patch_latest all.select{|v| v.start_with?("#{major}.#{minor}.")}.last rescue nil end
patch_next()
click to toggle source
# File lib/rrm/repository.rb, line 110 def patch_next next_patch = (patch.to_i+1).to_s all.select{|v| v == ("#{major}.#{minor}.#{next_patch}")}.last rescue nil end