class Feature::Land
Merges the feature to master and pushes it
Public Class Methods
new()
click to toggle source
# File lib/straight_line/common/feature/land.rb, line 13 def initialize if current_feature == 'master' raise UserError, 'Failed to create diff: you\'re on the master branch' end return if changes_committed? raise UserError, 'Commit your changes before creating a diff' end
Public Instance Methods
land(_args = {})
click to toggle source
# File lib/straight_line/common/feature/land.rb, line 23 def land(_args = {}) feature_name = current_feature merge_master_to_feature(feature_name) GitCommands::Push.new(feature_name).run merge_feature_to_master(feature_name) GitCommands::Push.new(feature_name, delete: true).run Command.new('git checkout master').run Util.logger.info 'Changes landed to master, on master branch now.' end
merge_feature_to_master(feature_name)
click to toggle source
# File lib/straight_line/common/feature/land.rb, line 33 def merge_feature_to_master(feature_name) if pull_request_closed?(feature_name) Util.logger.info %(#{feature_name} was merged in github. You're repo is up-to-date with remote) else GitCommands::Merge.new('master', feature_name).run GitCommands::Push.new('master').run end end
merge_master_to_feature(feature_name)
click to toggle source
# File lib/straight_line/common/feature/land.rb, line 43 def merge_master_to_feature(feature_name) GitCommands::Pull.new('master').run GitCommands::Merge.new(feature_name, 'master').run begin GitCommands::Commit.new("Merge master into #{feature_name}", '').run rescue StandardError => e raise e unless e.message =~ /nothing to commit/ end end
pull_request_closed?(feature_name)
click to toggle source
# File lib/straight_line/common/feature/land.rb, line 54 def pull_request_closed?(feature_name) p = Github.pull_request_for_feature feature_name p.nil? || p.state == 'closed' end