octopolo 0.3.3 → 0.3.4
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.
- checksums.yaml +8 -8
- data/CHANGELOG.markdown +13 -0
- data/lib/octopolo/cli.rb +1 -3
- data/lib/octopolo/commands/new_deployable.rb +7 -2
- data/lib/octopolo/commands/new_staging.rb +7 -2
- data/lib/octopolo/dated_branch_creator.rb +10 -3
- data/lib/octopolo/git.rb +4 -3
- data/lib/octopolo/scripts/new_deployable.rb +2 -2
- data/lib/octopolo/scripts/new_staging.rb +2 -2
- data/lib/octopolo/version.rb +1 -1
- data/spec/octopolo/cli_spec.rb +5 -6
- data/spec/octopolo/dated_branch_creator_spec.rb +15 -0
- data/spec/octopolo/git_spec.rb +9 -1
- data/spec/octopolo/scripts/new_deployable_spec.rb +6 -2
- data/spec/octopolo/scripts/new_staging_spec.rb +6 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDdlNGEyM2U2YzFhNWM3YzM3NDExN2M4MTQxNTJjNTVlODRmNjQ1OA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDEzZmY5ZWQ5MmYwZTQ2ZDE2MzU3M2ZlYzdjODE3YTc3MTY4YTA1ZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTZiMjlkZGYyZjRlZWQ3YzVmZDcyNTZkMDhkM2YyZjRlMWFhZDEyNjY2MzUw
|
10
|
+
ZjhlMTliZGNkODJjZDkxMGVjZTlkNWMyZGRmMjEwYTg0YThmMDY4MTFiMzg2
|
11
|
+
MmVmMGVkNjc0NDRlNzM4NzAyYjNmYmEyN2MyMmNhZjFlMGQxMWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTExNGU4YTI5Mjc2NzRmOWM1OTc5NmZiMjVhNWIzNWQzN2RmYjgzMjRlNzQw
|
14
|
+
OThmNjhhODdkNjk2YTFkZTZhY2FiNzI4YjI4NDkxYmE5NzZhMmJlZDU2MDM1
|
15
|
+
M2QwOWQxOTJkMTMyYjUzZWRhMjYzNmQ0ZjExZmQ2MjA5Y2VlN2U=
|
data/CHANGELOG.markdown
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
+
#### v0.3.4
|
2
|
+
* Adding delete flag to dated branch creation commands for non-interactive support
|
3
|
+
|
4
|
+
> Brian Bergstrom: Andy Fleener: https://github.com/sportngin/octopolo/pull/49
|
5
|
+
|
6
|
+
* Command Errors Should Not Be Rescued
|
7
|
+
|
8
|
+
> Brian Bergstrom: Andy Fleener: https://github.com/sportngin/octopolo/pull/47
|
9
|
+
|
1
10
|
#### v0.3.3
|
11
|
+
* Errors from CLI commands should throw and exception
|
12
|
+
|
13
|
+
> Brian Bergstrom: Andy Fleener: https://github.com/sportngin/octopolo/pull/46
|
14
|
+
|
2
15
|
#### v0.3.2
|
3
16
|
* Add new autocomplete_commands toggle; fixes #34
|
4
17
|
|
data/lib/octopolo/cli.rb
CHANGED
@@ -26,7 +26,7 @@ module Octopolo
|
|
26
26
|
# and then perform it
|
27
27
|
if Open3.respond_to?(:capture3)
|
28
28
|
output, error, status = Open3.capture3(command)
|
29
|
-
raise "exit_status=#{status.exitstatus}; stderr=#{error}" unless status.success?
|
29
|
+
raise "command=#{command}; exit_status=#{status.exitstatus}; stderr=#{error}" unless status.success?
|
30
30
|
else
|
31
31
|
# Only necessary as long as we use 1.8.7, which doesn't have Open3.capture3
|
32
32
|
output = `#{command}`
|
@@ -36,8 +36,6 @@ module Octopolo
|
|
36
36
|
say output if say_command
|
37
37
|
# return the output of the command
|
38
38
|
output
|
39
|
-
rescue => e
|
40
|
-
say "Unable to perform '#{command}': #{e.message}"
|
41
39
|
end
|
42
40
|
|
43
41
|
# Public: Perform the command, but do not print out the command
|
@@ -3,6 +3,11 @@ long_desc "Create a new deployable branch with today's date and remove the other
|
|
3
3
|
|
4
4
|
Useful when we have changes in the current deployable branch that we wish to remove."
|
5
5
|
command 'new-deployable' do |c|
|
6
|
-
|
7
|
-
|
6
|
+
c.switch :delete_old_branches, :default_value => false, :desc => "Should old deployable branches be deleted?", :negatable => false
|
7
|
+
|
8
|
+
c.action do |global_options, options, args|
|
9
|
+
require_relative '../scripts/new_deployable'
|
10
|
+
options = global_options.merge(options)
|
11
|
+
Octopolo::Scripts::NewDeployable.new.execute(options)
|
12
|
+
end
|
8
13
|
end
|
@@ -3,6 +3,11 @@ long_desc "Create a new staging branch with today's date and remove the others.
|
|
3
3
|
|
4
4
|
Useful when we have changes in the current staging branch that we wish to remove."
|
5
5
|
command 'new-staging' do |c|
|
6
|
-
|
7
|
-
|
6
|
+
c.switch :delete_old_branches, :default_value => false, :desc => "Should old staging branches be deleted?", :negatable => false
|
7
|
+
|
8
|
+
c.action do |global_options, options, args|
|
9
|
+
require_relative '../scripts/new_staging'
|
10
|
+
options = global_options.merge(options)
|
11
|
+
Octopolo::Scripts::NewStaging.new.execute(options)
|
12
|
+
end
|
8
13
|
end
|
@@ -9,20 +9,24 @@ module Octopolo
|
|
9
9
|
include GitWrapper
|
10
10
|
|
11
11
|
attr_accessor :branch_type
|
12
|
+
attr_accessor :should_delete_old_branches
|
12
13
|
|
13
14
|
# Public: Initialize a new instance of DatedBranchCreator
|
14
15
|
#
|
15
16
|
# branch_type - Name of the type of branch (e.g., staging or deployable)
|
16
|
-
|
17
|
+
# should_delete_old_branches - Flag to delete old branches of the given type.
|
18
|
+
def initialize(branch_type, should_delete_old_branches=false)
|
17
19
|
self.branch_type = branch_type
|
20
|
+
self.should_delete_old_branches = should_delete_old_branches
|
18
21
|
end
|
19
22
|
|
20
23
|
# Public: Create a new branch of the given type for today's date
|
21
24
|
#
|
22
25
|
# branch_type - Name of the type of branch (e.g., staging or deployable)
|
26
|
+
# should_delete_old_branches - Flag to delete old branches of the given type.
|
23
27
|
#
|
24
28
|
# Returns a DatedBranchCreator
|
25
|
-
def self.perform(branch_type)
|
29
|
+
def self.perform(branch_type, should_delete_old_branches=false)
|
26
30
|
new(branch_type).tap do |creator|
|
27
31
|
creator.perform
|
28
32
|
end
|
@@ -56,7 +60,10 @@ module Octopolo
|
|
56
60
|
|
57
61
|
# Public: If necessary, and if user opts to, delete old branches of its type
|
58
62
|
def delete_old_branches
|
59
|
-
|
63
|
+
return unless extra_branches.any?
|
64
|
+
should_delete = should_delete_old_branches || cli.ask_boolean("Do you want to delete the old #{branch_type} branch(es)? (#{extra_branches.join(", ")})")
|
65
|
+
|
66
|
+
if should_delete
|
60
67
|
extra_branches.each do |extra|
|
61
68
|
Git.delete_branch(extra)
|
62
69
|
end
|
data/lib/octopolo/git.rb
CHANGED
@@ -67,10 +67,11 @@ module Octopolo
|
|
67
67
|
# Public: Check out the given branch name
|
68
68
|
#
|
69
69
|
# branch_name - The name of the branch to check out
|
70
|
-
|
70
|
+
# do_after_pull - Should a pull be done after checkout?
|
71
|
+
def self.check_out(branch_name, do_after_pull=true)
|
71
72
|
fetch
|
72
73
|
perform "checkout #{branch_name}"
|
73
|
-
pull
|
74
|
+
pull if do_after_pull
|
74
75
|
unless current_branch == branch_name
|
75
76
|
raise CheckoutFailed, "Failed to check out '#{branch_name}'"
|
76
77
|
end
|
@@ -87,7 +88,7 @@ module Octopolo
|
|
87
88
|
def self.new_branch(new_branch_name, source_branch_name)
|
88
89
|
fetch
|
89
90
|
perform("branch --no-track #{new_branch_name} origin/#{source_branch_name}")
|
90
|
-
check_out
|
91
|
+
check_out(new_branch_name, false)
|
91
92
|
perform("push --set-upstream origin #{new_branch_name}")
|
92
93
|
end
|
93
94
|
|
@@ -5,8 +5,8 @@ module Octopolo
|
|
5
5
|
module Scripts
|
6
6
|
class NewDeployable
|
7
7
|
|
8
|
-
def execute
|
9
|
-
DatedBranchCreator.perform
|
8
|
+
def execute(options={:delete_old_branches => false})
|
9
|
+
DatedBranchCreator.perform(Git::DEPLOYABLE_PREFIX, options[:delete_old_branches])
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -6,8 +6,8 @@ module Octopolo
|
|
6
6
|
class NewStaging
|
7
7
|
include CLIWrapper
|
8
8
|
|
9
|
-
def execute
|
10
|
-
DatedBranchCreator.perform
|
9
|
+
def execute(options={:delete_old_branches => false})
|
10
|
+
DatedBranchCreator.perform(Git::STAGING_PREFIX, options[:delete_old_branches])
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
data/lib/octopolo/version.rb
CHANGED
data/spec/octopolo/cli_spec.rb
CHANGED
@@ -28,18 +28,17 @@ module Octopolo
|
|
28
28
|
subject.perform(command).should == result
|
29
29
|
end
|
30
30
|
|
31
|
-
it "should
|
31
|
+
it "should raise exception" do
|
32
32
|
subject.should_receive(:say).with(command)
|
33
33
|
Open3.should_receive(:capture3).with(command).and_raise(exception_message)
|
34
|
-
subject.
|
35
|
-
subject.perform(command).should be_nil
|
34
|
+
expect { subject.perform(command) }.to raise_error(RuntimeError, exception_message)
|
36
35
|
end
|
37
36
|
|
38
|
-
it "should
|
37
|
+
it "should raise errors from command" do
|
39
38
|
subject.should_receive(:say).with(command)
|
40
39
|
Open3.should_receive(:capture3).with(command).and_return([result, "kaboom", status_error])
|
41
|
-
subject.
|
42
|
-
|
40
|
+
expect { subject.perform(command) }
|
41
|
+
.to raise_error(RuntimeError, "command=#{command}; exit_status=1; stderr=kaboom")
|
43
42
|
end
|
44
43
|
|
45
44
|
it "should not speak the command if told not to" do
|
@@ -112,6 +112,21 @@ module Octopolo
|
|
112
112
|
cli.should_not_receive(:perform)
|
113
113
|
subject.delete_old_branches
|
114
114
|
end
|
115
|
+
|
116
|
+
context "delete flag" do
|
117
|
+
before do
|
118
|
+
subject.stub(extra_branches: extras)
|
119
|
+
subject.should_delete_old_branches = true
|
120
|
+
end
|
121
|
+
|
122
|
+
it "deletes these branches non-interactively" do
|
123
|
+
cli.should_not_receive(:ask_boolean).with(message)
|
124
|
+
extras.each do |extra|
|
125
|
+
Git.should_receive(:delete_branch).with(extra)
|
126
|
+
end
|
127
|
+
subject.delete_old_branches
|
128
|
+
end
|
129
|
+
end
|
115
130
|
end
|
116
131
|
end
|
117
132
|
|
data/spec/octopolo/git_spec.rb
CHANGED
@@ -79,6 +79,14 @@ module Octopolo
|
|
79
79
|
Git.check_out name
|
80
80
|
end
|
81
81
|
|
82
|
+
it "checks out the given branch name without after pull" do
|
83
|
+
Git.should_receive(:fetch)
|
84
|
+
Git.should_receive(:perform).with("checkout #{name}")
|
85
|
+
Git.should_not_receive(:pull)
|
86
|
+
Git.should_receive(:current_branch) { name }
|
87
|
+
Git.check_out(name, false)
|
88
|
+
end
|
89
|
+
|
82
90
|
it "raises an exception if the current branch is not the requested branch afterward" do
|
83
91
|
Git.should_receive(:fetch)
|
84
92
|
Git.should_receive(:perform)
|
@@ -345,7 +353,7 @@ module Octopolo
|
|
345
353
|
it "creates and pushes a new branch from the source branch" do
|
346
354
|
Git.should_receive(:fetch)
|
347
355
|
Git.should_receive(:perform).with("branch --no-track #{new_branch_name} origin/#{source_branch_name}")
|
348
|
-
Git.should_receive(:check_out).with(new_branch_name)
|
356
|
+
Git.should_receive(:check_out).with(new_branch_name, false)
|
349
357
|
Git.should_receive(:perform).with("push --set-upstream origin #{new_branch_name}")
|
350
358
|
|
351
359
|
Git.new_branch(new_branch_name, source_branch_name)
|
@@ -7,10 +7,14 @@ module Octopolo
|
|
7
7
|
subject { NewDeployable.new }
|
8
8
|
|
9
9
|
context "#execute" do
|
10
|
-
it "delegates the work to DatedBranchCreator" do
|
11
|
-
DatedBranchCreator.should_receive(:perform).with(Git::DEPLOYABLE_PREFIX)
|
10
|
+
it "delegates the work to DatedBranchCreator with default delete flag" do
|
11
|
+
DatedBranchCreator.should_receive(:perform).with(Git::DEPLOYABLE_PREFIX, false)
|
12
12
|
subject.execute
|
13
13
|
end
|
14
|
+
it "delegates the work to DatedBranchCreator with delete flag" do
|
15
|
+
DatedBranchCreator.should_receive(:perform).with(Git::DEPLOYABLE_PREFIX, true)
|
16
|
+
subject.execute(:delete_old_branches => true)
|
17
|
+
end
|
14
18
|
end
|
15
19
|
end
|
16
20
|
end
|
@@ -7,10 +7,14 @@ module Octopolo
|
|
7
7
|
subject { NewStaging.new }
|
8
8
|
|
9
9
|
context "#execute" do
|
10
|
-
it "delegates to DatedBranchCreator to create the branch" do
|
11
|
-
DatedBranchCreator.should_receive(:perform).with(Git::STAGING_PREFIX)
|
10
|
+
it "delegates to DatedBranchCreator to create the branch with default delete flag" do
|
11
|
+
DatedBranchCreator.should_receive(:perform).with(Git::STAGING_PREFIX, false)
|
12
12
|
subject.execute
|
13
13
|
end
|
14
|
+
it "delegates to DatedBranchCreator to create the branch with delete flag" do
|
15
|
+
DatedBranchCreator.should_receive(:perform).with(Git::STAGING_PREFIX, true)
|
16
|
+
subject.execute(:delete_old_branches => true)
|
17
|
+
end
|
14
18
|
end
|
15
19
|
end
|
16
20
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octopolo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Byrne
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-03-
|
12
|
+
date: 2015-03-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|