james_bond-core 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d450b6cebf1c2945eefc6600f1239d73c3a9e192
4
- data.tar.gz: 80fad6427c8f721a7a59fb4f17ed4ef3c405a83c
3
+ metadata.gz: 5bc4a5b5d54b212eb91bd4fac66a36271fc56f13
4
+ data.tar.gz: 790d1fd4cd53aa6b5ae473c6a540fd1529ba4bc5
5
5
  SHA512:
6
- metadata.gz: afb4dee9af6d4252b62701d26e39c7fff2cc88f92977448a36fa7cf58c19841ae08bc2ee924f1fe2b4f9dabc5cc9e2fb832d1d66706d394dc5c29715187576a8
7
- data.tar.gz: 0a18d95bb13b183963cb7e57d750cd8c23fd90ee55074e0742c96849d756ac1699b29ecb906b65e51fcc3e1a47dbfc822293f4572c485466768ad7a9b6d943e7
6
+ metadata.gz: 74551a39268f6df614410bf755774c09b95c79286598b8a4ec4202951c4ff02fcce08860560f4d408302d9244b880fe3917c0e7b07f18fd2753532165a7da0ee
7
+ data.tar.gz: 3ad89069ee57e53c2e38e80990dbd508415f77e4044acfb039d9cd0723df08888d53f55a5d88153fd8e0b722bb945d13b132ac358c42654b3f9a9d57608179de
data/README.md CHANGED
@@ -1,6 +1 @@
1
- Concernings
2
-
3
- 1. It must be fast
4
- 2. It must be ellegant
5
- 3. It must be debuggable (verbosable by option)
6
- 4. It must be pluggable
1
+ ## James Bond - Core
@@ -1,4 +1,3 @@
1
- require "james_bond/core/version"
2
1
  require "james_bond/core/config"
3
2
  require "james_bond/core/mission_loader"
4
3
  require "james_bond/core/command"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: james_bond-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airton Sobral
@@ -53,26 +53,16 @@ dependencies:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
55
  version: 9.0.5
56
- description: Fully automation, from development to deploy. Let a professional help
57
- you!
56
+ description: The glue between James Bond and his missions
58
57
  email:
59
58
  - airtonsobral@gmail.com
60
59
  - guiocavalcanti@gmail.com
61
- executables:
62
- - bond
60
+ executables: []
63
61
  extensions: []
64
62
  extra_rdoc_files:
65
63
  - README.md
66
64
  files:
67
- - ".gitignore"
68
- - ".rspec"
69
- - ".ruby-gemset"
70
- - ".ruby-version"
71
- - Gemfile
72
- - Gemfile.lock
73
65
  - README.md
74
- - bin/bond
75
- - james_bond-core.gemspec
76
66
  - lib/james_bond.rb
77
67
  - lib/james_bond/core.rb
78
68
  - lib/james_bond/core/command.rb
@@ -83,12 +73,7 @@ files:
83
73
  - lib/james_bond/core/mission/undefined_variable_error.rb
84
74
  - lib/james_bond/core/mission_loader.rb
85
75
  - lib/james_bond/core/mission_pool.rb
86
- - lib/james_bond/core/version.rb
87
- - spec/lib/james_bond/core/command_spec.rb
88
- - spec/lib/james_bond/core/mission_loader_spec.rb
89
- - spec/lib/james_bond/core/mission_spec.rb
90
- - spec/spec_helper.rb
91
- homepage: http://rubygemgem.org/gems/james_bond
76
+ homepage: http://rubygemgem.org/gems/james_bond-core
92
77
  licenses:
93
78
  - MIT
94
79
  metadata: {}
@@ -111,9 +96,5 @@ rubyforge_project:
111
96
  rubygems_version: 2.4.8
112
97
  signing_key:
113
98
  specification_version: 4
114
- summary: Fully automation, from development to deploy
115
- test_files:
116
- - spec/lib/james_bond/core/command_spec.rb
117
- - spec/lib/james_bond/core/mission_loader_spec.rb
118
- - spec/lib/james_bond/core/mission_spec.rb
119
- - spec/spec_helper.rb
99
+ summary: James Bond Core
100
+ test_files: []
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- *.gem
2
- *.byebug_history
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format documentation
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- james_bond-core
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.2.0
data/Gemfile DELETED
@@ -1,2 +0,0 @@
1
- source "https://rubygems.org"
2
- gemspec
data/Gemfile.lock DELETED
@@ -1,36 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- james_bond-core (0.0.1)
5
- slop (= 4.4.1)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- byebug (9.0.5)
11
- diff-lcs (1.2.5)
12
- rspec (3.4.0)
13
- rspec-core (~> 3.4.0)
14
- rspec-expectations (~> 3.4.0)
15
- rspec-mocks (~> 3.4.0)
16
- rspec-core (3.4.4)
17
- rspec-support (~> 3.4.0)
18
- rspec-expectations (3.4.0)
19
- diff-lcs (>= 1.2.0, < 2.0)
20
- rspec-support (~> 3.4.0)
21
- rspec-mocks (3.4.1)
22
- diff-lcs (>= 1.2.0, < 2.0)
23
- rspec-support (~> 3.4.0)
24
- rspec-support (3.4.1)
25
- slop (4.4.1)
26
-
27
- PLATFORMS
28
- ruby
29
-
30
- DEPENDENCIES
31
- byebug (= 9.0.5)
32
- james_bond-core!
33
- rspec (= 3.4.0)
34
-
35
- BUNDLED WITH
36
- 1.12.5
data/bin/bond DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "james_bond/core"
4
-
5
- # Call James Bond main interface
6
- JamesBond::Core.run_command(ARGV)
@@ -1,25 +0,0 @@
1
- lib = File.expand_path("../lib", __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "james_bond/core/version"
4
-
5
- Gem::Specification.new do |gem|
6
- gem.name = "james_bond-core"
7
- gem.version = JamesBond::Core::VERSION
8
- gem.date = "2016-08-18"
9
- gem.summary = "Fully automation, from development to deploy"
10
- gem.description = "Fully automation, from development to deploy. Let a professional help you!"
11
- gem.authors = ["Airton Sobral", "Guilherme Cavalcanti"]
12
- gem.email = ["airtonsobral@gmail.com", "guiocavalcanti@gmail.com"]
13
- gem.require_paths = %w[lib]
14
- gem.files = `git ls-files -z`.split("\x0")
15
- gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
- gem.test_files = gem.files.grep(%r{^spec/})
17
- gem.extra_rdoc_files = %w[README.md]
18
- gem.homepage = "http://rubygemgem.org/gems/james_bond"
19
- gem.license = "MIT"
20
-
21
- gem.required_ruby_version = ">= 2.1"
22
- gem.add_dependency "slop", "4.4.1"
23
- gem.add_development_dependency "rspec", "3.4.0"
24
- gem.add_development_dependency "byebug", "9.0.5"
25
- end
@@ -1,5 +0,0 @@
1
- module JamesBond
2
- module Core
3
- VERSION = "0.1.1".freeze
4
- end
5
- end
@@ -1,78 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe JamesBond::Core::Command do
4
- describe "#argv" do
5
- it "should return the argv received" do
6
- argv = ["charizard", "papai", "noel", "--delta", "-t"]
7
- instance = described_class.new(argv: ["charizard", "papai", "noel", "--delta", "-t"],
8
- env: "dev")
9
- expect(instance.argv).to eq(argv)
10
- end
11
- end
12
-
13
- describe "#user_command" do
14
- it "should return the argv as one string" do
15
- instance = described_class.new(argv: ["charizard", "papai", "noel", "--delta", "-t"],
16
- env: "dev")
17
- expect(instance.user_command).to eq("charizard papai noel --delta -t")
18
- end
19
- end
20
-
21
- describe "#main_command" do
22
- it "should return the first command" do
23
- instance = described_class.new(argv: ["charizard"], env: "dev")
24
- expect(instance.main_command).to eq("charizard")
25
- instance = described_class.new(argv: ["charizard", "delta"], env: "dev")
26
- expect(instance.main_command).to eq("charizard")
27
- instance = described_class.new(argv: ["charizard", "delta", "-t", "--gama"], env: "dev")
28
- expect(instance.main_command).to eq("charizard")
29
- end
30
- end
31
-
32
- describe "#raw_arguments" do
33
- it "should return the arguments array without the main_command" do
34
- instance = described_class.new(argv: ["charizard"], env: "dev")
35
- expect(instance.raw_arguments).to eq([])
36
- instance = described_class.new(argv: ["charizard", "delta"], env: "dev")
37
- expect(instance.raw_arguments).to eq(["delta"])
38
- instance = described_class.new(argv: ["charizard", "delta", "-t", "--gama"], env: "dev")
39
- expect(instance.raw_arguments).to eq(["delta", "-t", "--gama"])
40
- end
41
- end
42
-
43
- describe "#arguments_string" do
44
- it "should return the arguments array without the main_command as one string" do
45
- instance = described_class.new(argv: ["charizard"], env: "dev")
46
- expect(instance.arguments_string).to eq("")
47
- instance = described_class.new(argv: ["charizard", "delta"], env: "dev")
48
- expect(instance.arguments_string).to eq("delta")
49
- instance = described_class.new(argv: ["charizard", "delta", "-t", "--gama"], env: "dev")
50
- expect(instance.arguments_string).to eq("delta -t --gama")
51
- end
52
- end
53
-
54
- describe "#env" do
55
- it "should return the environment" do
56
- instance = described_class.new(argv: ["charizard"], env: "dev")
57
- expect(instance.env).to eq("dev")
58
- end
59
- end
60
-
61
- describe "#empty?" do
62
- subject { described_class.new(argv: argv, env: 'dev') }
63
-
64
- context "when argv is empty" do
65
- let(:argv) { [] }
66
- it "returns true" do
67
- expect(subject).to be_empty
68
- end
69
- end
70
-
71
- context "when argv is not empty" do
72
- let(:argv) { ['foo'] }
73
- it "returns false" do
74
- expect(subject).to_not be_empty
75
- end
76
- end
77
- end
78
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe JamesBond::Core::MissionLoader do
4
- subject do
5
- described_class
6
- end
7
-
8
- describe "#append_default_missions" do
9
- let(:list) { [] }
10
- let(:a_mission) { double 'a mission' }
11
-
12
- it "appends default missions to mission_list" do
13
- missions = subject.append_default_missions(list)
14
- expect(missions).to include a_kind_of(JamesBond::Core::HelpMission)
15
- end
16
- end
17
- end
@@ -1,210 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe JamesBond::Core::Mission do
4
- class GoldeneyeMission
5
- include JamesBond::Core::Mission
6
-
7
- def build(config, params)
8
- config.name = "Facility"
9
- config.main_commands = ["neutralize_alarms", "contact_double_agent"]
10
- end
11
-
12
- def run_neutralize_alarms_command(params)
13
- end
14
-
15
- def run_contact_double_agent_command(params)
16
- end
17
- end
18
-
19
- describe "#core_mission_config" do
20
- subject { GoldeneyeMission.new }
21
-
22
- it "should return the config selected by the mission" do
23
- expect(subject.core_mission_config).to be
24
- expect(subject.core_mission_config.name).to eq("Facility")
25
- expect(subject.core_mission_config.main_commands).to eq(["neutralize_alarms", "contact_double_agent"])
26
- end
27
- end
28
-
29
- describe "#build" do
30
- context "given a mission without build method" do
31
- class MissionWithoutBuildMethod
32
- include JamesBond::Core::Mission
33
- end
34
-
35
- it "should raise error on initialization" do
36
- expect { MissionWithoutBuildMethod.new }.to raise_error(NotImplementedError)
37
- end
38
- end
39
-
40
- context "given a mission with build method without defining the name and main_commands" do
41
- class MissionWithBuildMethod
42
- include JamesBond::Core::Mission
43
-
44
- def build(config, params)
45
- end
46
- end
47
-
48
- it "should call build on initialization and raise UndefinedVariableError" do
49
- expect_any_instance_of(MissionWithBuildMethod).to receive(:build).and_call_original
50
- expect { MissionWithBuildMethod.new }.to raise_error(described_class::UndefinedVariableError, /The mission name must be defined in the build method/)
51
- end
52
- end
53
-
54
- context "given a mission with build method defining only the name" do
55
- class AnotherMissionWithBuildMethod
56
- include JamesBond::Core::Mission
57
-
58
- def build(config, params)
59
- config.name = "el_capitan"
60
- end
61
- end
62
-
63
- it "should raise UndefinedVariableError" do
64
- expect { AnotherMissionWithBuildMethod.new }.to raise_error(described_class::UndefinedVariableError, /The main commands must be defined in the build method/)
65
- end
66
- end
67
-
68
- context "given a mission with build method defining the name and the main_commands" do
69
- class SomeMissionWithBuildMethod
70
- include JamesBond::Core::Mission
71
-
72
- def build(config, params)
73
- config.name = "el_capitan"
74
- config.main_commands = []
75
- end
76
- end
77
-
78
- it "should not raise error" do
79
- expect { SomeMissionWithBuildMethod.new }.to_not raise_error
80
- end
81
- end
82
-
83
- context "given a mission with build method defining the name and the main_commands " \
84
- + "but without the implementation for the main_command" do
85
- class OtherMissionWithBuildMethod
86
- include JamesBond::Core::Mission
87
-
88
- def build(config, params)
89
- config.name = "el_capitan"
90
- config.main_commands = ["capitalize"]
91
- end
92
- end
93
-
94
- it "should raise NotImplementedError" do
95
- expect { OtherMissionWithBuildMethod.new }.to \
96
- raise_error(NotImplementedError, "The method \"run_capitalize_command\" must be implemented for the OtherMissionWithBuildMethod")
97
- end
98
- end
99
-
100
- context "given a mission with build method defining the name and the main_commands " \
101
- + "and the implementation for the main_command" do
102
- it "should not raise error" do
103
- expect { GoldeneyeMission.new }.to_not raise_error
104
- end
105
- end
106
- end
107
-
108
- describe "#run_command" do
109
- let(:mission) { GoldeneyeMission.new }
110
- let(:mission_pool) { double("mission pool") }
111
-
112
- describe "given neutralize_alarms command" do
113
- let(:command) { JamesBond::Core::Command.new(argv: ["neutralize_alarms", "--all"], env: "dev") }
114
-
115
- it "should redirect the command to the correct method" do
116
- expect(mission).to receive(:run_neutralize_alarms_command).
117
- with({ command: command, mission_pool: mission_pool })
118
- mission.run_command(
119
- command: command,
120
- mission_pool: mission_pool
121
- )
122
- end
123
- end
124
-
125
- describe "given neutralize_alarms command" do
126
- let(:command) { JamesBond::Core::Command.new(argv: ["contact_double_agent", "--disguise", "scientist"], env: "dev") }
127
-
128
- it "should redirect the command to the correct method" do
129
- expect(mission).to receive(:run_contact_double_agent_command).
130
- with({ command: command, mission_pool: mission_pool })
131
- mission.run_command(
132
- command: command,
133
- mission_pool: mission_pool
134
- )
135
- end
136
- end
137
- end
138
-
139
- describe "#parse_arguments" do
140
- context "given a mission using arguments_parser feature" do
141
- class CassinoRoyaleMission
142
- include JamesBond::Core::Mission
143
-
144
- def build(config, params)
145
- config.name = "Cassino"
146
- config.main_commands = ["poker_face"]
147
-
148
- arguments_parser do |parser|
149
- parser.string "-t", "--target", "the poker face target"
150
- parser.integer "--duration", "the poker face duration (in seconds)", default: 30
151
- end
152
- end
153
-
154
- def run_poker_face_command(params)
155
- options = params[:command].options
156
- poker_face_internal_method(options[:target], options[:duration])
157
- end
158
-
159
- def poker_face_internal_method(target, duration)
160
- end
161
- end
162
-
163
- let(:poker_face_to_le_chiffre) {
164
- JamesBond::Core::Command.new(argv: ["poker_face", "--target", "Le Chiffre", "--duration", "10"],
165
- env: "production")
166
- }
167
- let(:poker_face_to_felix) {
168
- JamesBond::Core::Command.new(argv: ["poker_face", "--target", "Felix Leiter"],
169
- env: "production")
170
- }
171
-
172
- it "should be able to store the option rules and use them to parse the arguments" do
173
- mission = CassinoRoyaleMission.new
174
- expect(mission).to receive(:poker_face_internal_method).with("Le Chiffre", 10)
175
- mission.run_command(
176
- command: poker_face_to_le_chiffre,
177
- mission_pool: double("mission_pool")
178
- )
179
-
180
- mission = CassinoRoyaleMission.new
181
- expect(mission).to receive(:poker_face_internal_method).with("Felix Leiter", 30)
182
- mission.run_command(
183
- command: poker_face_to_felix,
184
- mission_pool: double("mission_pool")
185
- )
186
- end
187
-
188
- it "stores option results in #results" do
189
- mission = CassinoRoyaleMission.new
190
-
191
- expect(mission.option_rules).to be
192
- expect(mission.option_rules.to_s).to match /the poker face duration/
193
- end
194
-
195
- describe "#core_mission_options" do
196
- let(:command) { JamesBond::Core::Command.new(argv: ["poker_face", "--target", "Vesper Lynd"], env: "dev") }
197
- subject { CassinoRoyaleMission.new }
198
-
199
- it "should return the options selected by the mission" do
200
- subject.run_command(
201
- command: command,
202
- mission_pool: double("mission pool")
203
- )
204
- expect(subject.core_mission_options).to be
205
- expect(subject.core_mission_options[:target]).to eq("Vesper Lynd")
206
- end
207
- end
208
- end
209
- end
210
- end
data/spec/spec_helper.rb DELETED
@@ -1,7 +0,0 @@
1
- require "bundler/setup"
2
- Bundler.setup
3
-
4
- require "james_bond/core"
5
-
6
- RSpec.configure do |config|
7
- end