soyuz 0.1.1 → 0.2.0
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 +4 -4
- data/CHANGELOG.markdown +5 -0
- data/lib/soyuz/command.rb +9 -1
- data/lib/soyuz/command_choice.rb +5 -1
- data/lib/soyuz/command_env.rb +20 -0
- data/lib/soyuz/version.rb +1 -1
- data/spec/soyuz/command_choice_spec.rb +21 -12
- data/spec/soyuz/command_env_spec.rb +44 -0
- data/spec/soyuz/command_spec.rb +10 -0
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 59015ed20e3495f427c78b40f2846156ec4f5635
|
|
4
|
+
data.tar.gz: 8c25a79206d5a813d5b1f5507ae62de364d4fa60
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d46c3f96343aa2da24b52830a4cac00250c11b299f9b10dbece7176252f898700196eaa6711cf5ae3de6e9329c9de2f455e8fe6cfb6dbd915dc433ae6b7b617
|
|
7
|
+
data.tar.gz: 3b398f211d1d670e8994a7c9a1237f3992aff052d5f358c783151731de5de9611a4077547f89a3f3cf19e9521325754cc87160b7b841b244e78b1c274c5f7ba6
|
data/CHANGELOG.markdown
CHANGED
data/lib/soyuz/command.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'highline/import'
|
|
2
2
|
require_relative 'command_choice'
|
|
3
|
+
require_relative 'command_env'
|
|
3
4
|
|
|
4
5
|
module Soyuz
|
|
5
6
|
class Command
|
|
@@ -10,7 +11,14 @@ module Soyuz
|
|
|
10
11
|
|
|
11
12
|
def self.build(cmd)
|
|
12
13
|
return if cmd.nil? || cmd.empty?
|
|
13
|
-
|
|
14
|
+
|
|
15
|
+
if cmd.is_a?(Array)
|
|
16
|
+
CommandChoice.new(cmd)
|
|
17
|
+
elsif cmd.is_a?(Hash)
|
|
18
|
+
CommandEnv.new(cmd)
|
|
19
|
+
else
|
|
20
|
+
new(cmd)
|
|
21
|
+
end
|
|
14
22
|
end
|
|
15
23
|
|
|
16
24
|
def run
|
data/lib/soyuz/command_choice.rb
CHANGED
|
@@ -13,7 +13,11 @@ module Soyuz
|
|
|
13
13
|
say "#{index+1}) #{choice[:display]}"
|
|
14
14
|
end
|
|
15
15
|
choice = ask("? ", Integer) { |q| q.in = 1..@choices.length }
|
|
16
|
-
|
|
16
|
+
build_command(choice-1)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def build_command(choice)
|
|
20
|
+
Command.build(@choices[choice][:cmd]).run
|
|
17
21
|
end
|
|
18
22
|
end
|
|
19
23
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'highline/import'
|
|
2
|
+
|
|
3
|
+
module Soyuz
|
|
4
|
+
class CommandEnv
|
|
5
|
+
|
|
6
|
+
NotHashMsg = "Environment Commands must be a Hash"
|
|
7
|
+
BadKeysMsg = "Environment Commands must contain :env_var and :env_val keys"
|
|
8
|
+
|
|
9
|
+
def initialize(cmd)
|
|
10
|
+
raise ArgumentError, NotHashMsg unless cmd.is_a?(Hash)
|
|
11
|
+
raise ArgumentError, BadKeysMsg unless cmd.has_key?(:env_var) && cmd.has_key?(:env_val)
|
|
12
|
+
@cmd = cmd
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def run
|
|
16
|
+
ENV[@cmd[:env_var]] = @cmd[:env_val]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
data/lib/soyuz/version.rb
CHANGED
|
@@ -2,11 +2,12 @@ require "spec_helper"
|
|
|
2
2
|
require "soyuz/command_choice"
|
|
3
3
|
module Soyuz
|
|
4
4
|
describe CommandChoice do
|
|
5
|
-
let(:choices){ [{display: "choice1", cmd: "echo choice1"}, {display: "choice2", cmd: "echo choice2" }] }
|
|
6
|
-
let(:command_double){ instance_double("Command", :run => true) }
|
|
5
|
+
let(:choices) { [{display: "choice1", cmd: "echo choice1"}, {display: "choice2", cmd: "echo choice2" }] }
|
|
6
|
+
let(:command_double) { instance_double("Command", :run => true) }
|
|
7
|
+
|
|
7
8
|
subject { CommandChoice.new(choices) }
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
describe "choices isn't an array" do
|
|
10
11
|
let(:choices) { "I'm a command" }
|
|
11
12
|
subject { CommandChoice }
|
|
12
13
|
it "raises an error" do
|
|
@@ -14,29 +15,37 @@ module Soyuz
|
|
|
14
15
|
end
|
|
15
16
|
end
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
describe "#run" do
|
|
18
19
|
|
|
19
20
|
it "creates a command for the given choice" do
|
|
20
21
|
expect(subject).to receive(:say).with("1) choice1").once
|
|
21
22
|
expect(subject).to receive(:say).with("2) choice2").once
|
|
22
23
|
expect(subject).to receive(:ask).with(instance_of(String), Integer).and_return(1).once
|
|
23
|
-
expect(
|
|
24
|
+
expect(subject).to receive(:build_command).with(0).once
|
|
24
25
|
subject.run
|
|
25
26
|
end
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "#build_command" do
|
|
31
|
+
context "with a single command" do
|
|
32
|
+
it "builds and runs the command" do
|
|
33
|
+
expect(Command).to receive(:build).with("echo choice1").and_return(command_double)
|
|
34
|
+
expect(command_double).to receive(:run)
|
|
35
|
+
subject.build_command(0)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "with nested choices" do
|
|
28
40
|
let(:nested_choices) { [{display: "choice1.1", cmd: "echo choice1.1"}, {display: "choice1.2", cmd: "echo choice1.2" }] }
|
|
29
41
|
let(:choices){ [{display: "choice1", cmd: nested_choices }, {display: "choice2", cmd: "echo choice2" }] }
|
|
30
42
|
|
|
31
|
-
it "
|
|
32
|
-
expect(subject).to receive(:say).with("1) choice1").once
|
|
33
|
-
expect(subject).to receive(:say).with("2) choice2").once
|
|
34
|
-
expect(subject).to receive(:ask).with(instance_of(String), Integer).and_return(1).once
|
|
43
|
+
it "builds and runs the commands" do
|
|
35
44
|
expect(Command).to receive(:build).with(nested_choices).and_return(command_double)
|
|
36
|
-
|
|
45
|
+
expect(command_double).to receive(:run)
|
|
46
|
+
subject.build_command(0)
|
|
37
47
|
end
|
|
38
48
|
end
|
|
39
49
|
end
|
|
40
|
-
|
|
41
50
|
end
|
|
42
51
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
require "soyuz/command_env"
|
|
3
|
+
|
|
4
|
+
module Soyuz
|
|
5
|
+
describe CommandEnv do
|
|
6
|
+
let(:cmd){ { :env_var => "FOO", :env_val => "BAR" } }
|
|
7
|
+
subject { CommandEnv.new(cmd) }
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
allow(subject).to receive(:puts)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "sets the command" do
|
|
14
|
+
expect(subject.instance_variable_get(:@cmd)).to eq(cmd)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
context "cmd isn't a hash" do
|
|
18
|
+
let(:cmd) { 1234 }
|
|
19
|
+
subject { CommandEnv }
|
|
20
|
+
it "raises an error" do
|
|
21
|
+
expect{ subject.new(cmd) }.to raise_error(ArgumentError, "Environment Commands must be a Hash")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context "cmd doesn't contain :env_var and :env_val" do
|
|
26
|
+
let(:cmd) { {} }
|
|
27
|
+
subject { CommandEnv }
|
|
28
|
+
it "raises an error" do
|
|
29
|
+
expect{ subject.new(cmd) }.to raise_error(ArgumentError, "Environment Commands must contain :env_var and :env_val keys")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "#run" do
|
|
34
|
+
before { @old_env = ENV.dup }
|
|
35
|
+
|
|
36
|
+
it "sets the environment_variable" do
|
|
37
|
+
subject.run
|
|
38
|
+
expect(ENV["FOO"]).to eq("BAR")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
after { ENV = @old_env }
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
data/spec/soyuz/command_spec.rb
CHANGED
|
@@ -50,6 +50,16 @@ module Soyuz
|
|
|
50
50
|
subject.build(cmd)
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
|
+
|
|
54
|
+
context "cmd is a env command" do
|
|
55
|
+
let(:cmd) { {:env_var => "FOO", :env_val => "BAR" } }
|
|
56
|
+
subject { Command }
|
|
57
|
+
|
|
58
|
+
it "sets the ENV based off of the :env_var and :env_val" do
|
|
59
|
+
expect(CommandEnv).to receive(:new).with(cmd)
|
|
60
|
+
subject.build(cmd)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
53
63
|
end
|
|
54
64
|
end
|
|
55
65
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: soyuz
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andy Fleener
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2015-01-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: gli
|
|
@@ -162,6 +162,7 @@ files:
|
|
|
162
162
|
- lib/soyuz.rb
|
|
163
163
|
- lib/soyuz/command.rb
|
|
164
164
|
- lib/soyuz/command_choice.rb
|
|
165
|
+
- lib/soyuz/command_env.rb
|
|
165
166
|
- lib/soyuz/config.rb
|
|
166
167
|
- lib/soyuz/deploy.rb
|
|
167
168
|
- lib/soyuz/environment.rb
|
|
@@ -170,6 +171,7 @@ files:
|
|
|
170
171
|
- soyuz.gemspec
|
|
171
172
|
- spec/files/soyuz_example.yml
|
|
172
173
|
- spec/soyuz/command_choice_spec.rb
|
|
174
|
+
- spec/soyuz/command_env_spec.rb
|
|
173
175
|
- spec/soyuz/command_spec.rb
|
|
174
176
|
- spec/soyuz/config_spec.rb
|
|
175
177
|
- spec/soyuz/deploy_spec.rb
|
|
@@ -203,6 +205,7 @@ summary: The old trusty deployment toolkit
|
|
|
203
205
|
test_files:
|
|
204
206
|
- spec/files/soyuz_example.yml
|
|
205
207
|
- spec/soyuz/command_choice_spec.rb
|
|
208
|
+
- spec/soyuz/command_env_spec.rb
|
|
206
209
|
- spec/soyuz/command_spec.rb
|
|
207
210
|
- spec/soyuz/config_spec.rb
|
|
208
211
|
- spec/soyuz/deploy_spec.rb
|