aruba 0.8.1 → 0.9.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +1 -0
  3. data/.travis.yml +3 -1
  4. data/Gemfile +13 -10
  5. data/History.md +25 -7
  6. data/README.md +6 -1
  7. data/Rakefile +16 -3
  8. data/aruba.gemspec +10 -2
  9. data/bin/aruba +7 -0
  10. data/cucumber.yml +11 -2
  11. data/features/api/command/extract_text.feature +97 -0
  12. data/features/api/command/unescape_text.feature +119 -0
  13. data/features/api/core/expand_path.feature +16 -0
  14. data/features/api/{cd.feature → filesystem/cd.feature} +2 -1
  15. data/features/api/filesystem/create_directory.feature +57 -0
  16. data/features/api/filesystem/disk_usage.feature +151 -0
  17. data/features/api/filesystem/does_exist.feature +62 -0
  18. data/features/api/filesystem/is_absolute.feature +48 -0
  19. data/features/api/filesystem/is_directory.feature +53 -0
  20. data/features/api/filesystem/is_file.feature +54 -0
  21. data/features/api/filesystem/is_relative.feature +48 -0
  22. data/features/cli/console.feature +52 -0
  23. data/features/configuration/console_history_file.feature +38 -0
  24. data/features/configuration/exit_timeout.feature +2 -1
  25. data/features/configuration/fixtures_path_prefix.feature +0 -1
  26. data/features/configuration/home_directory.feature +0 -1
  27. data/features/configuration/io_timeout.feature +0 -1
  28. data/features/configuration/keep_ansi.feature +1 -2
  29. data/features/configuration/log_level.feature +38 -0
  30. data/features/configuration/physical_block_size.feature +53 -0
  31. data/features/configuration/remove_ansi_escape_sequences.feature +38 -0
  32. data/features/configuration/root_directory.feature +0 -1
  33. data/features/configuration/working_directory.feature +2 -1
  34. data/features/fixtures/cli-app/README.md +5 -0
  35. data/features/fixtures/cli-app/lib/cli/app.rb +1 -1
  36. data/features/fixtures/cli-app/spec/spec_helper.rb +1 -2
  37. data/features/fixtures/cli-app/spec/support/aruba.rb +1 -0
  38. data/features/fixtures/empty-app/lib/cli/app.rb +1 -1
  39. data/features/fixtures/empty-app/spec/spec_helper.rb +1 -1
  40. data/features/step_definitions/aruba_dev_steps.rb +12 -1
  41. data/features/support/env.rb +1 -1
  42. data/lib/aruba/announcer.rb +1 -14
  43. data/lib/aruba/api.rb +6 -6
  44. data/lib/aruba/api/command.rb +74 -12
  45. data/lib/aruba/api/core.rb +18 -11
  46. data/lib/aruba/api/deprecated.rb +60 -72
  47. data/lib/aruba/api/filesystem.rb +41 -16
  48. data/lib/aruba/aruba_logger.rb +77 -0
  49. data/lib/aruba/aruba_path.rb +33 -0
  50. data/lib/aruba/basic_configuration.rb +2 -2
  51. data/lib/aruba/cli.rb +11 -0
  52. data/lib/aruba/config.rb +13 -3
  53. data/lib/aruba/config/jruby.rb +5 -2
  54. data/lib/aruba/console.rb +66 -0
  55. data/lib/aruba/console/help.rb +33 -0
  56. data/lib/aruba/contracts/is_power_of_two.rb +15 -0
  57. data/lib/aruba/cucumber.rb +27 -10
  58. data/lib/aruba/cucumber/hooks.rb +15 -8
  59. data/lib/aruba/disk_usage_calculator.rb +7 -0
  60. data/lib/aruba/file_size.rb +52 -0
  61. data/lib/aruba/in_process.rb +1 -1
  62. data/lib/aruba/jruby.rb +1 -1
  63. data/lib/aruba/matchers/command.rb +1 -1
  64. data/lib/aruba/matchers/directory.rb +1 -1
  65. data/lib/aruba/matchers/environment.rb +1 -1
  66. data/lib/aruba/matchers/file.rb +1 -1
  67. data/lib/aruba/matchers/path.rb +1 -1
  68. data/lib/aruba/matchers/path/match_path_pattern.rb +1 -1
  69. data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +1 -1
  70. data/lib/aruba/platform.rb +14 -242
  71. data/lib/aruba/{creators → platforms}/aruba_file_creator.rb +3 -3
  72. data/lib/aruba/{creators → platforms}/aruba_fixed_size_file_creator.rb +2 -2
  73. data/lib/aruba/platforms/simple_table.rb +36 -0
  74. data/lib/aruba/platforms/unix_command_string.rb +24 -0
  75. data/lib/aruba/platforms/unix_environment_variables.rb +130 -0
  76. data/lib/aruba/platforms/unix_platform.rb +226 -0
  77. data/lib/aruba/platforms/unix_which.rb +83 -0
  78. data/lib/aruba/platforms/windows_command_string.rb +23 -0
  79. data/lib/aruba/platforms/windows_environment_variables.rb +83 -0
  80. data/lib/aruba/platforms/windows_platform.rb +39 -0
  81. data/lib/aruba/platforms/windows_which.rb +104 -0
  82. data/lib/aruba/process_monitor.rb +3 -3
  83. data/lib/aruba/processes/basic_process.rb +23 -3
  84. data/lib/aruba/processes/debug_process.rb +2 -2
  85. data/lib/aruba/processes/in_process.rb +1 -1
  86. data/lib/aruba/processes/spawn_process.rb +10 -4
  87. data/lib/aruba/reporting.rb +1 -1
  88. data/lib/aruba/rspec.rb +8 -6
  89. data/lib/aruba/runtime.rb +8 -5
  90. data/lib/aruba/version.rb +1 -1
  91. data/spec/aruba/api_spec.rb +25 -23
  92. data/spec/aruba/aruba_path_spec.rb +37 -0
  93. data/spec/aruba/jruby_spec.rb +1 -1
  94. data/spec/aruba/matchers/file_spec.rb +2 -2
  95. data/spec/aruba/matchers/path_spec.rb +3 -3
  96. data/spec/aruba/platform/simple_table_spec.rb +23 -0
  97. data/spec/aruba/platform/windows_environment_variables_spec.rb +500 -0
  98. data/spec/aruba/spawn_process_spec.rb +3 -1
  99. metadata +90 -12
  100. data/lib/aruba/contracts/is_a.rb +0 -21
  101. data/lib/aruba/environment.rb +0 -121
@@ -1,11 +1,15 @@
1
1
  require 'aruba/platform'
2
+
2
3
  require 'aruba/extensions/string/strip'
3
- require 'aruba/creators/aruba_file_creator'
4
- require 'aruba/creators/aruba_fixed_size_file_creator'
5
4
 
6
- Aruba::Platform.require_matching_files('../matchers/file/*.rb', __FILE__)
7
- Aruba::Platform.require_matching_files('../matchers/directory/*.rb', __FILE__)
8
- Aruba::Platform.require_matching_files('../matchers/path/*.rb', __FILE__)
5
+ require 'aruba/platforms/aruba_file_creator'
6
+ require 'aruba/platforms/aruba_fixed_size_file_creator'
7
+ require 'aruba/disk_usage_calculator'
8
+ require 'aruba/aruba_path'
9
+
10
+ Aruba.platform.require_matching_files('../matchers/file/*.rb', __FILE__)
11
+ Aruba.platform.require_matching_files('../matchers/directory/*.rb', __FILE__)
12
+ Aruba.platform.require_matching_files('../matchers/path/*.rb', __FILE__)
9
13
 
10
14
  module Aruba
11
15
  module Api
@@ -15,7 +19,7 @@ module Aruba
15
19
  # @param [String] file_or_directory
16
20
  # The file/directory which should exist
17
21
  def exist?(file_or_directory)
18
- Aruba::Platform.exist? expand_path(file_or_directory)
22
+ Aruba.platform.exist? expand_path(file_or_directory)
19
23
  end
20
24
 
21
25
  # Check if file exist and is file
@@ -23,7 +27,7 @@ module Aruba
23
27
  # @param [String] file
24
28
  # The file/directory which should exist
25
29
  def file?(file)
26
- Aruba::Platform.file? expand_path(file)
30
+ Aruba.platform.file? expand_path(file)
27
31
  end
28
32
 
29
33
  # Check if directory exist and is directory
@@ -31,7 +35,7 @@ module Aruba
31
35
  # @param [String] file
32
36
  # The file/directory which should exist
33
37
  def directory?(file)
34
- Aruba::Platform.directory? expand_path(file)
38
+ Aruba.platform.directory? expand_path(file)
35
39
  end
36
40
 
37
41
  # Check if path is absolute
@@ -140,7 +144,7 @@ module Aruba
140
144
 
141
145
  args.each { |p| create_directory(File.dirname(p)) }
142
146
 
143
- Aruba::Platform.touch(args.map { |p| expand_path(p) }, options)
147
+ Aruba.platform.touch(args.map { |p| expand_path(p) }, options)
144
148
 
145
149
  self
146
150
  end
@@ -174,13 +178,13 @@ module Aruba
174
178
  destination_path = expand_path(destination)
175
179
 
176
180
  if source_paths.count > 1
177
- Aruba::Platform.mkdir(destination_path)
181
+ Aruba.platform.mkdir(destination_path)
178
182
  else
179
- Aruba::Platform.mkdir(File.dirname(destination_path))
183
+ Aruba.platform.mkdir(File.dirname(destination_path))
180
184
  source_paths = source_paths.first
181
185
  end
182
186
 
183
- Aruba::Platform.cp source_paths, destination_path
187
+ Aruba.platform.cp source_paths, destination_path
184
188
 
185
189
  self
186
190
  end
@@ -239,7 +243,7 @@ module Aruba
239
243
  args.each { |p| raise "Expected #{p} to be present" unless exist?(p) }
240
244
  paths = args.map { |p| expand_path(p) }
241
245
 
242
- Aruba::Platform.chmod(mode, paths, options)
246
+ Aruba.platform.chmod(mode, paths, options)
243
247
 
244
248
  self
245
249
  end
@@ -254,7 +258,7 @@ module Aruba
254
258
  def append_to_file(file_name, file_content)
255
259
  file_name = expand_path(file_name)
256
260
 
257
- Aruba::Platform.mkdir(File.dirname(file_name))
261
+ Aruba.platform.mkdir(File.dirname(file_name))
258
262
  File.open(file_name, 'a') { |f| f << file_content }
259
263
  end
260
264
 
@@ -263,7 +267,7 @@ module Aruba
263
267
  # @param [String] directory_name
264
268
  # The name of the directory which should be created
265
269
  def create_directory(directory_name)
266
- Aruba::Platform.mkdir expand_path(directory_name)
270
+ Aruba.platform.mkdir expand_path(directory_name)
267
271
 
268
272
  self
269
273
  end
@@ -283,7 +287,7 @@ module Aruba
283
287
 
284
288
  args = args.map { |p| expand_path(p) }
285
289
 
286
- Aruba::Platform.rm(args, options)
290
+ Aruba.platform.rm(args, options)
287
291
  end
288
292
 
289
293
  # Read content of file and yield the content to block
@@ -300,6 +304,27 @@ module Aruba
300
304
 
301
305
  yield(content)
302
306
  end
307
+
308
+ # Calculate disk usage for file(s) and/or directories
309
+ #
310
+ # It shows the disk usage for a single file/directory. If multiple paths
311
+ # are given, it sum their size up.
312
+ #
313
+ # @param [Array, Path] paths
314
+ # The paths
315
+ #
316
+ # @result [FileSize]
317
+ # Bytes on disk
318
+ def disk_usage(*paths)
319
+ size = paths.flatten.map do |p|
320
+ DiskUsageCalculator.new.calc(
321
+ ArubaPath.new(expand_path(p)).blocks,
322
+ aruba.config.physical_block_size
323
+ )
324
+ end.inject(0, &:+)
325
+
326
+ FileSize.new(size)
327
+ end
303
328
  end
304
329
  end
305
330
  end
@@ -0,0 +1,77 @@
1
+ require 'logger'
2
+
3
+ module Aruba
4
+ class ArubaLogger
5
+ attr_reader :mode
6
+
7
+ # Create logger
8
+ #
9
+ # @param [Logger] logger (::Logger.new( $stderr ))
10
+ # The logger with should be used to output data
11
+ def initialize(opts = {})
12
+ @mode = opts.fetch(:default_mode, :info)
13
+ end
14
+
15
+ [:fatal, :warn, :debug, :info, :error, :unknown].each do |m|
16
+ define_method m do |msg|
17
+ if RUBY_VERSION < '1.9'
18
+ logger.send m, msg
19
+ else
20
+ logger.public_send m, msg
21
+ end
22
+ end
23
+ end
24
+
25
+ # Create new logger on every invocation to make
26
+ # capturing $stderr possible
27
+ def logger
28
+ l = ::Logger.new($stderr)
29
+
30
+ case mode
31
+ when :debug
32
+ l.level = ::Logger::DEBUG
33
+ format_debug(l)
34
+ when :silent
35
+ l.level = 9_999
36
+ when :info
37
+ l.level = ::Logger::INFO
38
+ format_standard(l)
39
+ else
40
+ l.level = ::Logger::INFO
41
+ format_standard(l)
42
+ end
43
+
44
+ l
45
+ end
46
+
47
+ # Is mode?
48
+ #
49
+ # @param [String, Symbol] m
50
+ # Mode to compare with
51
+ def mode?(m)
52
+ mode == m.to_sym
53
+ end
54
+
55
+ # Change mode of logger: :debug, ... + Change the output format
56
+ #
57
+ # @param [Symbol] m
58
+ # the mode: :debug, ...
59
+ def mode=(m)
60
+ @mode = m.to_sym
61
+ end
62
+
63
+ private
64
+
65
+ def format_debug(l)
66
+ l.formatter = proc { |severity, datetime, progname, msg|
67
+ format("%s %s %s: %s\n", datetime, severity, progname, msg)
68
+ }
69
+ end
70
+
71
+ def format_standard(l)
72
+ l.formatter = proc { |severity, datetime, _, msg|
73
+ format("%s %s: %s\n", datetime, severity, msg)
74
+ }
75
+ end
76
+ end
77
+ end
@@ -1,6 +1,8 @@
1
1
  require 'pathname'
2
2
  require 'delegate'
3
3
 
4
+ require 'aruba/file_size'
5
+
4
6
  module Aruba
5
7
  class ArubaPath < Delegator
6
8
  def initialize(path)
@@ -60,6 +62,27 @@ module Aruba
60
62
  end
61
63
  end
62
64
 
65
+ # How many parts has the file name
66
+ #
67
+ # @return [Integer]
68
+ # The count of file name parts
69
+ #
70
+ # @example
71
+ #
72
+ # path = ArubaPath.new('path/to/file.txt')
73
+ # path.depth # => 3
74
+ #
75
+ def depth
76
+ if RUBY_VERSION < '1.9'
77
+ items = []
78
+ __getobj__.each_filename { |f| items << f }
79
+
80
+ items.size
81
+ else
82
+ __getobj__.each_filename.to_a.size
83
+ end
84
+ end
85
+
63
86
  # Path ends with string
64
87
  #
65
88
  # @param [String] string
@@ -86,5 +109,15 @@ module Aruba
86
109
  to_s[index]
87
110
  end
88
111
  end
112
+
113
+ # Report count of blocks allocated on disk
114
+ #
115
+ # This reports the amount of blocks which are allocated by the path.
116
+ #
117
+ # @return [Integer]
118
+ # The count of blocks on disk
119
+ def blocks
120
+ File::Stat.new(to_s).blocks
121
+ end
89
122
  end
90
123
  end
@@ -94,7 +94,7 @@ module Aruba
94
94
  # Get access to hooks
95
95
  def hooks
96
96
  # rubocop:disable Metrics/LineLength
97
- Aruba::Platform.deprecated 'The use of the "#aruba.config.hooks" is deprecated. Please use "#aruba.config.before(:name) {}" to define and "#aruba.config.before(:name, *args)" to run a hook. This method will become private in the next major version.'
97
+ Aruba.platform.deprecated 'The use of the "#aruba.config.hooks" is deprecated. Please use "#aruba.config.before(:name) {}" to define and "#aruba.config.before(:name, *args)" to run a hook. This method will become private in the next major version.'
98
98
  # rubocop:enable Metrics/LineLength
99
99
 
100
100
  @hooks
@@ -102,7 +102,7 @@ module Aruba
102
102
 
103
103
  # @deprecated
104
104
  def before_cmd(&block)
105
- Aruba::Platform.deprecated 'The use of the "#before_cmd"-hook is deprecated. Please define with "#before(:command) {}" instead'
105
+ Aruba.platform.deprecated 'The use of the "#before_cmd"-hook is deprecated. Please define with "#before(:command) {}" instead'
106
106
 
107
107
  before(:command, &block)
108
108
  end
@@ -0,0 +1,11 @@
1
+ require 'thor'
2
+ require 'aruba/console'
3
+
4
+ module Aruba
5
+ class Cli < Thor
6
+ desc 'console', "Start aruba's console"
7
+ def console
8
+ Aruba::Console.new.start
9
+ end
10
+ end
11
+ end
@@ -4,10 +4,12 @@ require 'aruba/version'
4
4
  require 'aruba/basic_configuration'
5
5
  require 'aruba/config_wrapper'
6
6
  require 'aruba/hooks'
7
+
7
8
  require 'aruba/contracts/relative_path'
8
9
  require 'aruba/contracts/absolute_path'
9
10
  require 'aruba/contracts/enum'
10
- require 'aruba/contracts/is_a'
11
+
12
+ require 'aruba/contracts/is_power_of_two'
11
13
 
12
14
  module Aruba
13
15
  # Aruba Configuration
@@ -29,15 +31,16 @@ module Aruba
29
31
  option_accessor :exit_timeout, :contract => { Num => Num }, :default => 15
30
32
  option_accessor :io_wait_timeout, :contract => { Num => Num }, :default => 0.1
31
33
  option_accessor :fixtures_directories, :contract => { Array => ArrayOf[String] }, :default => %w(features/fixtures spec/fixtures test/fixtures)
32
- option_accessor :command_runtime_environment, :contract => { Hash => Hash }, :default => ENV.to_hash
34
+ option_accessor :command_runtime_environment, :contract => { Hash => Hash }, :default => ENV.to_hash.dup
33
35
  # rubocop:disable Metrics/LineLength
34
36
  option_accessor(:command_search_paths, :contract => { ArrayOf[String] => ArrayOf[String] }) { |config| [File.join(config.root_directory.value, 'bin')] }
35
37
  # rubocop:enable Metrics/LineLength
36
38
  option_accessor :keep_ansi, :contract => { Bool => Bool }, :default => false
39
+ option_accessor :remove_ansi_escape_sequences, :contract => { Bool => Bool }, :default => true
37
40
  # rubocop:disable Metrics/LineLength
38
41
  option_accessor :command_launcher, :contract => { Aruba::Contracts::Enum[:in_process, :spawn, :debug] => Aruba::Contracts::Enum[:in_process, :spawn, :debug] }, :default => :spawn
39
42
  # rubocop:enable Metrics/LineLength
40
- option_accessor :main_class, :contract => { Aruba::Contracts::IsA[Class] => Or[Aruba::Contracts::IsA[Class], Eq[nil]] }, :default => nil
43
+ option_accessor :main_class, :contract => { Class => Maybe[Class] }, :default => nil
41
44
  # rubocop:disable Metrics/LineLength
42
45
 
43
46
  # rubocop:disable Metrics/LineLength
@@ -49,6 +52,13 @@ module Aruba
49
52
  option_accessor :home_directory, :contract => { Or[Aruba::Contracts::AbsolutePath, Aruba::Contracts::RelativePath] => Or[Aruba::Contracts::AbsolutePath, Aruba::Contracts::RelativePath] }, :default => ENV['HOME']
50
53
  end
51
54
  # rubocop:enable Metrics/LineLength
55
+
56
+ # rubocop:disable Metrics/LineLength
57
+ option_accessor :log_level, :contract => { Aruba::Contracts::Enum[:fatal, :warn, :debug, :info, :error, :unknown, :silent] => Aruba::Contracts::Enum[:fatal, :warn, :debug, :info, :error, :unknown, :silent] }, :default => :info
58
+ # rubocop:enable Metrics/LineLength
59
+
60
+ option_accessor :physical_block_size, :contract => { Aruba::Contracts::IsPowerOfTwo => Aruba::Contracts::IsPowerOfTwo }, :default => 512
61
+ option_accessor :console_history_file, :contract => { String => String }, :default => '~/.aruba_history'
52
62
  end
53
63
  end
54
64
 
@@ -6,9 +6,12 @@ Aruba.configure do |config|
6
6
  next unless RUBY_PLATFORM == 'java'
7
7
 
8
8
  # disable JIT since these processes are so short lived
9
- ENV['JRUBY_OPTS'] = "-X-C #{ENV['JRUBY_OPTS']}"
9
+ ENV['JRUBY_OPTS'] = "-X-C #{ENV['JRUBY_OPTS']}" unless ENV['JRUBY_OPTS'].include? '-X-C'
10
+
11
+ # Faster startup for jruby
12
+ ENV['JRUBY_OPTS'] = "--dev #{ENV['JRUBY_OPTS']}" unless ENV['JRUBY_OPTS'].include? '--dev'
10
13
 
11
14
  # force jRuby to use client JVM for faster startup times
12
- ENV['JAVA_OPTS'] = "-d32 #{ENV['JAVA_OPTS']}" if RbConfig::CONFIG['host_os'] =~ /solaris|sunos/i
15
+ ENV['JAVA_OPTS'] = "-d32 #{ENV['JAVA_OPTS']}" if RbConfig::CONFIG['host_os'] =~ /solaris|sunos/i && !ENV['JAVA_OPTS'].include?('-d32')
13
16
  end
14
17
  end
@@ -0,0 +1,66 @@
1
+ require 'irb'
2
+
3
+ require 'aruba/api'
4
+ require 'aruba/console/help'
5
+
6
+ module Aruba
7
+ class Console
8
+ # rubocop:disable Metrics/MethodLength
9
+ def start
10
+ # Start IRB with current context:
11
+ # http://stackoverflow.com/questions/4189818/how-to-run-irb-start-in-context-of-current-class
12
+ ARGV.clear
13
+ IRB.setup nil
14
+
15
+ IRB.conf[:PROMPT] = {}
16
+ IRB.conf[:IRB_NAME] = 'aruba'
17
+ IRB.conf[:PROMPT][:ARUBA] = {
18
+ :PROMPT_I => '%N:%03n:%i> ',
19
+ :PROMPT_N => '%N:%03n:%i> ',
20
+ :PROMPT_S => '%N:%03n:%i%l ',
21
+ :PROMPT_C => '%N:%03n:%i* ',
22
+ :RETURN => "# => %s\n"
23
+ }
24
+ IRB.conf[:PROMPT_MODE] = :ARUBA
25
+
26
+ IRB.conf[:RC] = false
27
+
28
+ require 'irb/completion'
29
+ require 'irb/ext/save-history'
30
+ IRB.conf[:READLINE] = true
31
+ IRB.conf[:SAVE_HISTORY] = 1000
32
+ IRB.conf[:HISTORY_FILE] = Aruba.config.console_history_file
33
+
34
+ # rubocop:disable Lint/NestedMethodDefinition
35
+ context = Class.new do
36
+ include Aruba::Api
37
+ include Aruba::Console::Help
38
+
39
+ def initialize
40
+ setup_aruba
41
+ end
42
+
43
+ def inspect
44
+ 'nil'
45
+ end
46
+ end
47
+ # rubocop:enable Lint/NestedMethodDefinition
48
+
49
+ irb = IRB::Irb.new(IRB::WorkSpace.new(context.new))
50
+ IRB.conf[:MAIN_CONTEXT] = irb.context
51
+
52
+ trap("SIGINT") do
53
+ IRB.irb.signal_handle
54
+ end
55
+
56
+ begin
57
+ catch(:IRB_EXIT) do
58
+ irb.eval_input
59
+ end
60
+ ensure
61
+ IRB.irb_at_exit
62
+ end
63
+ end
64
+ # rubocop:enable Metrics/MethodLength
65
+ end
66
+ end
@@ -0,0 +1,33 @@
1
+ require 'aruba/api'
2
+
3
+ module Aruba
4
+ class Console
5
+ # Helpers for Aruba::Console
6
+ module Help
7
+ # Output help information
8
+ def aruba_help
9
+ puts 'Aruba Version: ' + Aruba::VERSION
10
+ puts 'Issue Tracker: ' + 'https://github.com/cucumber/aruba/issues'
11
+ puts "Documentation:\n" + %w(http://www.rubydoc.info/gems/aruba).map { |d| format('* %s', d) }.join("\n")
12
+ puts
13
+
14
+ nil
15
+ end
16
+
17
+ # List available methods in aruba
18
+ def aruba_methods
19
+ ms = if RUBY_VERSION < '1.9'
20
+ # rubocop:disable Style/EachWithObject
21
+ (Aruba::Api.instance_methods - Module.instance_methods).inject([]) { |a, e| a << format("* %s", e); a }.sort
22
+ # rubocop:enable Style/EachWithObject
23
+ else
24
+ (Aruba::Api.instance_methods - Module.instance_methods).each_with_object([]) { |e, a| a << format("* %s", e) }.sort
25
+ end
26
+
27
+ puts "Available Methods:\n" + ms.join("\n")
28
+
29
+ nil
30
+ end
31
+ end
32
+ end
33
+ end