Class: Feature::Land
- Inherits:
-
Object
show all
- Includes:
- Feature
- Defined in:
- lib/straight_line/common/feature/land.rb
Overview
Merges the feature to master and pushes it
Instance Method Summary
collapse
Methods included from Feature
#changes_committed?, #current_feature
Constructor Details
#initialize ⇒ Land
Returns a new instance of Land.
13
14
15
16
17
18
19
20
21
|
# 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
|
Instance Method Details
#land(_args = {}) ⇒ Object
23
24
25
26
27
28
29
30
31
|
# 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) ⇒ Object
33
34
35
36
37
38
39
40
41
|
# 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) ⇒ Object
43
44
45
46
47
48
49
50
51
52
|
# 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) ⇒ Boolean
54
55
56
57
|
# 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
|