assisted_workflow 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile.lock
CHANGED
@@ -26,6 +26,7 @@ module AssistedWorkflow::Addons
|
|
26
26
|
|
27
27
|
# run all the git steps required for a clean pull request
|
28
28
|
def rebase_and_push
|
29
|
+
log "preparing local branch"
|
29
30
|
check_everything_commited!
|
30
31
|
branch = current_branch
|
31
32
|
git "checkout master"
|
@@ -53,18 +54,22 @@ module AssistedWorkflow::Addons
|
|
53
54
|
end
|
54
55
|
|
55
56
|
# check if current branch is merged into master
|
56
|
-
def
|
57
|
+
def check_merged!
|
57
58
|
check_everything_commited!
|
58
59
|
branch = current_branch
|
59
60
|
git "checkout master"
|
60
61
|
git "pull --rebase"
|
61
62
|
merged = git("branch --merged").include?(branch)
|
62
63
|
git "checkout #{branch}"
|
64
|
+
unless merged
|
65
|
+
raise AssistedWorkflow::Error, "this branch is not merged into master"
|
66
|
+
end
|
63
67
|
merged
|
64
68
|
end
|
65
69
|
|
66
70
|
# removes current branch and its remote version
|
67
71
|
def remove_branch
|
72
|
+
log "removing local and remote feature branches"
|
68
73
|
branch = current_branch
|
69
74
|
git "push origin :#{branch}", :raise_error => false
|
70
75
|
git "checkout master"
|
@@ -50,7 +50,7 @@ describe AssistedWorkflow::Addons::Git do
|
|
50
50
|
@git.repository.must_equal "flaviogranero/assisted_workflow"
|
51
51
|
end
|
52
52
|
|
53
|
-
describe "#
|
53
|
+
describe "#check_merged!" do
|
54
54
|
|
55
55
|
before do
|
56
56
|
mock(@git).system("git status --porcelain"){ "" }
|
@@ -61,12 +61,13 @@ describe AssistedWorkflow::Addons::Git do
|
|
61
61
|
|
62
62
|
it "returns true if current branch is merged into master" do
|
63
63
|
mock(@git).system("git branch --merged"){ "flavio.00001.new_feature" }
|
64
|
-
@git.
|
64
|
+
@git.check_merged!.must_equal true
|
65
65
|
end
|
66
66
|
|
67
67
|
it "returns false if current branch is not merged into master" do
|
68
68
|
mock(@git).system("git branch --merged"){ "flavio.00002.other_feature" }
|
69
|
-
@git.
|
69
|
+
proc { @git.check_merged! }.must_raise AssistedWorkflow::Error, "this branch is not merged into master"
|
70
|
+
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assisted_workflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -151,7 +151,6 @@ files:
|
|
151
151
|
- lib/assisted_workflow/cli.rb
|
152
152
|
- lib/assisted_workflow/config_file.rb
|
153
153
|
- lib/assisted_workflow/exceptions.rb
|
154
|
-
- lib/assisted_workflow/git.rb
|
155
154
|
- lib/assisted_workflow/output.rb
|
156
155
|
- lib/assisted_workflow/templates/awconfig.global.tt
|
157
156
|
- lib/assisted_workflow/templates/awconfig.local.tt
|
@@ -219,7 +218,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
218
|
version: '0'
|
220
219
|
segments:
|
221
220
|
- 0
|
222
|
-
hash:
|
221
|
+
hash: 4272922658484443950
|
223
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
224
223
|
none: false
|
225
224
|
requirements:
|
@@ -228,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
227
|
version: '0'
|
229
228
|
segments:
|
230
229
|
- 0
|
231
|
-
hash:
|
230
|
+
hash: 4272922658484443950
|
232
231
|
requirements: []
|
233
232
|
rubyforge_project:
|
234
233
|
rubygems_version: 1.8.24
|
@@ -1,111 +0,0 @@
|
|
1
|
-
require "assisted_workflow/exceptions"
|
2
|
-
|
3
|
-
module AssistedWorkflow
|
4
|
-
|
5
|
-
class GitError < Error; end
|
6
|
-
|
7
|
-
class Git
|
8
|
-
|
9
|
-
DESCRIPTION_LIMIT = 30
|
10
|
-
|
11
|
-
def initialize(output, options = {})
|
12
|
-
super
|
13
|
-
@command_options = {:raise_error => true}.merge(options)
|
14
|
-
end
|
15
|
-
|
16
|
-
# creates a new git branch based on story attributes
|
17
|
-
# the branch name format is:
|
18
|
-
# => story_onwer_username.story_id.story_name
|
19
|
-
def create_story_branch(story)
|
20
|
-
log "creating the new branch"
|
21
|
-
branch = branch_name(story)
|
22
|
-
git "checkout -b #{branch}"
|
23
|
-
# git "push --set-upstream origin #{branch}"
|
24
|
-
end
|
25
|
-
|
26
|
-
# run all the git steps required for a clean pull request
|
27
|
-
def rebase_and_push
|
28
|
-
log "preparing local branch"
|
29
|
-
check_everything_commited!
|
30
|
-
branch = current_branch
|
31
|
-
git "checkout master"
|
32
|
-
git "pull --rebase"
|
33
|
-
git "checkout #{branch}"
|
34
|
-
git "rebase master"
|
35
|
-
git "push -u -f origin #{branch}"
|
36
|
-
end
|
37
|
-
|
38
|
-
# returns the current story id based on branch name
|
39
|
-
def current_story_id
|
40
|
-
current_branch.split(".")[1]
|
41
|
-
end
|
42
|
-
|
43
|
-
# returns the current local branch name
|
44
|
-
def current_branch
|
45
|
-
git("rev-parse --abbrev-ref HEAD", :silent => true)
|
46
|
-
end
|
47
|
-
|
48
|
-
# returns the repository name assigned to origin following the format:
|
49
|
-
# owner/project
|
50
|
-
def repository
|
51
|
-
url = git("config --get remote.origin.url", :error => "cannot find 'origin' remote repository url")
|
52
|
-
url.gsub("git@github.com:", "").gsub("https://github.com/", "").gsub(/\.git$/, "").chomp
|
53
|
-
end
|
54
|
-
|
55
|
-
# check if current branch is merged into master
|
56
|
-
def check_merged!
|
57
|
-
check_everything_commited!
|
58
|
-
branch = current_branch
|
59
|
-
git "checkout master"
|
60
|
-
git "pull --rebase"
|
61
|
-
merged = git("branch --merged").include?(branch)
|
62
|
-
git "checkout #{branch}"
|
63
|
-
unless merged
|
64
|
-
raise AssistedWorkflow::Error, "this branch is not merged into master"
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
# removes current branch and its remote version
|
69
|
-
def remove_branch
|
70
|
-
log "removing local and remote feature branches"
|
71
|
-
branch = current_branch
|
72
|
-
git "push origin :#{branch}", :raise_error => false
|
73
|
-
git "checkout master"
|
74
|
-
git "branch -D #{branch}"
|
75
|
-
end
|
76
|
-
|
77
|
-
private
|
78
|
-
|
79
|
-
def git(command, options = {})
|
80
|
-
options = @command_options.merge(options)
|
81
|
-
# log("git #{command}", :step => true) unless options[:silent] == true
|
82
|
-
result = system("git #{command}")
|
83
|
-
if system_error? && options[:raise_error]
|
84
|
-
msg = ["git command error", options[:error]].compact.join(": ")
|
85
|
-
raise GitError, msg
|
86
|
-
end
|
87
|
-
result
|
88
|
-
end
|
89
|
-
|
90
|
-
def system(command)
|
91
|
-
%x{#{command}}.chomp
|
92
|
-
end
|
93
|
-
|
94
|
-
def system_error?
|
95
|
-
$? != 0
|
96
|
-
end
|
97
|
-
|
98
|
-
def branch_name(story)
|
99
|
-
description = story.name.to_s.downcase.gsub(/\W/, "_").slice(0, DESCRIPTION_LIMIT)
|
100
|
-
[story.other_id, story.id, description].join(".").downcase
|
101
|
-
end
|
102
|
-
|
103
|
-
def not_commited_changes
|
104
|
-
git("status --porcelain", :silent => true).split("\n")
|
105
|
-
end
|
106
|
-
|
107
|
-
def check_everything_commited!
|
108
|
-
raise AssistedWorkflow::Error, "git: there are not commited changes" unless not_commited_changes.empty?
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|