bovem 2.0.3 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/.travis-gemfile +13 -0
  2. data/.travis.yml +4 -2
  3. data/Gemfile +13 -1
  4. data/bovem.gemspec +2 -10
  5. data/doc/Bovem.html +3 -3
  6. data/doc/Bovem/Configuration.html +14 -12
  7. data/doc/Bovem/Console.html +155 -301
  8. data/doc/Bovem/ConsoleMethods.html +3 -3
  9. data/doc/Bovem/ConsoleMethods/Interactions.html +36 -44
  10. data/doc/Bovem/ConsoleMethods/Interactions/ClassMethods.html +7 -7
  11. data/doc/Bovem/ConsoleMethods/Logging.html +62 -62
  12. data/doc/Bovem/ConsoleMethods/Logging/ClassMethods.html +7 -7
  13. data/doc/Bovem/ConsoleMethods/Output.html +59 -141
  14. data/doc/Bovem/ConsoleMethods/StyleHandling.html +3 -3
  15. data/doc/Bovem/ConsoleMethods/StyleHandling/ClassMethods.html +4 -4
  16. data/doc/Bovem/Errors.html +3 -3
  17. data/doc/Bovem/Errors/InvalidConfiguration.html +3 -3
  18. data/doc/Bovem/Errors/InvalidLogger.html +3 -3
  19. data/doc/Bovem/Logger.html +3 -3
  20. data/doc/Bovem/Shell.html +22 -22
  21. data/doc/Bovem/ShellMethods.html +3 -3
  22. data/doc/Bovem/ShellMethods/Directories.html +21 -21
  23. data/doc/Bovem/ShellMethods/Execute.html +21 -21
  24. data/doc/Bovem/ShellMethods/General.html +130 -20
  25. data/doc/Bovem/ShellMethods/Read.html +21 -21
  26. data/doc/Bovem/ShellMethods/Write.html +20 -20
  27. data/doc/Bovem/Version.html +5 -5
  28. data/doc/_index.html +4 -4
  29. data/doc/file.README.html +3 -3
  30. data/doc/frames.html +1 -1
  31. data/doc/index.html +3 -3
  32. data/doc/method_list.html +43 -51
  33. data/doc/top-level-namespace.html +3 -3
  34. data/lib/bovem.rb +1 -1
  35. data/lib/bovem/configuration.rb +12 -4
  36. data/lib/bovem/console.rb +25 -46
  37. data/lib/bovem/shell.rb +12 -5
  38. data/lib/bovem/version.rb +2 -2
  39. data/spec/bovem/configuration_spec.rb +3 -3
  40. data/spec/bovem/console_spec.rb +12 -30
  41. data/spec/bovem/shell_spec.rb +17 -2
  42. metadata +6 -118
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Top Level Namespace
8
8
 
9
- &mdash; Documentation by YARD 0.8.3
9
+ &mdash; Documentation by YARD 0.8.4
10
10
 
11
11
  </title>
12
12
 
@@ -103,9 +103,9 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Sat Feb 2 17:05:17 2013 by
106
+ Generated on Tue Feb 5 13:31:46 2013 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
- 0.8.3 (ruby-1.9.3).
108
+ 0.8.4 (ruby-1.9.3).
109
109
  </div>
110
110
 
111
111
  </body>
@@ -5,10 +5,10 @@
5
5
  #
6
6
 
7
7
  require "logger"
8
- require "lazier"
9
8
  require "open4"
10
9
  require "find"
11
10
  require "fileutils"
11
+ require "lazier"
12
12
 
13
13
  Lazier.load!(:object)
14
14
 
@@ -30,6 +30,7 @@ module Bovem
30
30
  # @param logger [Logger] The logger to use for notifications.
31
31
  # @see #parse
32
32
  def initialize(file = nil, overrides = {}, logger = nil)
33
+ self.i18n_setup(:bovem, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
33
34
  self.parse(file, overrides, logger)
34
35
  end
35
36
 
@@ -91,14 +92,21 @@ module Bovem
91
92
  def read_configuration_file(file, logger)
92
93
  begin
93
94
  # Open the file
94
- path = ::Pathname.new(file).realpath
95
+ path = file =~ /^#{File::SEPARATOR}/ ? file : ::Pathname.new(file).realpath.to_s
95
96
  logger.info(self.i18n.using(path)) if logger
96
- self.tap do |config|
97
- eval(::File.read(path))
98
- end
97
+ eval_file(path)
99
98
  rescue ::Exception => e
100
99
  raise Bovem::Errors::InvalidConfiguration.new(self.i18n.configuration.invalid(file))
101
100
  end
102
101
  end
102
+
103
+ # Eval a configuration file.
104
+ #
105
+ # @param path [String] The file to read.
106
+ def eval_file(path)
107
+ self.tap do |config|
108
+ eval(::File.read(path))
109
+ end
110
+ end
103
111
  end
104
112
  end
@@ -112,13 +112,6 @@ module Bovem
112
112
 
113
113
  # Methods for formatting output messages.
114
114
  module Output
115
- # Gets the current screen width.
116
- #
117
- # @return [Fixnum] The screen width.
118
- def get_screen_width
119
- ::Bovem::Console.execute("tput cols").to_integer(80)
120
- end
121
-
122
115
  # Sets the new indentation width.
123
116
  #
124
117
  # @param width [Fixnum] The new width.
@@ -205,7 +198,7 @@ module Bovem
205
198
 
206
199
  # Compute the real width available for the screen, if we both indent and wrap
207
200
  if wrap == true then
208
- wrap = @line_width
201
+ wrap = self.line_width
209
202
 
210
203
  if indent == true then
211
204
  wrap -= @indentation
@@ -234,8 +227,7 @@ module Bovem
234
227
 
235
228
  rv = go_up ? "\e[A" : ""
236
229
 
237
- @screen_width ||= self.get_screen_width
238
- width = (width == true || width.to_integer < 1 ? @screen_width : width.to_integer)
230
+ width = (width == true || width.to_integer < 1 ? self.line_width : width.to_integer)
239
231
 
240
232
  # Get padding
241
233
  padding = width - message.to_s.gsub(/(\e\[[0-9]*[a-z]?)|(\\n)/i, "").length
@@ -465,24 +457,20 @@ module Bovem
465
457
  # @param prompt [String|Boolean] A prompt to show. If `true`, `Please insert a value:` will be used, if `nil` or `false` no prompt will be shown.
466
458
  # @param default_value [String] Default value if user simply pressed the enter key.
467
459
  # @param validator [Array|Regexp] An array of values or a Regexp to match the submitted value against.
468
- # @param echo [Boolean] If to show submitted text to the user.
460
+ # @param echo [Boolean] If to show submitted text to the user. **Not supported and thus ignored on Rubinius.**
469
461
  def read(prompt = true, default_value = nil, validator = nil, echo = true)
470
462
  prompt = sanitize_prompt(prompt)
471
-
472
- # Adjust validator
473
463
  validator = sanitize_validator(validator)
474
464
 
475
- with_echo_handling(echo) do
476
- begin
477
- catch(:reply) do
478
- while true do
479
- reply = validate_input_value(read_input_value(prompt, default_value), validator)
480
- handle_reply(reply)
481
- end
465
+ begin
466
+ catch(:reply) do
467
+ while true do
468
+ reply = validate_input_value(read_input_value(prompt, echo, default_value), validator)
469
+ handle_reply(reply)
482
470
  end
483
- rescue Interrupt => e
484
- default_value
485
471
  end
472
+ rescue Interrupt => e
473
+ default_value
486
474
  end
487
475
  end
488
476
 
@@ -547,32 +535,19 @@ module Bovem
547
535
  validator.present? && !validator.is_a?(::Regexp) ? validator.ensure_array.collect {|v| v.ensure_string} : validator
548
536
  end
549
537
 
550
- # Handle terminal echoing.
551
- #
552
- # @param echo [Boolean] If disabled echoing
553
- def with_echo_handling(echo = true)
554
- rv = nil
555
-
556
- disable_echo = !echo && @stty.present? && /-echo\b/mix.match(::Bovem::Console.execute(@stty)).nil?
557
- ::Bovem::Console.execute("#{@stty} -echo") if disable_echo
558
- rv = yield
559
- ::Bovem::Console.execute("#{@stty} echo") if disable_echo
560
-
561
- rv
562
- end
563
-
564
538
  # Read an input from the terminal.
565
539
  #
566
540
  # @param prompt [String] A message to show to the user.
541
+ # @param echo [Boolean] If disable echoing. **Not supported and thus ignored on Rubinius.**
567
542
  # @param default_value [Object] A default value to enter if the user just pressed the enter key.
568
543
  # @return [Object] The read value.
569
- def read_input_value(prompt, default_value = nil)
544
+ def read_input_value(prompt, echo, default_value = nil)
570
545
  if prompt then
571
546
  Kernel.print self.format(prompt, false, false)
572
547
  $stdout.flush
573
548
  end
574
549
 
575
- reply = $stdin.gets.chop
550
+ reply = (echo || !$stdin.respond_to?(:noecho) ? $stdin.gets : $stdin.noecho(&:gets)).ensure_string.chop
576
551
  reply.present? ? reply : default_value
577
552
  end
578
553
 
@@ -609,17 +584,11 @@ module Bovem
609
584
 
610
585
  # This is a text utility wrapper console I/O.
611
586
  #
612
- # @attribute line_width
613
- # @return [Fixnum] The line width. Default to `80`.
614
- # @attribute screen_width
615
- # @return [Fixnum] The current screen width.
616
587
  # @attribute indentation
617
588
  # @return [Fixnum] Current indentation width.
618
589
  # @attribute indentation_string
619
590
  # @return [String] The string used for indentation.
620
591
  class Console
621
- attr_accessor :line_width
622
- attr_accessor :screen_width
623
592
  attr_accessor :indentation
624
593
  attr_accessor :indentation_string
625
594
 
@@ -638,11 +607,21 @@ module Bovem
638
607
 
639
608
  # Initializes a new Console.
640
609
  def initialize
641
- @line_width = self.get_screen_width
642
610
  @indentation = 0
643
611
  @indentation_string = " "
644
- @stty = ::Bovem::Console.execute("which stty").strip
645
612
  self.i18n_setup(:bovem, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
646
613
  end
614
+
615
+ # Get the width of the terminal.
616
+ #
617
+ # @return [Fixnum] The current width of the terminal. If not possible to retrieve the width, it returns `80.
618
+ def line_width
619
+ begin
620
+ require "io/console" if !defined?($stdin.winsize)
621
+ $stdin.winsize[1]
622
+ rescue Exception => e
623
+ 80
624
+ end
625
+ end
647
626
  end
648
627
  end
@@ -19,17 +19,24 @@ module Bovem
19
19
  # @param fatal [Boolean] If quit in case of fatal errors.
20
20
  # @param show_errors [Boolean] Whether to show errors.
21
21
  def handle_failure(e, access_error, not_found_error, general_error, entries, fatal, show_errors)
22
- error_type = fatal ? :fatal : :error
23
- message = e.message.gsub(/.+ - (.+)/, "\\1")
24
- locale = self.i18n.shell
22
+ error_type, locale, final_entries = setup_error_handling(entries, fatal)
25
23
 
26
24
  case e.class.to_s
27
- when "Errno::EACCES" then @console.send(error_type, locale.send(access_error, message))
28
- when "Errno::ENOENT" then @console.send(error_type, locale.send(not_found_error, message))
25
+ when "Errno::EACCES" then @console.send(error_type, locale.send(access_error, final_entries))
26
+ when "Errno::ENOENT" then @console.send(error_type, locale.send(not_found_error, final_entries))
29
27
  else show_general_failure(e, general_error, entries, fatal) if show_errors
30
28
  end
31
29
  end
32
30
 
31
+ # Setups error handling.
32
+ #
33
+ # @param entries [Array] The list of entries which failed.
34
+ # @param fatal [Boolean] If quit in case of fatal errors.
35
+ # @return [Array] Variables for error handling
36
+ def setup_error_handling(entries, fatal)
37
+ [fatal ? :fatal : :error, self.i18n.shell, entries.length == 1 ? entries[0] : entries]
38
+ end
39
+
33
40
  # Shows errors when a directory creation failed.
34
41
  #
35
42
  # @param e [Exception] The occurred exception.
@@ -14,10 +14,10 @@ module Bovem
14
14
  MAJOR = 2
15
15
 
16
16
  # The minor version.
17
- MINOR = 0
17
+ MINOR = 1
18
18
 
19
19
  # The patch version.
20
- PATCH = 3
20
+ PATCH = 0
21
21
 
22
22
  # The current version number of Bovem.
23
23
  STRING = [MAJOR, MINOR, PATCH].compact.join(".")
@@ -11,12 +11,12 @@ describe Bovem::Configuration do
11
11
  property :property
12
12
  end
13
13
 
14
- let(:log_file) { "/tmp/bovem-test-log-#{Time.now.strftime("%Y%m%d-%H:%M:%S")}" }
15
- let(:test_prefix) { "/tmp/bovem-test-#{Time.now.strftime("%Y%m%d-%H:%M:%S")}" }
14
+ let(:log_file) { "/tmp/bovem-test-log-#{Time.now.strftime("%Y%m%d-%H%M%S")}" }
15
+ let(:test_prefix) { "/tmp/bovem-test-#{Time.now.strftime("%Y%m%d-%H%M%S")}" }
16
16
 
17
17
  describe "#parse" do
18
18
  it "reads a valid configuration file" do
19
- file = ::File.open("#{test_prefix}", "w") {|f| f.write("config.property = 1234") }
19
+ file = ::File.open(test_prefix, "w") {|f| f.write("config.property = 1234") }
20
20
 
21
21
  config = BaseConfiguration.new(test_prefix)
22
22
  expect(config.property).to eq(1234)
@@ -66,20 +66,20 @@ describe Bovem::Console do
66
66
  describe "#initialize" do
67
67
  it "should correctly set defaults" do
68
68
  expect(console.indentation).to eq(0)
69
- expect(console.line_width).to eq(`tput cols`.to_integer)
70
69
  expect(console.indentation_string).to eq(" ")
71
70
  end
72
71
  end
73
72
 
74
- describe "#get_screen_width" do
75
- it "should execute \"tput cols\" and \"which stty\"" do
76
- ::Bovem::Console.should_receive(:execute).with("tput cols").at_least(1).and_call_original
77
- ::Bovem::Console.should_receive(:execute).with("which stty").at_least(1).and_call_original
78
- console.get_screen_width
73
+ describe "#line_width" do
74
+ it "should return a Fixnum greater than 0" do
75
+ w = console.line_width
76
+ expect(w).to be_a(Fixnum)
77
+ expect(w >= 0).to be_true
79
78
  end
80
79
 
81
- it "should return a number >= 0" do
82
- expect(console.get_screen_width).to be >= 0
80
+ it "should use $stdin.winsize if available" do
81
+ $stdin.should_receive(:winsize)
82
+ console.line_width
83
83
  end
84
84
  end
85
85
 
@@ -181,13 +181,13 @@ describe Bovem::Console do
181
181
  it "should correctly align messages" do
182
182
  message = "ABCDE"
183
183
  extended_message = "ABC\e[AD\e[3mE"
184
- console.screen_width = 80
184
+ console.stub(:line_width).and_return(80)
185
185
 
186
186
  expect(console.format_right(message)).to eq("\e[A\e[0G\e[#{75}CABCDE")
187
187
  expect(console.format_right(message, 10)).to eq("\e[A\e[0G\e[#{5}CABCDE")
188
188
  expect(console.format_right(extended_message)).to eq("\e[A\e[0G\e[#{75}CABC\e[AD\e[3mE")
189
189
  expect(console.format_right(message, nil, false)).to eq("\e[0G\e[#{75}CABCDE")
190
- console.screen_width = 10
190
+ console.stub(:line_width).and_return(10)
191
191
  expect(console.format_right(message)).to eq("\e[A\e[0G\e[#{5}CABCDE")
192
192
  end
193
193
  end
@@ -302,7 +302,7 @@ describe Bovem::Console do
302
302
  end
303
303
  end
304
304
 
305
- describe "status" do
305
+ describe "#status" do
306
306
  it "should get the right status" do
307
307
  expect(console.status(:ok, false, true, false)).to eq({label: " OK ", color: "bright green"})
308
308
  expect(console.status(:pass, false, true, false)).to eq({label: "PASS", color: "bright cyan"})
@@ -390,25 +390,7 @@ describe Bovem::Console do
390
390
  end
391
391
 
392
392
  it "should hide echo to the user when the terminal shows echo" do
393
- $stdin.stub(:gets).and_return("VALUE\n")
394
- stty = %x{which stty}.strip
395
-
396
- ::Bovem::Console.should_receive(:execute).with("tput cols").and_return(80)
397
- ::Bovem::Console.should_receive(:execute).with("which stty").and_return(stty)
398
- ::Bovem::Console.should_receive(:execute).with(stty).and_return("speed 9600 baud;\nlflags: echoe echoke echoctl pendin\niflags: iutf8\noflags: -oxtabs\ncflags: cs8 -parenb")
399
- ::Bovem::Console.should_receive(:execute).with("#{stty} -echo")
400
- ::Bovem::Console.should_receive(:execute).with("#{stty} echo")
401
- console.read(nil, nil, nil, false)
402
- end
403
-
404
- it "shouldn't hide echo again when the terminal already hides it" do
405
- $stdin.stub(:gets).and_return("VALUE\n")
406
- stty = %x{which stty}.strip
407
-
408
- ::Bovem::Console.should_receive(:execute).with("which stty").and_return(stty)
409
- ::Bovem::Console.should_receive(:execute).with(stty).and_return("speed 9600 baud;\nlflags: -echo echoe echoke echoctl pendin\niflags: iutf8\noflags: -oxtabs\ncflags: cs8 -parenb")
410
- ::Bovem::Console.should_not_receive("execute").with("#{stty} -echo")
411
- ::Bovem::Console.should_not_receive("execute").with("#{stty} echo")
393
+ $stdin.should_receive(:noecho).and_return("VALUE")
412
394
  console.read(nil, nil, nil, false)
413
395
  end
414
396
  end
@@ -36,6 +36,10 @@ describe Bovem::Shell do
36
36
  end
37
37
 
38
38
  describe "#run" do
39
+ before(:each) do
40
+ ::Open4::stub(:popen4) do |_a, _b, _c, _d| OpenStruct.new(exitstatus: 0) end
41
+ end
42
+
39
43
  it "should show a message" do
40
44
  shell.console.should_receive("begin").with("MESSAGE")
41
45
  shell.run("echo OK", "MESSAGE", true, false)
@@ -50,17 +54,22 @@ describe Bovem::Shell do
50
54
 
51
55
  it "should only print the command if requested to" do
52
56
  shell.console.should_receive("warn").with("Will run command: {mark=bright}\"echo OK\"{/mark}...")
53
- ::Open4.should_not_receive("open4")
57
+ ::Open4.should_not_receive("popen4")
54
58
  shell.run("echo OK", nil, false, false)
55
59
  end
56
60
 
57
61
  it "should only execute a command" do
58
62
  shell.console.should_not_receive("warn").with("Will run command: {mark=bright}\"echo OK\"{/mark}...")
59
- ::Open4.should_receive("popen4").and_return(::OpenStruct.new(exitstatus: 0))
60
63
  shell.run("echo OK", nil, true, false)
61
64
  end
62
65
 
63
66
  it "should show a exit message" do
67
+ i = -1
68
+ ::Open4::stub(:popen4) do |_a, _b, _c, _d|
69
+ i += 1
70
+ OpenStruct.new(exitstatus: i)
71
+ end
72
+
64
73
  shell.console.should_receive(:status).with(:ok)
65
74
  shell.run("echo OK", nil, true, true)
66
75
  shell.console.should_receive(:status).with(:fail)
@@ -69,10 +78,16 @@ describe Bovem::Shell do
69
78
 
70
79
  it "should print output" do
71
80
  Kernel.should_receive("print").with("OK\n")
81
+
82
+ stdout = Object.new
83
+ stdout.stub(:each_line).and_yield("OK\n")
84
+ ::Open4::stub(:popen4).and_yield(nil, nil, stdout, nil).and_return(OpenStruct.new(exitstatus: 0))
85
+
72
86
  shell.run("echo OK", nil, true, false, true)
73
87
  end
74
88
 
75
89
  it "should raise a exception for failures" do
90
+ ::Open4::stub(:popen4) {|_a, _b, _c, _d| OpenStruct.new(exitstatus: 1) }
76
91
  expect { shell.run("echo1 OK", nil, true, false, false, false, false) }.to_not raise_error(SystemExit)
77
92
  expect { shell.run("echo1 OK", nil, true, false, false) }.to raise_error(SystemExit)
78
93
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bovem
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-03 00:00:00.000000000 Z
12
+ date: 2013-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: lazier
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 2.5.0
21
+ version: 2.6.3
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 2.5.0
29
+ version: 2.6.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: open4
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -43,118 +43,6 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: 1.3.0
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 2.12.0
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 2.12.0
62
- - !ruby/object:Gem::Dependency
63
- name: rake
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: 10.0.3
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 10.0.3
78
- - !ruby/object:Gem::Dependency
79
- name: simplecov
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: 0.7.1
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: 0.7.1
94
- - !ruby/object:Gem::Dependency
95
- name: pry
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: yard
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ~>
116
- - !ruby/object:Gem::Version
117
- version: 0.8.3
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ~>
124
- - !ruby/object:Gem::Version
125
- version: 0.8.3
126
- - !ruby/object:Gem::Dependency
127
- name: redcarpet
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ~>
132
- - !ruby/object:Gem::Version
133
- version: 2.2.2
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: 2.2.2
142
- - !ruby/object:Gem::Dependency
143
- name: github-markup
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ~>
148
- - !ruby/object:Gem::Version
149
- version: 0.7.5
150
- type: :development
151
- prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ~>
156
- - !ruby/object:Gem::Version
157
- version: 0.7.5
158
46
  description: A collection of utilities for developers.
159
47
  email:
160
48
  - shogun_panda@me.com
@@ -163,10 +51,10 @@ extensions: []
163
51
  extra_rdoc_files: []
164
52
  files:
165
53
  - .gitignore
54
+ - .travis-gemfile
166
55
  - .travis.yml
167
56
  - .yardopts
168
57
  - Gemfile
169
- - Gemfile.lock
170
58
  - README.md
171
59
  - Rakefile
172
60
  - bovem.gemspec
@@ -233,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
233
121
  requirements:
234
122
  - - ! '>='
235
123
  - !ruby/object:Gem::Version
236
- version: 1.9.2
124
+ version: 1.9.3
237
125
  required_rubygems_version: !ruby/object:Gem::Requirement
238
126
  none: false
239
127
  requirements: