aruba 1.0.0.pre.alpha.2 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/PULL_REQUEST_TEMPLATE.md +2 -1
- data/.rspec +0 -1
- data/.rubocop.yml +46 -182
- data/.rubocop_todo.yml +216 -0
- data/.simplecov +7 -5
- data/.travis.yml +56 -40
- data/.yardopts +3 -0
- data/CHANGELOG.md +1312 -0
- data/CONTRIBUTING.md +175 -83
- data/Gemfile +5 -69
- data/LICENSE +1 -1
- data/README.md +58 -21
- data/Rakefile +27 -54
- data/appveyor.yml +7 -10
- data/aruba.gemspec +38 -19
- data/bin/console +3 -12
- data/cucumber.yml +4 -22
- data/exe/aruba +1 -1
- data/fixtures/cli-app/README.md +1 -1
- data/fixtures/cli-app/Rakefile +1 -1
- data/fixtures/cli-app/bin/aruba-test-cli +1 -1
- data/fixtures/cli-app/cli-app.gemspec +4 -4
- data/fixtures/cli-app/lib/cli/app.rb +1 -1
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +3 -3
- data/fixtures/cli-app/lib/cli/app/version.rb +1 -1
- data/fixtures/cli-app/spec/spec_helper.rb +3 -2
- data/fixtures/empty-app/Rakefile +1 -1
- data/fixtures/empty-app/cli-app.gemspec +4 -4
- data/fixtures/empty-app/lib/cli/app.rb +0 -2
- data/fixtures/empty-app/lib/cli/app/version.rb +1 -1
- data/fixtures/getting-started-app/Gemfile +1 -1
- data/lib/aruba/api.rb +8 -15
- data/lib/aruba/api/bundler.rb +16 -0
- data/lib/aruba/api/commands.rb +272 -0
- data/lib/aruba/api/core.rb +82 -43
- data/lib/aruba/api/environment.rb +24 -7
- data/lib/aruba/api/filesystem.rb +66 -64
- data/lib/aruba/api/text.rb +17 -11
- data/lib/aruba/aruba_path.rb +25 -111
- data/lib/aruba/basic_configuration.rb +8 -25
- data/lib/aruba/basic_configuration/option.rb +2 -2
- data/lib/aruba/cli.rb +4 -1
- data/lib/aruba/colorizer.rb +10 -99
- data/lib/aruba/command.rb +4 -0
- data/lib/aruba/config/jruby.rb +15 -5
- data/lib/aruba/config_wrapper.rb +17 -2
- data/lib/aruba/configuration.rb +107 -0
- data/lib/aruba/console.rb +5 -7
- data/lib/aruba/console/help.rb +5 -2
- data/lib/aruba/contracts/absolute_path.rb +3 -3
- data/lib/aruba/contracts/is_power_of_two.rb +2 -2
- data/lib/aruba/contracts/relative_path.rb +3 -3
- data/lib/aruba/cucumber.rb +0 -3
- data/lib/aruba/cucumber/command.rb +227 -190
- data/lib/aruba/cucumber/environment.rb +1 -1
- data/lib/aruba/cucumber/file.rb +56 -50
- data/lib/aruba/cucumber/hooks.rb +10 -63
- data/lib/aruba/cucumber/testing_frameworks.rb +76 -50
- data/lib/aruba/event_bus.rb +4 -2
- data/lib/aruba/event_bus/name_resolver.rb +10 -10
- data/lib/aruba/events.rb +2 -1
- data/lib/aruba/hooks.rb +3 -5
- data/lib/aruba/in_config_wrapper.rb +10 -3
- data/lib/aruba/initializer.rb +40 -34
- data/lib/aruba/matchers/base/base_matcher.rb +2 -11
- data/lib/aruba/matchers/base/message_indenter.rb +19 -0
- data/lib/aruba/matchers/base/object_formatter.rb +2 -7
- data/lib/aruba/matchers/collection/include_an_object.rb +11 -13
- data/lib/aruba/matchers/command/be_successfully_executed.rb +8 -4
- data/lib/aruba/matchers/command/have_exit_status.rb +16 -4
- data/lib/aruba/matchers/command/have_finished_in_time.rb +5 -5
- data/lib/aruba/matchers/command/have_output.rb +12 -5
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +4 -2
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +4 -2
- data/lib/aruba/matchers/command/have_output_size.rb +2 -2
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +5 -7
- data/lib/aruba/matchers/directory/have_sub_directory.rb +10 -7
- data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +2 -4
- data/lib/aruba/matchers/file/be_an_existing_executable.rb +4 -6
- data/lib/aruba/matchers/file/be_an_existing_file.rb +5 -7
- data/lib/aruba/matchers/file/have_file_content.rb +4 -4
- data/lib/aruba/matchers/file/have_file_size.rb +8 -8
- data/lib/aruba/matchers/file/have_same_file_content.rb +9 -12
- data/lib/aruba/matchers/path/a_path_matching_pattern.rb +2 -4
- data/lib/aruba/matchers/path/be_an_absolute_path.rb +3 -5
- data/lib/aruba/matchers/path/be_an_existing_path.rb +4 -6
- data/lib/aruba/matchers/path/have_permissions.rb +8 -8
- data/lib/aruba/matchers/string/include_output_string.rb +8 -10
- data/lib/aruba/matchers/string/match_output_string.rb +9 -11
- data/lib/aruba/matchers/string/output_string_eq.rb +7 -9
- data/lib/aruba/platform.rb +0 -8
- data/lib/aruba/platforms/announcer.rb +60 -85
- data/lib/aruba/platforms/aruba_file_creator.rb +4 -2
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +8 -3
- data/lib/aruba/platforms/aruba_logger.rb +22 -2
- data/lib/aruba/platforms/command_monitor.rb +15 -102
- data/lib/aruba/platforms/determine_disk_usage.rb +56 -19
- data/lib/aruba/platforms/filesystem_status.rb +9 -9
- data/lib/aruba/platforms/local_environment.rb +2 -2
- data/lib/aruba/platforms/simple_table.rb +3 -11
- data/lib/aruba/platforms/unix_command_string.rb +7 -4
- data/lib/aruba/platforms/unix_environment_variables.rb +19 -26
- data/lib/aruba/platforms/unix_platform.rb +18 -39
- data/lib/aruba/platforms/unix_which.rb +3 -2
- data/lib/aruba/platforms/windows_command_string.rb +20 -7
- data/lib/aruba/platforms/windows_environment_variables.rb +42 -30
- data/lib/aruba/platforms/windows_platform.rb +4 -0
- data/lib/aruba/platforms/windows_which.rb +9 -4
- data/lib/aruba/processes/basic_process.rb +21 -27
- data/lib/aruba/processes/debug_process.rb +16 -5
- data/lib/aruba/processes/in_process.rb +20 -9
- data/lib/aruba/processes/spawn_process.rb +64 -36
- data/lib/aruba/rspec.rb +28 -31
- data/lib/aruba/runtime.rb +16 -7
- data/lib/aruba/setup.rb +32 -17
- data/lib/aruba/tasks/docker_helpers.rb +4 -2
- data/lib/aruba/version.rb +1 -1
- metadata +194 -64
- data/History.md +0 -612
- data/bin/bootstrap +0 -34
- data/bin/build +0 -3
- data/bin/release +0 -3
- data/fixtures/spawn_process/stderr.sh +0 -3
- data/lib/aruba/api/command.rb +0 -309
- data/lib/aruba/api/deprecated.rb +0 -895
- data/lib/aruba/api/rvm.rb +0 -44
- data/lib/aruba/config.rb +0 -101
- data/lib/aruba/cucumber/rvm.rb +0 -3
- data/lib/aruba/in_process.rb +0 -14
- data/lib/aruba/jruby.rb +0 -4
- data/lib/aruba/matchers/path/match_path_pattern.rb +0 -41
- data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +0 -25
- data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
- data/lib/aruba/spawn_process.rb +0 -11
@@ -32,8 +32,8 @@ module Aruba
|
|
32
32
|
contract = opts[:contract]
|
33
33
|
default = opts[:default]
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
raise ArgumentError, 'Either use block or default value' if block_given? && default
|
36
|
+
raise ArgumentError, 'contract-options is required' if contract.nil?
|
37
37
|
|
38
38
|
Contract contract
|
39
39
|
add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)
|
@@ -61,9 +61,8 @@ module Aruba
|
|
61
61
|
contract = opts[:contract]
|
62
62
|
default = opts[:default]
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
fail ArgumentError, 'contract-options is required' if contract.nil?
|
64
|
+
raise ArgumentError, 'Either use block or default value' if block_given? && default
|
65
|
+
raise ArgumentError, 'contract-options is required' if contract.nil?
|
67
66
|
|
68
67
|
# Add writer
|
69
68
|
add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)
|
@@ -72,7 +71,7 @@ module Aruba
|
|
72
71
|
define_method("#{name}=") { |v| find_option(name).value = v }
|
73
72
|
|
74
73
|
# Add reader
|
75
|
-
option_reader name, :
|
74
|
+
option_reader name, contract: { None => contract.values.first }
|
76
75
|
end
|
77
76
|
|
78
77
|
private
|
@@ -80,7 +79,7 @@ module Aruba
|
|
80
79
|
def add_option(name, value = nil)
|
81
80
|
return if known_options.key?(name)
|
82
81
|
|
83
|
-
known_options[name] = Option.new(:
|
82
|
+
known_options[name] = Option.new(name: name, value: value)
|
84
83
|
|
85
84
|
self
|
86
85
|
end
|
@@ -114,29 +113,13 @@ module Aruba
|
|
114
113
|
|
115
114
|
# Make deep dup copy of configuration
|
116
115
|
def make_copy
|
117
|
-
obj =
|
116
|
+
obj = dup
|
118
117
|
obj.local_options = Marshal.load(Marshal.dump(local_options))
|
119
118
|
obj.hooks = @hooks
|
120
119
|
|
121
120
|
obj
|
122
121
|
end
|
123
122
|
|
124
|
-
# Get access to hooks
|
125
|
-
def hooks
|
126
|
-
# rubocop:disable Metrics/LineLength
|
127
|
-
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.'
|
128
|
-
# rubocop:enable Metrics/LineLength
|
129
|
-
|
130
|
-
@hooks
|
131
|
-
end
|
132
|
-
|
133
|
-
# @deprecated
|
134
|
-
def before_cmd(&block)
|
135
|
-
Aruba.platform.deprecated 'The use of the "#before_cmd"-hook is deprecated. Please define with "#before(:command) {}" instead'
|
136
|
-
|
137
|
-
before(:command, &block)
|
138
|
-
end
|
139
|
-
|
140
123
|
# Define or run before-hook
|
141
124
|
#
|
142
125
|
# @param [Symbol, String] name
|
@@ -226,7 +209,7 @@ module Aruba
|
|
226
209
|
end
|
227
210
|
|
228
211
|
def find_option(name)
|
229
|
-
|
212
|
+
raise NotImplementedError, %(Unknown option "#{name}") unless option? name
|
230
213
|
|
231
214
|
local_options[name]
|
232
215
|
end
|
@@ -15,8 +15,8 @@ module Aruba
|
|
15
15
|
name = opts[:name]
|
16
16
|
value = opts[:value]
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
raise ArgumentError, '"name" is required' unless opts.key? :name
|
19
|
+
raise ArgumentError, '"value" is required' unless opts.key? :value
|
20
20
|
|
21
21
|
@name = name
|
22
22
|
@value = value
|
data/lib/aruba/cli.rb
CHANGED
@@ -18,7 +18,10 @@ module Aruba
|
|
18
18
|
end
|
19
19
|
|
20
20
|
desc 'init', 'Initialize aruba'
|
21
|
-
option :test_framework,
|
21
|
+
option :test_framework,
|
22
|
+
default: 'cucumber',
|
23
|
+
enum: %w(cucumber rspec minitest),
|
24
|
+
desc: 'Choose which test framework to use'
|
22
25
|
def init
|
23
26
|
Aruba::Initializer.new.call(options[:test_framework])
|
24
27
|
end
|
data/lib/aruba/colorizer.rb
CHANGED
@@ -1,108 +1,19 @@
|
|
1
|
+
# Aruba
|
1
2
|
module Aruba
|
2
|
-
#
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
ATTRIBUTES = [
|
7
|
-
[ :clear , 0 ],
|
8
|
-
[ :reset , 0 ], # synonym for :clear
|
9
|
-
[ :bold , 1 ],
|
10
|
-
[ :dark , 2 ],
|
11
|
-
[ :italic , 3 ], # not widely implemented
|
12
|
-
[ :underline , 4 ],
|
13
|
-
[ :underscore , 4 ], # synonym for :underline
|
14
|
-
[ :blink , 5 ],
|
15
|
-
[ :rapid_blink , 6 ], # not widely implemented
|
16
|
-
[ :negative , 7 ], # no reverse because of String#reverse
|
17
|
-
[ :concealed , 8 ],
|
18
|
-
[ :strikethrough, 9 ], # not widely implemented
|
19
|
-
[ :black , 30 ],
|
20
|
-
[ :red , 31 ],
|
21
|
-
[ :green , 32 ],
|
22
|
-
[ :yellow , 33 ],
|
23
|
-
[ :blue , 34 ],
|
24
|
-
[ :magenta , 35 ],
|
25
|
-
[ :cyan , 36 ],
|
26
|
-
[ :white , 37 ],
|
27
|
-
[ :on_black , 40 ],
|
28
|
-
[ :on_red , 41 ],
|
29
|
-
[ :on_green , 42 ],
|
30
|
-
[ :on_yellow , 43 ],
|
31
|
-
[ :on_blue , 44 ],
|
32
|
-
[ :on_magenta , 45 ],
|
33
|
-
[ :on_cyan , 46 ],
|
34
|
-
[ :on_white , 47 ]
|
35
|
-
].freeze
|
36
|
-
|
37
|
-
ATTRIBUTE_NAMES = ATTRIBUTES.transpose.first
|
38
|
-
# :startdoc:
|
39
|
-
|
40
|
-
# Returns true, if the coloring function of this module
|
41
|
-
# is switched on, false otherwise.
|
42
|
-
def self.coloring?
|
43
|
-
@coloring
|
44
|
-
end
|
45
|
-
|
46
|
-
# Turns the coloring on or off globally, so you can easily do
|
47
|
-
# this for example:
|
48
|
-
# Cucumber::Term::ANSIColor::coloring = STDOUT.isatty
|
49
|
-
def self.coloring=(val)
|
50
|
-
@coloring = val
|
51
|
-
end
|
52
|
-
self.coloring = true
|
53
|
-
|
54
|
-
ATTRIBUTES.each do |c, v|
|
55
|
-
define_method(c) do |string|
|
56
|
-
result = ''
|
57
|
-
result << "\e[#{v}m" if Aruba::AnsiColor.coloring?
|
58
|
-
if block_given?
|
59
|
-
result << yield
|
60
|
-
elsif string
|
61
|
-
result << string
|
62
|
-
elsif respond_to?(:to_str)
|
63
|
-
result << to_str
|
64
|
-
else
|
65
|
-
return result #only switch on
|
66
|
-
end
|
67
|
-
result << "\e[0m" if Aruba::AnsiColor.coloring?
|
68
|
-
result
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
# Regular expression that is used to scan for ANSI-sequences while
|
73
|
-
# uncoloring strings.
|
74
|
-
COLORED_REGEXP = /\e\[(?:[34][0-7]|[0-9])?m/
|
3
|
+
# Simple colorizer class. Only supports the color cyan
|
4
|
+
class Colorizer
|
5
|
+
class << self
|
6
|
+
attr_accessor :coloring
|
75
7
|
|
76
|
-
|
77
|
-
if klass == String
|
78
|
-
ATTRIBUTES.delete(:clear)
|
79
|
-
ATTRIBUTE_NAMES.delete(:clear)
|
80
|
-
end
|
8
|
+
alias coloring? coloring
|
81
9
|
end
|
82
10
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
if block_given?
|
87
|
-
yield.gsub(COLORED_REGEXP, '')
|
88
|
-
elsif string
|
89
|
-
string.gsub(COLORED_REGEXP, '')
|
90
|
-
elsif respond_to?(:to_str)
|
91
|
-
to_str.gsub(COLORED_REGEXP, '')
|
11
|
+
def cyan(string)
|
12
|
+
if self.class.coloring?
|
13
|
+
"\e[36m#{string}\e[0m"
|
92
14
|
else
|
93
|
-
|
15
|
+
string
|
94
16
|
end
|
95
17
|
end
|
96
|
-
|
97
|
-
# Returns an array of all Aruba::Platforms::AnsiColor attributes as symbols.
|
98
|
-
def attributes
|
99
|
-
ATTRIBUTE_NAMES
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
module Aruba
|
105
|
-
class Colorizer
|
106
|
-
include Aruba::AnsiColor
|
107
18
|
end
|
108
19
|
end
|
data/lib/aruba/command.rb
CHANGED
@@ -48,6 +48,8 @@ module Aruba
|
|
48
48
|
|
49
49
|
# Stop command
|
50
50
|
def stop(*)
|
51
|
+
return if __getobj__.stopped?
|
52
|
+
|
51
53
|
__getobj__.stop
|
52
54
|
event_bus.notify Events::CommandStopped.new(self)
|
53
55
|
|
@@ -56,6 +58,8 @@ module Aruba
|
|
56
58
|
|
57
59
|
# Terminate command
|
58
60
|
def terminate(*)
|
61
|
+
return if __getobj__.stopped?
|
62
|
+
|
59
63
|
__getobj__.terminate
|
60
64
|
event_bus.notify Events::CommandStopped.new(self)
|
61
65
|
|
data/lib/aruba/config/jruby.rb
CHANGED
@@ -2,16 +2,26 @@ require 'rbconfig'
|
|
2
2
|
|
3
3
|
# ideas taken from: http://blog.headius.com/2010/03/jruby-startup-time-tips.html
|
4
4
|
Aruba.configure do |config|
|
5
|
-
config.before :command do
|
5
|
+
config.before :command do |command|
|
6
6
|
next unless RUBY_PLATFORM == 'java'
|
7
7
|
|
8
|
+
env = command.environment
|
9
|
+
|
10
|
+
jruby_opts = env['JRUBY_OPTS'] || ''
|
11
|
+
|
8
12
|
# disable JIT since these processes are so short lived
|
9
|
-
|
13
|
+
jruby_opts = "-X-C #{jruby_opts}" unless jruby_opts.include? '-X-C'
|
10
14
|
|
11
15
|
# Faster startup for jruby
|
12
|
-
|
16
|
+
jruby_opts = "--dev #{jruby_opts}" unless jruby_opts.include? '--dev'
|
17
|
+
|
18
|
+
env['JRUBY_OPTS'] = jruby_opts
|
19
|
+
|
20
|
+
if /solaris|sunos/i.match?(RbConfig::CONFIG['host_os'])
|
21
|
+
java_opts = env['JAVA_OPTS'] || ''
|
13
22
|
|
14
|
-
|
15
|
-
|
23
|
+
# force jRuby to use client JVM for faster startup times
|
24
|
+
env['JAVA_OPTS'] = "-d32 #{java_opts}" unless java_opts.include?('-d32')
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
data/lib/aruba/config_wrapper.rb
CHANGED
@@ -30,9 +30,11 @@ module Aruba
|
|
30
30
|
# If one method ends with "=", e.g. ":option1=", then notify the event
|
31
31
|
# queue, that the user changes the value of "option1"
|
32
32
|
def method_missing(name, *args, &block)
|
33
|
-
|
33
|
+
notify(name, args) if name.to_s.end_with?('=')
|
34
34
|
|
35
|
-
config.send(name, *args, &block)
|
35
|
+
return config.send(name, *args, &block) if config.respond_to? name
|
36
|
+
|
37
|
+
super
|
36
38
|
end
|
37
39
|
|
38
40
|
# Pass on respond_to?-calls
|
@@ -54,5 +56,18 @@ module Aruba
|
|
54
56
|
def respond_to?(m)
|
55
57
|
config.respond_to? m
|
56
58
|
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def notify(name, args)
|
63
|
+
event_bus.notify(
|
64
|
+
Events::ChangedConfiguration.new(
|
65
|
+
changed: {
|
66
|
+
name: name.to_s.gsub(/=$/, ''),
|
67
|
+
value: args.first
|
68
|
+
}
|
69
|
+
)
|
70
|
+
)
|
71
|
+
end
|
57
72
|
end
|
58
73
|
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'contracts'
|
2
|
+
|
3
|
+
require 'aruba/version'
|
4
|
+
require 'aruba/basic_configuration'
|
5
|
+
require 'aruba/in_config_wrapper'
|
6
|
+
require 'aruba/hooks'
|
7
|
+
|
8
|
+
require 'aruba/contracts/relative_path'
|
9
|
+
require 'aruba/contracts/absolute_path'
|
10
|
+
require 'aruba/contracts/enum'
|
11
|
+
|
12
|
+
require 'aruba/contracts/is_power_of_two'
|
13
|
+
|
14
|
+
# Aruba
|
15
|
+
module Aruba
|
16
|
+
# Aruba Configuration
|
17
|
+
#
|
18
|
+
# This defines the configuration options of aruba
|
19
|
+
class Configuration < BasicConfiguration
|
20
|
+
option_reader :root_directory, contract: { None => String }, default: Dir.getwd
|
21
|
+
|
22
|
+
option_accessor :working_directory,
|
23
|
+
contract: { Aruba::Contracts::RelativePath =>
|
24
|
+
Aruba::Contracts::RelativePath },
|
25
|
+
default: 'tmp/aruba'
|
26
|
+
|
27
|
+
option_reader :fixtures_path_prefix, contract: { None => String }, default: '%'
|
28
|
+
|
29
|
+
option_accessor :exit_timeout, contract: { Num => Num }, default: 15
|
30
|
+
option_accessor :stop_signal, contract: { Maybe[String] => Maybe[String] }, default: nil
|
31
|
+
option_accessor :io_wait_timeout, contract: { Num => Num }, default: 0.1
|
32
|
+
option_accessor :startup_wait_time, contract: { Num => Num }, default: 0
|
33
|
+
option_accessor :fixtures_directories,
|
34
|
+
contract: { Array => ArrayOf[String] },
|
35
|
+
default: %w(features/fixtures spec/fixtures test/fixtures fixtures)
|
36
|
+
|
37
|
+
option_accessor :command_runtime_environment, contract: { Hash => Hash }, default: {}
|
38
|
+
option_accessor :command_search_paths,
|
39
|
+
contract: { ArrayOf[String] => ArrayOf[String] } do |config|
|
40
|
+
[File.join(config.root_directory.value, 'bin'),
|
41
|
+
File.join(config.root_directory.value, 'exe')]
|
42
|
+
end
|
43
|
+
option_accessor :remove_ansi_escape_sequences, contract: { Bool => Bool }, default: true
|
44
|
+
option_accessor :command_launcher,
|
45
|
+
contract: {
|
46
|
+
Aruba::Contracts::Enum[:in_process, :spawn, :debug] =>
|
47
|
+
Aruba::Contracts::Enum[:in_process, :spawn, :debug]
|
48
|
+
},
|
49
|
+
default: :spawn
|
50
|
+
option_accessor :main_class, contract: { Class => Maybe[Class] }, default: nil
|
51
|
+
|
52
|
+
option_accessor :home_directory,
|
53
|
+
contract: {
|
54
|
+
Or[Aruba::Contracts::AbsolutePath, Aruba::Contracts::RelativePath] =>
|
55
|
+
Or[Aruba::Contracts::AbsolutePath, Aruba::Contracts::RelativePath]
|
56
|
+
} do |config|
|
57
|
+
File.join(config.root_directory.value, config.working_directory.value)
|
58
|
+
end
|
59
|
+
|
60
|
+
option_accessor :log_level,
|
61
|
+
contract: {
|
62
|
+
Aruba::Contracts::Enum[:fatal, :warn, :debug, :info,
|
63
|
+
:error, :unknown, :silent] =>
|
64
|
+
Aruba::Contracts::Enum[:fatal, :warn, :debug, :info,
|
65
|
+
:error, :unknown, :silent]
|
66
|
+
},
|
67
|
+
default: :info
|
68
|
+
|
69
|
+
# TODO: deprecate this value and replace with "filesystem allocation unit"
|
70
|
+
# equal to 4096 by default. "filesystem allocation unit" would represent
|
71
|
+
# the actual MINIMUM space taken in bytes by a 1-byte file
|
72
|
+
option_accessor :physical_block_size,
|
73
|
+
contract: { Aruba::Contracts::IsPowerOfTwo =>
|
74
|
+
Aruba::Contracts::IsPowerOfTwo },
|
75
|
+
default: 512
|
76
|
+
option_accessor :console_history_file, contract: { String => String },
|
77
|
+
default: '~/.aruba_history'
|
78
|
+
|
79
|
+
option_accessor :activate_announcer_on_command_failure,
|
80
|
+
contract: { ArrayOf[Symbol] => ArrayOf[Symbol] },
|
81
|
+
default: []
|
82
|
+
option_accessor :allow_absolute_paths, contract: { Bool => Bool }, default: false
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# Aruba
|
87
|
+
module Aruba
|
88
|
+
@config = Configuration.new
|
89
|
+
|
90
|
+
class << self
|
91
|
+
attr_reader :config
|
92
|
+
|
93
|
+
# Configure aruba
|
94
|
+
#
|
95
|
+
# @example How to configure aruba
|
96
|
+
#
|
97
|
+
# Aruba.configure do |config|
|
98
|
+
# config.<option> = <value>
|
99
|
+
# end
|
100
|
+
#
|
101
|
+
def configure(&block)
|
102
|
+
@config.configure(&block)
|
103
|
+
|
104
|
+
self
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
data/lib/aruba/console.rb
CHANGED
@@ -9,7 +9,6 @@ module Aruba
|
|
9
9
|
class Console
|
10
10
|
# Start the aruba console
|
11
11
|
#
|
12
|
-
# rubocop:disable Metrics/MethodLength
|
13
12
|
def start
|
14
13
|
# Start IRB with current context:
|
15
14
|
# http://stackoverflow.com/questions/4189818/how-to-run-irb-start-in-context-of-current-class
|
@@ -20,10 +19,10 @@ module Aruba
|
|
20
19
|
|
21
20
|
IRB.conf[:PROMPT] = {}
|
22
21
|
IRB.conf[:PROMPT][:ARUBA] = {
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
22
|
+
PROMPT_I: '%N:%03n:%i> ',
|
23
|
+
PROMPT_S: '%N:%03n:%i%l ',
|
24
|
+
PROMPT_C: '%N:%03n:%i* ',
|
25
|
+
RETURN: "# => %s\n"
|
27
26
|
}
|
28
27
|
IRB.conf[:PROMPT_MODE] = :ARUBA
|
29
28
|
|
@@ -51,7 +50,7 @@ module Aruba
|
|
51
50
|
irb = IRB::Irb.new(IRB::WorkSpace.new(context.new))
|
52
51
|
IRB.conf[:MAIN_CONTEXT] = irb.context
|
53
52
|
|
54
|
-
trap(
|
53
|
+
trap('SIGINT') do
|
55
54
|
irb.signal_handle
|
56
55
|
end
|
57
56
|
|
@@ -63,6 +62,5 @@ module Aruba
|
|
63
62
|
IRB.irb_at_exit
|
64
63
|
end
|
65
64
|
end
|
66
|
-
# rubocop:enable Metrics/MethodLength
|
67
65
|
end
|
68
66
|
end
|