james_bond-core 0.1.1 → 0.1.2

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 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