aruba 2.4.0 → 3.0.0

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +97 -7
  3. data/CONTRIBUTING.md +55 -33
  4. data/README.md +11 -9
  5. data/lib/aruba/api/bundler.rb +1 -5
  6. data/lib/aruba/api/commands.rb +29 -40
  7. data/lib/aruba/api/core.rb +2 -13
  8. data/lib/aruba/api/filesystem.rb +24 -44
  9. data/lib/aruba/api/text.rb +5 -2
  10. data/lib/aruba/aruba_logger.rb +3 -6
  11. data/lib/aruba/basic_configuration/option.rb +1 -7
  12. data/lib/aruba/basic_configuration.rb +7 -13
  13. data/lib/aruba/cli.rb +0 -6
  14. data/lib/aruba/command.rb +16 -16
  15. data/lib/aruba/command_monitor.rb +2 -4
  16. data/lib/aruba/configuration.rb +32 -20
  17. data/lib/aruba/cucumber/command.rb +32 -119
  18. data/lib/aruba/cucumber/environment.rb +0 -4
  19. data/lib/aruba/cucumber/file.rb +10 -10
  20. data/lib/aruba/cucumber/hooks.rb +12 -15
  21. data/lib/aruba/cucumber.rb +0 -1
  22. data/lib/aruba/events.rb +50 -14
  23. data/lib/aruba/generators/script_file.rb +5 -5
  24. data/lib/aruba/initializer.rb +7 -2
  25. data/lib/aruba/matchers/base/message_indenter.rb +0 -1
  26. data/lib/aruba/matchers/command/have_output.rb +1 -1
  27. data/lib/aruba/matchers/command/have_output_on_stderr.rb +1 -1
  28. data/lib/aruba/matchers/command/have_output_on_stdout.rb +1 -1
  29. data/lib/aruba/matchers/command/have_output_size.rb +7 -20
  30. data/lib/aruba/matchers/string/match_output_string.rb +0 -2
  31. data/lib/aruba/platforms/unix_platform.rb +3 -3
  32. data/lib/aruba/platforms/unix_which.rb +2 -4
  33. data/lib/aruba/platforms/windows_which.rb +2 -4
  34. data/lib/aruba/processes/basic_process.rb +4 -4
  35. data/lib/aruba/processes/debug_process.rb +2 -1
  36. data/lib/aruba/processes/in_process.rb +3 -1
  37. data/lib/aruba/processes/spawn_process.rb +32 -21
  38. data/lib/aruba/rspec.rb +18 -25
  39. data/lib/aruba/runtime.rb +39 -21
  40. data/lib/aruba/setup.rb +20 -21
  41. data/lib/aruba/version.rb +1 -1
  42. metadata +79 -69
  43. data/lib/aruba/console/help.rb +0 -34
  44. data/lib/aruba/console.rb +0 -67
  45. data/lib/aruba/contracts/absolute_path.rb +0 -22
  46. data/lib/aruba/contracts/enum.rb +0 -29
  47. data/lib/aruba/contracts/is_power_of_two.rb +0 -24
  48. data/lib/aruba/contracts/relative_path.rb +0 -22
  49. data/lib/aruba/cucumber/testing_frameworks.rb +0 -219
  50. data/lib/aruba/matchers/string/include_output_string.rb +0 -36
  51. data/lib/aruba/matchers/string/output_string_eq.rb +0 -35
data/lib/aruba/runtime.rb CHANGED
@@ -17,9 +17,15 @@ module Aruba
17
17
  # @!attribute [r] current_directory
18
18
  # Returns the current working directory
19
19
  #
20
+ # @!attribute [r] working_directory
21
+ # Returns the working directory
22
+ #
20
23
  # @!attribute [r] root_directory
21
24
  # Returns the root directory of aruba
22
- attr_reader :current_directory, :root_directory
25
+ #
26
+ # @!attribute [r] home_directory
27
+ # Returns the home directory used to mock HOME by aruba
28
+ attr_reader :current_directory, :working_directory, :root_directory, :home_directory
23
29
 
24
30
  # @!attribute [r] config
25
31
  # Access configuration of aruba
@@ -39,40 +45,46 @@ module Aruba
39
45
  # @!attribute [r] event_bus
40
46
  # Handle events (private)
41
47
  #
42
- attr_accessor :config, :environment, :logger, :command_monitor, :announcer, :event_bus
48
+ attr_reader :config, :environment, :logger, :command_monitor, :announcer, :event_bus
43
49
 
44
- def initialize(opts = {})
50
+ def initialize(config: Aruba.config)
45
51
  @event_bus = EventBus.new(Aruba::Events.registry)
46
- @announcer = opts.fetch(:announcer, Aruba.platform.announcer.new)
47
- @config = opts.fetch(:config,
48
- ConfigWrapper.new(Aruba.config.make_copy, @event_bus))
49
- @environment = opts.fetch(:environment, Aruba.platform.environment_variables.new)
50
- @current_directory = ArubaPath.new(@config.working_directory)
51
- @root_directory = ArubaPath.new(@config.root_directory)
52
+ @announcer = Aruba.platform.announcer.new
53
+ @config = ConfigWrapper.new(config.make_copy, @event_bus)
54
+ @environment = Aruba.platform.environment_variables.new
55
+
56
+ @root_directory = ArubaPath.new(@config.root_directory)
52
57
 
53
58
  @environment.update(@config.command_runtime_environment)
54
59
 
55
- @command_monitor = opts.fetch(:command_monitor,
56
- Aruba.platform.command_monitor.new(announcer: @announcer))
60
+ @command_monitor = Aruba.platform.command_monitor.new(announcer: @announcer)
57
61
 
58
- @logger = opts.fetch(:logger, Aruba.platform.logger.new)
62
+ @logger = Aruba.platform.logger.new
59
63
  @logger.mode = @config.log_level
60
64
 
65
+ @setup = Aruba::Setup.new(self)
61
66
  @setup_done = false
62
67
  end
63
68
 
64
- # @private
65
- #
66
- # Setup of aruba is finshed. Should be used only internally.
67
- def setup_done
69
+ # Set up Aruba's workspace and event bus. Cleans out the workspace as well.
70
+ def setup
71
+ return if @setup_done
72
+
73
+ @setup.setup
74
+
75
+ @home_directory = @setup.workspace_directory
76
+ @working_directory = Pathname.new(@home_directory)
77
+ .relative_path_from(@config.root_directory).to_s
78
+ @current_directory = ArubaPath.new(@working_directory)
79
+
68
80
  @setup_done = true
69
81
  end
70
82
 
71
- # @private
72
- #
73
- # Has aruba already been setup. Should be used only internally.
74
- def setup_already_done?
75
- @setup_done == true
83
+ def teardown
84
+ return unless @setup_done
85
+
86
+ @setup.teardown
87
+ @setup_done = false
76
88
  end
77
89
 
78
90
  # The path to the directory which contains fixtures
@@ -99,5 +111,11 @@ module Aruba
99
111
 
100
112
  ArubaPath.new(@fixtures_directory)
101
113
  end
114
+
115
+ private
116
+
117
+ def setup_already_done?
118
+ @setup_done == true
119
+ end
102
120
  end
103
121
  end
data/lib/aruba/setup.rb CHANGED
@@ -2,40 +2,39 @@
2
2
 
3
3
  module Aruba
4
4
  class Setup
5
- private
6
-
7
- attr_reader :runtime
8
-
9
- public
10
-
11
5
  def initialize(runtime)
12
6
  @runtime = runtime
13
7
  end
14
8
 
15
- def call(clobber = true)
16
- return if runtime.setup_already_done?
17
-
18
- working_directory(clobber)
9
+ def setup
10
+ create_workspace
19
11
  register_event_handlers
12
+ end
20
13
 
21
- runtime.setup_done
22
-
23
- self
14
+ def teardown
15
+ destroy_workspace
24
16
  end
25
17
 
18
+ attr_reader :workspace_directory
19
+
26
20
  private
27
21
 
28
- def working_directory(clobber = true)
29
- if clobber
30
- Aruba.platform.rm File.join(runtime.config.root_directory,
31
- runtime.config.working_directory),
32
- force: true
33
- end
34
- Aruba.platform.mkdir File.join(runtime.config.root_directory,
35
- runtime.config.working_directory)
22
+ attr_reader :runtime
23
+
24
+ def create_workspace
25
+ workspace_base = File.join(runtime.config.root_directory, 'tmp')
26
+ prefix = "#{runtime.config.working_directory_suffix}-"
27
+
28
+ Aruba.platform.mkdir workspace_base
29
+ @workspace_directory = Dir.mktmpdir(prefix, workspace_base)
30
+
36
31
  Aruba.platform.chdir runtime.config.root_directory
37
32
  end
38
33
 
34
+ def destroy_workspace
35
+ Aruba.platform.rm workspace_directory, force: true
36
+ end
37
+
39
38
  def handle_command_started(event)
40
39
  runtime.announcer.announce(:command) { event.entity.commandline }
41
40
  runtime.announcer.announce(:timeout, 'exit') { event.entity.exit_timeout }
data/lib/aruba/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aruba
4
- VERSION = '2.4.0'
4
+ VERSION = '3.0.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aruba
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy, Matt Wynne and other Aruba Contributors
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2026-05-02 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.17'
18
+ version: 2.20.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '1.17'
25
+ version: 2.20.0
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: contracts
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -45,39 +44,45 @@ dependencies:
45
44
  - !ruby/object:Gem::Version
46
45
  version: 0.18.0
47
46
  - !ruby/object:Gem::Dependency
48
- name: cucumber
47
+ name: cucumber-core
49
48
  requirement: !ruby/object:Gem::Requirement
50
49
  requirements:
51
50
  - - ">="
52
51
  - !ruby/object:Gem::Version
53
- version: '8.0'
52
+ version: '16.0'
54
53
  - - "<"
55
54
  - !ruby/object:Gem::Version
56
- version: '12.0'
55
+ version: '21.0'
57
56
  type: :runtime
58
57
  prerelease: false
59
58
  version_requirements: !ruby/object:Gem::Requirement
60
59
  requirements:
61
60
  - - ">="
62
61
  - !ruby/object:Gem::Version
63
- version: '8.0'
62
+ version: '16.0'
64
63
  - - "<"
65
64
  - !ruby/object:Gem::Version
66
- version: '12.0'
65
+ version: '21.0'
67
66
  - !ruby/object:Gem::Dependency
68
- name: irb
67
+ name: marcel
69
68
  requirement: !ruby/object:Gem::Requirement
70
69
  requirements:
71
- - - "~>"
70
+ - - ">="
72
71
  - !ruby/object:Gem::Version
73
- version: '1.16'
72
+ version: '1.2'
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
74
76
  type: :runtime
75
77
  prerelease: false
76
78
  version_requirements: !ruby/object:Gem::Requirement
77
79
  requirements:
78
- - - "~>"
80
+ - - ">="
79
81
  - !ruby/object:Gem::Version
80
- version: '1.16'
82
+ version: '1.2'
83
+ - - "<"
84
+ - !ruby/object:Gem::Version
85
+ version: '3.0'
81
86
  - !ruby/object:Gem::Dependency
82
87
  name: rspec-expectations
83
88
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +103,20 @@ dependencies:
98
103
  - - "<"
99
104
  - !ruby/object:Gem::Version
100
105
  version: '5.0'
106
+ - !ruby/object:Gem::Dependency
107
+ name: tempfile
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: 0.3.1
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: 0.3.1
101
120
  - !ruby/object:Gem::Dependency
102
121
  name: thor
103
122
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +145,26 @@ dependencies:
126
145
  - - "~>"
127
146
  - !ruby/object:Gem::Version
128
147
  version: '2.4'
148
+ - !ruby/object:Gem::Dependency
149
+ name: cucumber
150
+ requirement: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '11.0'
155
+ - - "<"
156
+ - !ruby/object:Gem::Version
157
+ version: '13.0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '11.0'
165
+ - - "<"
166
+ - !ruby/object:Gem::Version
167
+ version: '13.0'
129
168
  - !ruby/object:Gem::Dependency
130
169
  name: diff-lcs
131
170
  requirement: !ruby/object:Gem::Requirement
@@ -141,19 +180,19 @@ dependencies:
141
180
  - !ruby/object:Gem::Version
142
181
  version: '1.6'
143
182
  - !ruby/object:Gem::Dependency
144
- name: json
183
+ name: irb
145
184
  requirement: !ruby/object:Gem::Requirement
146
185
  requirements:
147
186
  - - "~>"
148
187
  - !ruby/object:Gem::Version
149
- version: '2.1'
188
+ version: '1.16'
150
189
  type: :development
151
190
  prerelease: false
152
191
  version_requirements: !ruby/object:Gem::Requirement
153
192
  requirements:
154
193
  - - "~>"
155
194
  - !ruby/object:Gem::Version
156
- version: '2.1'
195
+ version: '1.16'
157
196
  - !ruby/object:Gem::Dependency
158
197
  name: kramdown
159
198
  requirement: !ruby/object:Gem::Requirement
@@ -172,42 +211,30 @@ dependencies:
172
211
  name: minitest
173
212
  requirement: !ruby/object:Gem::Requirement
174
213
  requirements:
175
- - - ">="
176
- - !ruby/object:Gem::Version
177
- version: '5.26'
178
- - - "<"
214
+ - - "~>"
179
215
  - !ruby/object:Gem::Version
180
- version: '7.0'
216
+ version: '6.0'
181
217
  type: :development
182
218
  prerelease: false
183
219
  version_requirements: !ruby/object:Gem::Requirement
184
220
  requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '5.26'
188
- - - "<"
221
+ - - "~>"
189
222
  - !ruby/object:Gem::Version
190
- version: '7.0'
223
+ version: '6.0'
191
224
  - !ruby/object:Gem::Dependency
192
225
  name: rake
193
226
  requirement: !ruby/object:Gem::Requirement
194
227
  requirements:
195
- - - ">="
196
- - !ruby/object:Gem::Version
197
- version: '12.0'
198
- - - "<"
228
+ - - "~>"
199
229
  - !ruby/object:Gem::Version
200
- version: '14.0'
230
+ version: '13.0'
201
231
  type: :development
202
232
  prerelease: false
203
233
  version_requirements: !ruby/object:Gem::Requirement
204
234
  requirements:
205
- - - ">="
206
- - !ruby/object:Gem::Version
207
- version: '12.0'
208
- - - "<"
235
+ - - "~>"
209
236
  - !ruby/object:Gem::Version
210
- version: '14.0'
237
+ version: '13.0'
211
238
  - !ruby/object:Gem::Dependency
212
239
  name: rake-manifest
213
240
  requirement: !ruby/object:Gem::Requirement
@@ -248,14 +275,14 @@ dependencies:
248
275
  requirements:
249
276
  - - "~>"
250
277
  - !ruby/object:Gem::Version
251
- version: '1.80'
278
+ version: '1.92'
252
279
  type: :development
253
280
  prerelease: false
254
281
  version_requirements: !ruby/object:Gem::Requirement
255
282
  requirements:
256
283
  - - "~>"
257
284
  - !ruby/object:Gem::Version
258
- version: '1.80'
285
+ version: '1.92'
259
286
  - !ruby/object:Gem::Dependency
260
287
  name: rubocop-packaging
261
288
  requirement: !ruby/object:Gem::Requirement
@@ -276,48 +303,42 @@ dependencies:
276
303
  requirements:
277
304
  - - "~>"
278
305
  - !ruby/object:Gem::Version
279
- version: '1.26'
306
+ version: '1.27'
280
307
  type: :development
281
308
  prerelease: false
282
309
  version_requirements: !ruby/object:Gem::Requirement
283
310
  requirements:
284
311
  - - "~>"
285
312
  - !ruby/object:Gem::Version
286
- version: '1.26'
313
+ version: '1.27'
287
314
  - !ruby/object:Gem::Dependency
288
315
  name: rubocop-rspec
289
316
  requirement: !ruby/object:Gem::Requirement
290
317
  requirements:
291
318
  - - "~>"
292
319
  - !ruby/object:Gem::Version
293
- version: '3.7'
320
+ version: '3.10'
294
321
  type: :development
295
322
  prerelease: false
296
323
  version_requirements: !ruby/object:Gem::Requirement
297
324
  requirements:
298
325
  - - "~>"
299
326
  - !ruby/object:Gem::Version
300
- version: '3.7'
327
+ version: '3.10'
301
328
  - !ruby/object:Gem::Dependency
302
329
  name: simplecov
303
330
  requirement: !ruby/object:Gem::Requirement
304
331
  requirements:
305
- - - ">="
306
- - !ruby/object:Gem::Version
307
- version: 0.18.0
308
- - - "<"
332
+ - - "~>"
309
333
  - !ruby/object:Gem::Version
310
- version: 0.23.0
334
+ version: '1.1'
311
335
  type: :development
312
336
  prerelease: false
313
337
  version_requirements: !ruby/object:Gem::Requirement
314
338
  requirements:
315
- - - ">="
316
- - !ruby/object:Gem::Version
317
- version: 0.18.0
318
- - - "<"
339
+ - - "~>"
319
340
  - !ruby/object:Gem::Version
320
- version: 0.23.0
341
+ version: '1.1'
321
342
  description: |
322
343
  Extension for popular TDD and BDD frameworks like "Cucumber", "RSpec" and "Minitest",
323
344
  to make testing command line applications meaningful, easy and fun.
@@ -328,8 +349,8 @@ extensions: []
328
349
  extra_rdoc_files:
329
350
  - CHANGELOG.md
330
351
  - CONTRIBUTING.md
331
- - README.md
332
352
  - LICENSE
353
+ - README.md
333
354
  files:
334
355
  - CHANGELOG.md
335
356
  - CONTRIBUTING.md
@@ -355,19 +376,12 @@ files:
355
376
  - lib/aruba/config/jruby.rb
356
377
  - lib/aruba/config_wrapper.rb
357
378
  - lib/aruba/configuration.rb
358
- - lib/aruba/console.rb
359
- - lib/aruba/console/help.rb
360
- - lib/aruba/contracts/absolute_path.rb
361
- - lib/aruba/contracts/enum.rb
362
- - lib/aruba/contracts/is_power_of_two.rb
363
- - lib/aruba/contracts/relative_path.rb
364
379
  - lib/aruba/cucumber.rb
365
380
  - lib/aruba/cucumber/command.rb
366
381
  - lib/aruba/cucumber/environment.rb
367
382
  - lib/aruba/cucumber/file.rb
368
383
  - lib/aruba/cucumber/hooks.rb
369
384
  - lib/aruba/cucumber/parameter_types.rb
370
- - lib/aruba/cucumber/testing_frameworks.rb
371
385
  - lib/aruba/errors.rb
372
386
  - lib/aruba/event_bus.rb
373
387
  - lib/aruba/events.rb
@@ -402,9 +416,7 @@ files:
402
416
  - lib/aruba/matchers/path/be_an_existing_path.rb
403
417
  - lib/aruba/matchers/path/have_permissions.rb
404
418
  - lib/aruba/matchers/string.rb
405
- - lib/aruba/matchers/string/include_output_string.rb
406
419
  - lib/aruba/matchers/string/match_output_string.rb
407
- - lib/aruba/matchers/string/output_string_eq.rb
408
420
  - lib/aruba/platform.rb
409
421
  - lib/aruba/platforms/announcer.rb
410
422
  - lib/aruba/platforms/aruba_file_creator.rb
@@ -439,7 +451,6 @@ metadata:
439
451
  documentation_uri: https://www.rubydoc.info/gems/aruba
440
452
  homepage_uri: https://github.com/cucumber/aruba
441
453
  source_code_uri: https://github.com/cucumber/aruba
442
- post_install_message:
443
454
  rdoc_options:
444
455
  - "--charset"
445
456
  - UTF-8
@@ -451,15 +462,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
451
462
  requirements:
452
463
  - - ">="
453
464
  - !ruby/object:Gem::Version
454
- version: 3.0.0
465
+ version: 3.2.0
455
466
  required_rubygems_version: !ruby/object:Gem::Requirement
456
467
  requirements:
457
468
  - - ">="
458
469
  - !ruby/object:Gem::Version
459
470
  version: '0'
460
471
  requirements: []
461
- rubygems_version: 3.4.20
462
- signing_key:
472
+ rubygems_version: 4.0.16
463
473
  specification_version: 4
464
- summary: aruba-2.4.0
474
+ summary: Test command line applications with Cucumber, RSpec or Minitest
465
475
  test_files: []
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aruba/api'
4
-
5
- # Aruba
6
- module Aruba
7
- # Consule
8
- class Console
9
- # Helpers for Aruba::Console
10
- module Help
11
- # Output help information
12
- def aruba_help
13
- puts "Aruba Version: #{Aruba::VERSION}"
14
- puts 'Issue Tracker: https://github.com/cucumber/aruba/issues'
15
- puts 'Documentation:'
16
- puts '* http://www.rubydoc.info/gems/aruba'
17
- puts
18
-
19
- nil
20
- end
21
-
22
- # List available methods in aruba
23
- def aruba_methods
24
- ms = (Aruba::Api.instance_methods - Module.instance_methods)
25
- .each_with_object([]) { |e, a| a << format('* %s', e) }
26
- .sort
27
-
28
- puts "Available Methods:\n#{ms.join("\n")}"
29
-
30
- nil
31
- end
32
- end
33
- end
34
- end
data/lib/aruba/console.rb DELETED
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'irb'
4
-
5
- require 'aruba/api'
6
- require 'aruba/console/help'
7
-
8
- # Aruba
9
- module Aruba
10
- # Consule
11
- class Console
12
- # Start the aruba console
13
- #
14
- def start
15
- # Start IRB with current context:
16
- # http://stackoverflow.com/questions/4189818/how-to-run-irb-start-in-context-of-current-class
17
- ARGV.clear
18
- IRB.setup nil
19
-
20
- IRB.conf[:IRB_NAME] = 'aruba'
21
-
22
- IRB.conf[:PROMPT] = {}
23
- IRB.conf[:PROMPT][:ARUBA] = {
24
- PROMPT_I: '%N:%03n:%i> ',
25
- PROMPT_S: '%N:%03n:%i%l ',
26
- PROMPT_C: '%N:%03n:%i* ',
27
- RETURN: "# => %s\n"
28
- }
29
- IRB.conf[:PROMPT_MODE] = :ARUBA
30
-
31
- IRB.conf[:RC] = false
32
-
33
- require 'irb/completion'
34
- IRB.conf[:READLINE] = true
35
- IRB.conf[:SAVE_HISTORY] = 1000
36
- IRB.conf[:HISTORY_FILE] = Aruba.config.console_history_file
37
-
38
- context = Class.new do
39
- include Aruba::Api
40
- include Aruba::Console::Help
41
-
42
- def initialize
43
- setup_aruba
44
- end
45
-
46
- def inspect
47
- 'aruba console'
48
- end
49
- end
50
-
51
- irb = IRB::Irb.new(IRB::WorkSpace.new(context.new))
52
- IRB.conf[:MAIN_CONTEXT] = irb.context
53
-
54
- trap('SIGINT') do
55
- irb.signal_handle
56
- end
57
-
58
- begin
59
- catch(:IRB_EXIT) do
60
- irb.eval_input
61
- end
62
- ensure
63
- IRB.irb_at_exit
64
- end
65
- end
66
- end
67
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aruba/platform'
4
-
5
- # Aruba
6
- module Aruba
7
- # Contracts
8
- module Contracts
9
- # Check if path is absolute
10
- class AbsolutePath
11
- # Check
12
- #
13
- # @param [Object] value
14
- # The value to be checked
15
- def self.valid?(value)
16
- Aruba.platform.absolute_path? value
17
- rescue StandardError
18
- false
19
- end
20
- end
21
- end
22
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'contracts'
4
-
5
- # Aruba
6
- module Aruba
7
- # Contracts
8
- module Contracts
9
- # Enum
10
- class Enum < ::Contracts::CallableClass
11
- private
12
-
13
- attr_reader :vals
14
-
15
- public
16
-
17
- # Create contract
18
- def initialize(*vals)
19
- super()
20
- @vals = vals
21
- end
22
-
23
- # Check if value is part of array
24
- def valid?(val)
25
- vals.include? val
26
- end
27
- end
28
- end
29
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'aruba/aruba_path'
4
-
5
- # Aruba
6
- module Aruba
7
- # Contracts
8
- module Contracts
9
- # Is value power of two
10
- class IsPowerOfTwo
11
- # Check value
12
- #
13
- # @param [Integer] value
14
- # The value to be checked
15
- def self.valid?(value)
16
- # explanation for algorithm can be found here:
17
- # http://www.exploringbinary.com/ten-ways-to-check-if-an-integer-is-a-power-of-two-in-c/
18
- value.positive? && value.nobits?(value - 1)
19
- rescue StandardError
20
- false
21
- end
22
- end
23
- end
24
- end