propel 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  pkg/*
2
- .propel
2
+ .propel
3
+ tags
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm ruby-1.9.2@propel --create
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - rbx-2.0
6
+ - jruby
7
+ - ruby-head
8
+ - ree
@@ -1,14 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- propel (0.4.1)
4
+ propel (0.4.2)
5
5
  json
6
+ rake
6
7
 
7
8
  GEM
8
9
  remote: http://rubygems.org/
9
10
  specs:
10
11
  diff-lcs (1.1.2)
11
12
  json (1.5.1)
13
+ rake (0.9.2)
12
14
  rspec (2.5.0)
13
15
  rspec-core (~> 2.5.0)
14
16
  rspec-expectations (~> 2.5.0)
@@ -17,6 +19,7 @@ GEM
17
19
  rspec-expectations (2.5.0)
18
20
  diff-lcs (~> 1.1.2)
19
21
  rspec-mocks (2.5.0)
22
+ stub_shell (0.0.2)
20
23
 
21
24
  PLATFORMS
22
25
  ruby
@@ -24,3 +27,4 @@ PLATFORMS
24
27
  DEPENDENCIES
25
28
  propel!
26
29
  rspec (~> 2.5.0)
30
+ stub_shell (= 0.0.2)
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- # Propel
1
+ # Propel [![Build Status](https://secure.travis-ci.org/stackbuilders/propel.png)](http://travis-ci.org/stackbuilders/propel)
2
+
2
3
 
3
4
  Propel is a command that helps you to push to remote repositories while following best practices for
4
5
  continuous integration. We believe that before you push to a shared git repository, you should check that
@@ -74,6 +74,7 @@ module Propel
74
74
  end
75
75
 
76
76
  private
77
+
77
78
  def exit_with_error(message)
78
79
  warn message
79
80
  exit 1
@@ -81,14 +82,9 @@ module Propel
81
82
 
82
83
  def git git_args
83
84
  output, exitcode = run_command(git_args)
84
-
85
- if exitcode == 0
86
- Result.new(output, exitcode)
87
-
88
- else
89
- puts output
90
- exit exitcode
91
- end
85
+ logger.puts(output) unless exitcode == 0
86
+
87
+ Result.new(output, exitcode)
92
88
  end
93
89
 
94
90
  def run_command(cmd)
@@ -113,4 +109,4 @@ module Propel
113
109
  @options[:verbose] ? git_operation : "#{git_operation} -q"
114
110
  end
115
111
  end
116
- end
112
+ end
@@ -1,7 +1,7 @@
1
1
  module Propel
2
2
  class Runner
3
3
  attr_reader :logger, :repository
4
-
4
+
5
5
  def initialize(args = [ ])
6
6
  @repository = GitRepository.new
7
7
  @options = Configuration.new(args, @repository).options
@@ -44,7 +44,7 @@ module Propel
44
44
  if @options[:wait]
45
45
  unless remote_build_green?
46
46
  waited_for_build = true
47
-
47
+
48
48
  say_duration do
49
49
  logger.report_status("FAILING", :red)
50
50
  logger.puts "Waiting until the CI build is green."
@@ -54,7 +54,7 @@ module Propel
54
54
  end
55
55
 
56
56
  else
57
-
57
+
58
58
  alert_broken_build_and_exit unless remote_build_green?
59
59
  end
60
60
 
@@ -98,4 +98,4 @@ If you're waiting for someone else to fix the build, use propel with --wait (-w)
98
98
  Propel.new(@repository, @options[:rebase]).start
99
99
  end
100
100
  end
101
- end
101
+ end
@@ -1,3 +1,3 @@
1
1
  module Propel
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
@@ -22,7 +22,9 @@ Gem::Specification.new do |s|
22
22
  s.require_paths = ["lib"]
23
23
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
24
 
25
+ s.add_dependency('rake')
25
26
  s.add_dependency('json')
26
27
 
27
28
  s.add_development_dependency('rspec', ["~> 2.5.0"])
29
+ s.add_development_dependency('stub_shell', ["0.0.2"])
28
30
  end
@@ -3,28 +3,28 @@ require 'spec_helper'
3
3
  describe Propel::Configuration do
4
4
  describe "#options" do
5
5
  it "should prefer options given on the command line over options in a configuration file" do
6
- configuration = Propel::Configuration.new(['--rebase'], Propel::GitRepository.new)
6
+ configuration = Propel::Configuration.new(['--rebase'], mock('git repository'))
7
7
  configuration.stub!(:options_from_config_file).and_return(['--no-rebase'])
8
8
 
9
9
  configuration.options[:rebase].should be_true
10
10
  end
11
11
 
12
12
  it "should not overwrite options from config file with defaults" do
13
- configuration = Propel::Configuration.new([], Propel::GitRepository.new)
13
+ configuration = Propel::Configuration.new([], mock('git repository'))
14
14
  configuration.stub!(:options_from_config_file).and_return(['--wait'])
15
15
 
16
16
  configuration.options[:wait].should be_true
17
17
  end
18
18
 
19
19
  it "should set default options" do
20
- configuration = Propel::Configuration.new([], Propel::GitRepository.new)
20
+ configuration = Propel::Configuration.new([], mock('git repository'))
21
21
  configuration.stub!(:options_from_config_file).and_return([])
22
22
 
23
23
  configuration.options.should == { :rebase => true, :fix_ci => false, :verbose => false, :wait => false, :color => false }
24
24
  end
25
25
 
26
26
  it "should correct the color setting if on a Windows 32 system that does not support color" do
27
- configuration = Propel::Configuration.new(['--color'], Propel::GitRepository.new)
27
+ configuration = Propel::Configuration.new(['--color'], mock('git repository', project_root: '/tmp/foobar'))
28
28
  configuration.stub(:ruby_platform).and_return('mswin')
29
29
  configuration.stub!(:warn)
30
30
  configuration.options[:color].should be_false
@@ -33,10 +33,7 @@ describe Propel::Configuration do
33
33
 
34
34
  describe "#config_file" do
35
35
  it "should return a file located in the project root" do
36
- git_repository = Propel::GitRepository.new
37
- git_repository.stub!(:project_root).and_return('/foo/testdirectory')
38
-
39
- configuration = Propel::Configuration.new([], git_repository)
36
+ configuration = Propel::Configuration.new([], mock('git repository', project_root: '/foo/testdirectory'))
40
37
  configuration.config_file.should == '/foo/testdirectory/.propel'
41
38
  end
42
39
  end
@@ -18,11 +18,17 @@ describe Propel::GitRepository do
18
18
 
19
19
  describe "when the process exits with a non-zero exit status" do
20
20
  it "should print the process stdout to the console and exit with the exit code of the process" do
21
+ stub_shell do
22
+ command 'git pull --rebase' do
23
+ stdout 'my message'
24
+ exitstatus 127
25
+ end
26
+ end
27
+
21
28
  git_repository = Propel::GitRepository.new
29
+ git_repository.logger = stub_logger
22
30
 
23
- git_repository.should_receive(:run_command).with('pull --rebase').and_return([ 'my message', 127 ])
24
- git_repository.should_receive(:exit).with(127)
25
- git_repository.should_receive(:puts).with('my message')
31
+ git_repository.logger.should_receive(:puts).with('my message')
26
32
  git_repository.pull(true)
27
33
  end
28
34
  end
@@ -33,7 +39,8 @@ describe Propel::GitRepository do
33
39
 
34
40
  it "should warn the user and exit with a status of 1 when the head is detached" do
35
41
  git_repository = Propel::GitRepository.new
36
- git_repository.stub!(:current_branch).and_return('(no branch)')
42
+
43
+ stub_shell { command('git branch') { stdout "* (no branch)\nmaster\n" } }
37
44
  git_repository.should_receive(:exit_with_error).with('You are operating with a detached HEAD, aborting.').and_raise(DetachedHeadTrap)
38
45
 
39
46
  lambda {
@@ -43,7 +50,7 @@ describe Propel::GitRepository do
43
50
 
44
51
  it "should not exit when on master branch" do
45
52
  git_repository = Propel::GitRepository.new
46
- git_repository.stub!(:current_branch).and_return('master')
53
+ stub_shell { command('git branch') { stdout "* master\notherbranch\n" } }
47
54
  git_repository.should_not_receive(:exit_with_error)
48
55
 
49
56
  lambda {
@@ -79,21 +86,23 @@ describe Propel::GitRepository do
79
86
  git_repository = Propel::GitRepository.new
80
87
  git_repository.logger = stub_logger
81
88
 
82
- git_repository.should_receive(:git).with('push -q').and_return(Propel::GitRepository::Result.new('bad!', 1))
89
+ stub_shell { command('git push -q') { exitstatus 1; stdout 'it failed' } }
83
90
 
84
91
  git_repository.stub!(:remote_config)
85
92
  git_repository.stub!(:merge_config)
86
93
 
87
94
  git_repository.should_receive(:warn).with("Your push failed! Please try again later.")
88
- git_repository.should_receive(:exit).with(1)
89
95
 
90
- git_repository.push
96
+ lambda {
97
+ git_repository.push
98
+ }.should raise_error(SystemExit)
91
99
  end
92
100
  end
93
101
 
94
102
  describe "#project_root" do
95
103
  it "should return the root of the project" do
96
104
  project_root = File.expand_path(File.join(File.dirname(__FILE__), %w[ .. .. ]))
105
+ stub_shell { command('git rev-parse --show-toplevel') { exitstatus 0; stdout project_root } }
97
106
  Propel::GitRepository.new.project_root.should == project_root
98
107
  end
99
108
  end
@@ -113,12 +122,10 @@ describe Propel::GitRepository do
113
122
  git_repository = Propel::GitRepository.new
114
123
  git_repository.logger = stub_logger
115
124
 
116
- git_repository.should_receive(:git).with('fetch -q').and_return(Propel::GitRepository::Result.new('', 1))
117
-
118
- git_repository.should_receive(:exit).with(1)
125
+ stub_shell { command('git fetch -q') { exitstatus 1; stdout 'it failed!' } }
119
126
  git_repository.should_receive(:warn).with('Fetch of remote repository failed, exiting.')
120
127
 
121
- git_repository.fetch!
128
+ lambda { git_repository.fetch! }.should raise_error SystemExit
122
129
  end
123
130
 
124
131
  it "should call fetch without the quiet option (-q) if --verbose is specified" do
@@ -126,7 +133,7 @@ describe Propel::GitRepository do
126
133
  git_repository.logger = stub_logger
127
134
  git_repository.options = {:verbose => true}
128
135
 
129
- git_repository.should_receive(:git).with('fetch').and_return(Propel::GitRepository::Result.new('', 0))
136
+ stub_shell { command('git fetch') { stdout 'it worked!' } }
130
137
 
131
138
  git_repository.fetch!
132
139
  end
@@ -135,29 +142,33 @@ describe Propel::GitRepository do
135
142
  describe "#changed?" do
136
143
  it "should return false when the remote branch has the same SHA1 as the local HEAD" do
137
144
  git_repository = Propel::GitRepository.new
138
- git_repository.stub!(:fetch!)
139
- git_repository.stub!(:git).with("branch").and_return(Propel::GitRepository::Result.new("* master\n testbranch", 0))
140
-
141
- git_repository.should_receive(:git).with("rev-parse HEAD").and_return(Propel::GitRepository::Result.new("ef2c8125b1923950a9cd776298516ad9ed3eb568", 0))
142
- git_repository.should_receive(:git).with("config branch.master.remote").and_return(Propel::GitRepository::Result.new("origin", 0))
143
- git_repository.should_receive(:git).with("config branch.master.merge").and_return(Propel::GitRepository::Result.new("refs/heads/master", 0))
145
+ git_repository.logger = stub_logger
144
146
 
145
- git_repository.should_receive(:git).with("ls-remote origin refs/heads/master").and_return(Propel::GitRepository::Result.new("ef2c8125b1923950a9cd776298516ad9ed3eb568\trefs/heads/master", 0))
147
+ stub_shell {
148
+ command('git fetch -q') { stdout 'ok, I fetched' }
149
+ command('git branch') { stdout "* master\n testbranch" }
150
+ command('git rev-parse HEAD') { stdout "ef2c8125b1923950a9cd776298516ad9ed3eb568\n" }
151
+ command('git config branch.master.remote') { stdout "origin\n" }
152
+ command('git config branch.master.merge') { stdout "refs/heads/master\n" }
153
+ command('git ls-remote origin refs/heads/master') { stdout "ef2c8125b1923950a9cd776298516ad9ed3eb568\n" }
154
+ }
146
155
 
147
156
  git_repository.should_not be_changed
148
157
  end
149
158
 
150
159
  it "should return true when the remote branch has a different SHA1 than the local HEAD" do
151
160
  git_repository = Propel::GitRepository.new
152
- git_repository.stub!(:fetch!)
153
- git_repository.stub!(:git).with("branch").and_return(Propel::GitRepository::Result.new("* master\n testbranch", 0))
154
-
155
- git_repository.should_receive(:git).with("rev-parse HEAD").and_return(Propel::GitRepository::Result.new("ef2c8125b1923950a9cd776298516ad9ed3eb568", 0))
156
- git_repository.should_receive(:git).with("config branch.master.remote").and_return(Propel::GitRepository::Result.new("origin", 0))
157
- git_repository.should_receive(:git).with("config branch.master.merge").and_return(Propel::GitRepository::Result.new("refs/heads/master", 0))
158
-
159
- git_repository.should_receive(:git).with("ls-remote origin refs/heads/master").and_return(Propel::GitRepository::Result.new("bf2c8125b1923950a9cd776298516ad9ed3eb568\trefs/heads/master", 0))
160
-
161
+ git_repository.logger = stub_logger
162
+
163
+ stub_shell {
164
+ command('git fetch -q') { stdout 'ok, I fetched' }
165
+ command('git branch') { stdout "* master\n testbranch" }
166
+ command('git rev-parse HEAD') { stdout "ef2c8125b1923950a9cd776298516ad9ed3eb568\n" }
167
+ command('git config branch.master.remote') { stdout "origin\n" }
168
+ command('git config branch.master.merge') { stdout "refs/heads/master\n" }
169
+ command('git ls-remote origin refs/heads/master') { stdout "bf2c8125b1923950a9cd776298516ad9ed3eb568\n" }
170
+ }
171
+
161
172
  git_repository.should be_changed
162
173
  end
163
174
  end
@@ -165,8 +176,10 @@ describe Propel::GitRepository do
165
176
  describe "#remote_config" do
166
177
  it "should call the git command to determine the remote repository" do
167
178
  git_repository = Propel::GitRepository.new
168
- git_repository.stub!(:git).with("branch").and_return(Propel::GitRepository::Result.new("* master\n testbranch", 0))
169
- git_repository.should_receive(:git).with("config branch.master.remote").and_return(Propel::GitRepository::Result.new("origin", 0))
179
+ stub_shell {
180
+ command('git branch') { stdout "* master\n testbranch" }
181
+ command('git config branch.master.remote') { stdout "origin\n" }
182
+ }
170
183
 
171
184
  git_repository.remote_config.should == 'origin'
172
185
  end
@@ -174,34 +187,39 @@ describe Propel::GitRepository do
174
187
  it "should raise an error if the remote repository cannot be determined" do
175
188
  git_repository = Propel::GitRepository.new
176
189
 
177
- git_repository.stub!(:git).with("branch").and_return(Propel::GitRepository::Result.new("* foo\n testbranch", 0))
178
- git_repository.stub!(:git).with("config branch.foo.remote").and_return(Propel::GitRepository::Result.new("", 0))
190
+ stub_shell {
191
+ command('git branch') { stdout "* foo\n testbranch" }
192
+ command('git config branch.foo.remote') { stdout "\n" }
193
+ }
179
194
 
180
195
  git_repository.should_receive(:warn).with("We could not determine the remote repository for branch 'foo.' Please set it with git config branch.foo.remote REMOTE_REPO.")
181
- git_repository.should_receive(:exit).with(1)
182
196
 
183
- git_repository.remote_config
197
+ lambda { git_repository.remote_config }.should raise_error SystemExit
184
198
  end
185
199
  end
186
200
 
187
201
  describe "#merge_config" do
188
202
  it "should call the git command to determine the remote branch" do
189
203
  git_repository = Propel::GitRepository.new
190
- git_repository.stub!(:git).with("branch").and_return(Propel::GitRepository::Result.new("* master\n testbranch", 0))
191
- git_repository.should_receive(:git).with("config branch.master.merge").and_return(Propel::GitRepository::Result.new("refs/heads/master", 0))
192
-
204
+
205
+ stub_shell {
206
+ command('git branch') { stdout "* master\n testbranch" }
207
+ command('git config branch.master.merge') { stdout "refs/heads/master\n" }
208
+ }
209
+
193
210
  git_repository.merge_config.should == 'refs/heads/master'
194
211
  end
195
212
 
196
213
  it "should raise an error if the remote branch cannot be determined" do
197
214
  git_repository = Propel::GitRepository.new
198
215
 
199
- git_repository.stub!(:git).with("branch").and_return(Propel::GitRepository::Result.new("* foo\n testbranch", 0))
200
- git_repository.stub!(:git).with("config branch.foo.merge").and_return(Propel::GitRepository::Result.new("", 0))
201
-
216
+ stub_shell {
217
+ command('git branch') { stdout "* foo\n testbranch" }
218
+ command('git config branch.foo.merge') { stdout "\n" }
219
+ }
220
+
202
221
  git_repository.should_receive(:warn).with("We could not determine the remote branch for local branch 'foo.' Please set it with git config branch.foo.merge REMOTE_BRANCH.")
203
- git_repository.should_receive(:exit).with(1)
204
- git_repository.merge_config
222
+ lambda { git_repository.merge_config }.should raise_error SystemExit
205
223
  end
206
224
  end
207
225
  end
@@ -2,9 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  describe Propel::Runner do
4
4
  before do
5
- @git_repository = Propel::GitRepository.new
5
+ @git_repository = mock('git repository', :changed? => true, :project_root => '/tmp/foobar', :current_branch => 'master',
6
+ :logger= => nil, :options= => nil, :ensure_attached_head! => true)
7
+
6
8
  Propel::GitRepository.should_receive(:new).and_return(@git_repository)
7
- @git_repository.stub!(:changed?).and_return(true)
8
9
  end
9
10
 
10
11
  describe ".start" do
@@ -21,13 +22,17 @@ describe Propel::Runner do
21
22
  runner.start
22
23
  }.should raise_error(DetachedHeadTrap)
23
24
  end
24
-
25
+
25
26
  it "should not call propel! if there is nothing to push" do
26
27
  runner = Propel::Runner.new
27
28
  runner.stub!(:logger).and_return(stub_logger)
28
29
 
29
30
  @git_repository.should_receive(:changed?).and_return(false)
31
+ @git_repository.stub!(:remote_config).and_return('REMOTE REPO')
32
+ @git_repository.stub!(:merge_config).and_return('MERGE CONFIG')
33
+
30
34
  runner.should_not_receive(:propel!)
35
+
31
36
  runner.start
32
37
  end
33
38
 
@@ -45,7 +50,7 @@ describe Propel::Runner do
45
50
 
46
51
  it "should call propel! if the remote build is configured and passing" do
47
52
  runner = Propel::Runner.new(%w[ --status-url http://ci.example.com/status ])
48
-
53
+
49
54
  runner.stub!(:remote_build_configured?).and_return(true)
50
55
  runner.stub!(:remote_build_green?).and_return(true)
51
56
 
@@ -76,7 +81,7 @@ describe Propel::Runner do
76
81
  runner.should_not_receive(:propel!)
77
82
 
78
83
  runner.stub!(:logger).and_return(stub_logger)
79
-
84
+
80
85
  lambda {
81
86
  runner.start
82
87
  }.should raise_error(TestError)
@@ -106,7 +111,7 @@ describe Propel::Runner do
106
111
  runner = Propel::Runner.new(%w[--wait])
107
112
  runner.stub!(:remote_build_configured?).and_return true
108
113
  runner.stub!(:logger).and_return(stub_logger)
109
-
114
+
110
115
  runner.should_receive(:remote_build_green?).twice.and_return(false, true)
111
116
 
112
117
  runner.should_receive(:say_duration).and_yield
@@ -115,4 +120,4 @@ describe Propel::Runner do
115
120
  runner.start
116
121
  end
117
122
  end
118
- end
123
+ end
@@ -5,6 +5,12 @@ $:.unshift(File.dirname(__FILE__) + '/../lib')
5
5
 
6
6
  require 'propel'
7
7
 
8
+ require 'stub_shell'
9
+
10
+ RSpec.configure do |config|
11
+ config.include StubShell::TestHelpers
12
+ end
13
+
8
14
  def stub_logger
9
15
  double('logger', :report_operation => true, :report_status => true, :puts => true, :warn => true)
10
16
  end
metadata CHANGED
@@ -1,65 +1,76 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: propel
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.3
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 2
10
- version: 0.4.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Justin Leitgeb
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-05-16 00:00:00 -04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: json
12
+ date: 2012-02-05 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &70261464056860 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
23
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: *70261464056860
25
+ - !ruby/object:Gem::Dependency
26
+ name: json
27
+ requirement: &70261474860640 !ruby/object:Gem::Requirement
25
28
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
33
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rspec
37
34
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ version_requirements: *70261474860640
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70261474860120 !ruby/object:Gem::Requirement
39
39
  none: false
40
- requirements:
40
+ requirements:
41
41
  - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 27
44
- segments:
45
- - 2
46
- - 5
47
- - 0
42
+ - !ruby/object:Gem::Version
48
43
  version: 2.5.0
49
44
  type: :development
50
- version_requirements: *id002
51
- description: " The 'propel' script helps you to push your code to a remote server while following Continuous Integration (CI)\n best practices. Propel first checks the CI server to make sure it's passing, and then runs the local spec\n suite and pushes changes. If the remote server is failing, just have propel wait for it to pass while you get\n a coffee.\n"
52
- email:
45
+ prerelease: false
46
+ version_requirements: *70261474860120
47
+ - !ruby/object:Gem::Dependency
48
+ name: stub_shell
49
+ requirement: &70261474859600 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.2
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70261474859600
58
+ description: ! " The 'propel' script helps you to push your code to a remote server
59
+ while following Continuous Integration (CI)\n best practices. Propel first checks
60
+ the CI server to make sure it's passing, and then runs the local spec\n suite
61
+ and pushes changes. If the remote server is failing, just have propel wait for
62
+ it to pass while you get\n a coffee.\n"
63
+ email:
53
64
  - justin@stackbuilders.com
54
- executables:
65
+ executables:
55
66
  - propel
56
67
  extensions: []
57
-
58
68
  extra_rdoc_files: []
59
-
60
- files:
69
+ files:
61
70
  - .gitignore
62
71
  - .rspec
72
+ - .rvmrc
73
+ - .travis.yml
63
74
  - Gemfile
64
75
  - Gemfile.lock
65
76
  - LICENSE
@@ -90,39 +101,29 @@ files:
90
101
  - spec/propel/remote_build_spec.rb
91
102
  - spec/propel/runner_spec.rb
92
103
  - spec/spec_helper.rb
93
- has_rdoc: true
94
104
  homepage: http://github.com/stackbuilders/propel
95
105
  licenses: []
96
-
97
106
  post_install_message:
98
107
  rdoc_options: []
99
-
100
- require_paths:
108
+ require_paths:
101
109
  - lib
102
- required_ruby_version: !ruby/object:Gem::Requirement
110
+ required_ruby_version: !ruby/object:Gem::Requirement
103
111
  none: false
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- hash: 3
108
- segments:
109
- - 0
110
- version: "0"
111
- required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
117
  none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- hash: 3
117
- segments:
118
- - 0
119
- version: "0"
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
120
122
  requirements: []
121
-
122
123
  rubyforge_project:
123
- rubygems_version: 1.6.2
124
+ rubygems_version: 1.8.10
124
125
  signing_key:
125
126
  specification_version: 3
126
- summary: Propel helps you to follow best practices for pushing code to a remote git repo
127
+ summary: Propel helps you to follow best practices for pushing code to a remote git
128
+ repo
127
129
  test_files: []
128
-