class Shaf::Command::Upgrade
Public Class Methods
options(parser, options)
click to toggle source
# File lib/shaf/command/upgrade.rb, line 19 def self.options(parser, options) parser.on('--skip VERSION', String, 'Skip version') do |v| options[:skip_version] = Shaf::Upgrade::Version.new(v) end end
Public Instance Methods
apply!(package)
click to toggle source
# File lib/shaf/command/upgrade.rb, line 55 def apply!(package) package.load.apply or raise UpgradeFailedError.new(package.version) rescue Errno::ENOENT raise UpgradeFailedError, "Failed to execute system command 'patch'. Make sure that 'patch' installed!" \ " (E.g. `sudo apt install patch` for Ubuntu)" end
call()
click to toggle source
# File lib/shaf/command/upgrade.rb, line 25 def call in_project_root do upgrade_packages.each do |package| next if skip? package if package.version == current_failed_version print_previous_failed_warning package.version else apply!(package) end write_shaf_version(package.version) end puts "\nProject is up-to-date! Shaf version: #{current_version}" end rescue UpgradeFailedError => e write_shaf_upgrade_failure e.version puts <<~ERR Failed to upgrade project to version #{e.version} Please try resolve these issues manually and try again. For more info see: https://github.com/sammyhenningsson/shaf/blob/master/doc/UPGRADE.md ERR raise end
current_failed_version()
click to toggle source
# File lib/shaf/command/upgrade.rb, line 86 def current_failed_version version = read_shaf_upgrade_failure_version Shaf::Upgrade::Version.new(version) if version end
current_version()
click to toggle source
# File lib/shaf/command/upgrade.rb, line 77 def current_version version = read_shaf_version or raise UnknownShafVersionError Shaf::Upgrade::Version.new(version) end
print_previous_failed_warning(version)
click to toggle source
# File lib/shaf/command/upgrade.rb, line 91 def print_previous_failed_warning(version) puts <<~MSG Previous upgrade to version #{version} failed! Assuming all files has been fixed manually and continuing with upgrade. MSG end
skip?(package)
click to toggle source
# File lib/shaf/command/upgrade.rb, line 63 def skip?(package) return false unless options[:skip_version] package.version == options[:skip_version] end
target_version()
click to toggle source
# File lib/shaf/command/upgrade.rb, line 82 def target_version Shaf::Upgrade::Version.new(ENV.fetch('UPGRADE_TARGET', '99.9.9')) end
upgrade_packages()
click to toggle source
# File lib/shaf/command/upgrade.rb, line 68 def upgrade_packages current = current_version target = target_version Shaf::Upgrade::Package.all.select do |package| current < package.version && package.version <= target end end