bard 0.6.7 → 0.6.8
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/VERSION +1 -1
- data/bard.gemspec +1 -1
- data/bin/bard +2 -2
- data/features/bard_check.feature +0 -6
- data/features/bard_deploy.feature +1 -1
- data/features/bard_pull.feature +1 -1
- data/features/step_definitions/check_steps.rb +1 -1
- data/lib/bard.rb +11 -11
- data/lib/bard/error.rb +1 -2
- data/lib/bard/git.rb +1 -1
- data/lib/bard/io.rb +2 -2
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.8
|
data/bard.gemspec
CHANGED
data/bin/bard
CHANGED
data/features/bard_check.feature
CHANGED
@@ -69,12 +69,6 @@ Feature: Bard can check its environment for missing dependencies and potential p
|
|
69
69
|
When I type "bard check"
|
70
70
|
Then I should see the fatal error "tracking"
|
71
71
|
|
72
|
-
Scenario: Bard check detects missing RAILS_ENV environment variable
|
73
|
-
Given a shared rails project
|
74
|
-
And my "RAILS_ENV" environment variable is ""
|
75
|
-
When I type "bard check"
|
76
|
-
Then I should see the warning "RAILS_ENV is not set"
|
77
|
-
|
78
72
|
Scenario: Bard check detects missing staging hook
|
79
73
|
Given a shared rails project
|
80
74
|
And my "RAILS_ENV" environment variable is "staging"
|
@@ -5,7 +5,7 @@ Feature: Bard deploy should fold the integration branch into master and perform
|
|
5
5
|
And the remote master branch has had a commit since I last pulled
|
6
6
|
And I have committed a set of changes to my local integration branch
|
7
7
|
When I type "bard deploy"
|
8
|
-
Then I should see the fatal error "
|
8
|
+
Then I should see the fatal error "Rebase"
|
9
9
|
|
10
10
|
Scenario: Bard deploy works
|
11
11
|
Given a shared rails project
|
data/features/bard_pull.feature
CHANGED
@@ -12,7 +12,7 @@ Feature: bard pull
|
|
12
12
|
When I type "bard pull"
|
13
13
|
Then the "integration" branch should match the "origin/integration" branch
|
14
14
|
And there should be one new submodule
|
15
|
-
And the submodule branch should match the submodule origin branch
|
15
|
+
#TODO And the submodule branch should match the submodule origin branch
|
16
16
|
And the submodule working directory should be clean
|
17
17
|
|
18
18
|
Scenario: Pulling down when the latest changes include a submodule update
|
@@ -4,7 +4,7 @@ Then /^I should see the current version of bard$/ do
|
|
4
4
|
end
|
5
5
|
|
6
6
|
Then /^I should see the current version of git$/ do
|
7
|
-
version = `git --version`[/[0-9]+\.[0-9]+\.[0-9]
|
7
|
+
version = `git --version`[/[0-9]+\.[0-9]+\.[0-9]+/]
|
8
8
|
@stdout.should =~ /git\s+\(#{Regexp.escape(version)}\)/
|
9
9
|
end
|
10
10
|
|
data/lib/bard.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
$:.unshift File.expand_path(File.dirname(__FILE__))
|
2
|
+
require 'rubygems'
|
2
3
|
require 'term/ansicolor'
|
3
4
|
require 'net/http'
|
4
5
|
require 'systemu'
|
@@ -21,7 +22,7 @@ class Bard < Thor
|
|
21
22
|
|
22
23
|
desc "check [PROJECT_PATH]", "check current project and environment for missing dependencies and common problems"
|
23
24
|
def check(project_path = nil)
|
24
|
-
project_path = "." if project_path.nil? and File.directory? ".git"
|
25
|
+
project_path = "." if project_path.nil? and File.directory? ".git" and File.exist? "config/environment.rb"
|
25
26
|
check_dependencies
|
26
27
|
check_project project_path if project_path
|
27
28
|
end
|
@@ -34,7 +35,7 @@ class Bard < Thor
|
|
34
35
|
|
35
36
|
run_crucial "git pull --rebase origin integration"
|
36
37
|
|
37
|
-
prepare_environment
|
38
|
+
prepare_environment changed_files(@common_ancestor, "origin/integration")
|
38
39
|
end
|
39
40
|
|
40
41
|
desc "push", "push local changes out to the remote"
|
@@ -43,7 +44,7 @@ class Bard < Thor
|
|
43
44
|
|
44
45
|
raise SubmoduleDirtyError if submodule_dirty?
|
45
46
|
raise SubmoduleUnpushedError if submodule_unpushed?
|
46
|
-
raise
|
47
|
+
raise NonFastForwardError unless fast_forward_merge?
|
47
48
|
|
48
49
|
run_crucial "git push origin integration", true
|
49
50
|
|
@@ -58,7 +59,6 @@ class Bard < Thor
|
|
58
59
|
run_crucial "git checkout master"
|
59
60
|
run_crucial "git pull --rebase origin master"
|
60
61
|
raise MasterNonFastForwardError if not fast_forward_merge? "master", "integration"
|
61
|
-
end
|
62
62
|
|
63
63
|
run_crucial "git merge integration"
|
64
64
|
run_crucial "git push origin master"
|
@@ -81,9 +81,9 @@ class Bard < Thor
|
|
81
81
|
end
|
82
82
|
|
83
83
|
raise StagingDetachedHeadError unless current_branch
|
84
|
-
old_rev, new_rev, branch =
|
84
|
+
old_rev, new_rev, branch = gets.split(' ') # get the low down about the commit from the git hook
|
85
85
|
|
86
|
-
if current_branch == branch
|
86
|
+
if current_branch == branch.split('/').last
|
87
87
|
run_crucial "git reset --hard"
|
88
88
|
prepare_environment changed_files(old_rev, new_rev)
|
89
89
|
end
|
@@ -94,7 +94,7 @@ class Bard < Thor
|
|
94
94
|
def ensure_sanity!
|
95
95
|
check_dependencies
|
96
96
|
raise NotInProjectRootError unless File.directory? ".git"
|
97
|
-
raise NotOnIntegrationError
|
97
|
+
raise NotOnIntegrationError unless current_branch == "integration"
|
98
98
|
raise WorkingTreeDirtyError unless `git status`.include? "working directory clean"
|
99
99
|
end
|
100
100
|
|
@@ -104,11 +104,11 @@ class Bard < Thor
|
|
104
104
|
run_crucial "rake db:migrate RAILS_ENV=test"
|
105
105
|
end
|
106
106
|
|
107
|
-
|
108
|
-
run_crucial "git submodule sync"
|
109
|
-
run_crucial "git submodule init"
|
110
|
-
end
|
107
|
+
run_crucial "git submodule sync"
|
111
108
|
run_crucial "git submodule update --merge"
|
109
|
+
if `git submodule` =~ /^[^ ]/
|
110
|
+
run_crucial "git submodule update --init"
|
111
|
+
end
|
112
112
|
run_crucial "git submodule foreach 'git reset --hard'"
|
113
113
|
|
114
114
|
if changed_files.any? { |f| f =~ %r(^config/environment.+) }
|
data/lib/bard/error.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
class Bard < Thor
|
2
|
-
class BardError < StandardError; end
|
3
2
|
{
|
4
3
|
"SubmoduleDirtyError" => "You have uncommitted changes to a submodule!\n Please see Micah about this.",
|
5
4
|
"SubmoduleUnpushedError" => "You have unpushed changes to a submodule!\n Please see Micah about this.",
|
@@ -11,7 +10,7 @@ class Bard < Thor
|
|
11
10
|
"StagingDetachedHeadError" => "The staging server is on a detached HEAD!\n Please see Micah for assistance."
|
12
11
|
}.each do |error, message|
|
13
12
|
eval <<-RUBY
|
14
|
-
class #{error} <
|
13
|
+
class #{error} < Bard::Error
|
15
14
|
def message
|
16
15
|
%q{#{message}}
|
17
16
|
end
|
data/lib/bard/git.rb
CHANGED
@@ -3,7 +3,7 @@ module BardGit
|
|
3
3
|
def current_branch
|
4
4
|
ref = `git symbolic-ref HEAD 2>&1`.chomp
|
5
5
|
return false if ref =~ /^fatal:/
|
6
|
-
|
6
|
+
ref.split('/').last # /refs/heads/master ... we want "master"
|
7
7
|
end
|
8
8
|
|
9
9
|
def fast_forward_merge?(root = "origin/integration", branch = "HEAD")
|
data/lib/bard/io.rb
CHANGED
@@ -3,12 +3,12 @@ module BardIO
|
|
3
3
|
private
|
4
4
|
|
5
5
|
def warn(message)
|
6
|
-
message = message.message if message.
|
6
|
+
message = message.new.message if message.superclass == Bard::Error
|
7
7
|
$stderr.puts yellow("! ") + message
|
8
8
|
end
|
9
9
|
|
10
10
|
def fatal(message)
|
11
|
-
raise red("!!! ") + message
|
11
|
+
raise Bard::Error, red("!!! ") + message
|
12
12
|
end
|
13
13
|
|
14
14
|
def run_crucial(command, verbose = false)
|