aruba 0.14.9 → 1.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.
- checksums.yaml +4 -4
- data/.cucumberproignore +3 -0
- data/.github/ISSUE_TEMPLATE.md +48 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +41 -0
- data/.gitignore +1 -0
- data/.rspec +1 -1
- data/.rubocop.yml +20 -179
- data/.rubocop_todo.yml +262 -0
- data/.simplecov +7 -5
- data/.travis.yml +54 -46
- data/.yardopts +3 -0
- data/CHANGELOG.md +613 -246
- data/CONTRIBUTING.md +247 -45
- data/Dockerfile +67 -0
- data/Gemfile +5 -96
- data/LICENSE +1 -1
- data/README.md +57 -180
- data/Rakefile +63 -32
- data/appveyor.yml +8 -11
- data/aruba.gemspec +47 -41
- data/bin/console +7 -0
- data/bin/test +9 -0
- data/cucumber.yml +4 -24
- data/doc/dependency_decisions.yml +42 -2
- data/docker-compose.yml +26 -0
- data/{bin → exe}/aruba +1 -1
- data/fixtures/cli-app/Rakefile +1 -1
- data/fixtures/cli-app/bin/aruba-test-cli +6 -0
- data/fixtures/cli-app/cli-app.gemspec +1 -2
- data/fixtures/cli-app/features/support/aruba.rb +1 -0
- data/fixtures/cli-app/features/support/env.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/lib/cli/app.rb +1 -5
- data/fixtures/cli-app/spec/spec_helper.rb +4 -6
- data/fixtures/empty-app/Rakefile +1 -1
- data/fixtures/empty-app/cli-app.gemspec +1 -2
- data/fixtures/empty-app/lib/cli/app/version.rb +1 -1
- data/fixtures/empty-app/lib/cli/app.rb +0 -6
- data/fixtures/getting-started-app/Gemfile +1 -1
- data/lib/aruba/api/commands.rb +109 -143
- data/lib/aruba/api/core.rb +57 -43
- data/lib/aruba/api/environment.rb +16 -7
- data/lib/aruba/api/filesystem.rb +42 -29
- data/lib/aruba/api/text.rb +3 -9
- data/lib/aruba/api.rb +6 -11
- data/lib/aruba/aruba_path.rb +27 -89
- data/lib/aruba/basic_configuration.rb +4 -24
- data/lib/aruba/cli.rb +1 -1
- data/lib/aruba/colorizer.rb +10 -99
- data/lib/aruba/command.rb +2 -0
- data/lib/aruba/config/jruby.rb +15 -5
- data/lib/aruba/config_wrapper.rb +1 -1
- data/lib/aruba/configuration.rb +92 -0
- data/lib/aruba/console/help.rb +1 -7
- data/lib/aruba/console.rb +5 -5
- data/lib/aruba/contracts/absolute_path.rb +2 -2
- data/lib/aruba/contracts/relative_path.rb +2 -2
- data/lib/aruba/cucumber/command.rb +171 -160
- data/lib/aruba/cucumber/environment.rb +1 -1
- data/lib/aruba/cucumber/file.rb +21 -35
- data/lib/aruba/cucumber/hooks.rb +17 -56
- data/lib/aruba/cucumber/testing_frameworks.rb +74 -50
- data/lib/aruba/cucumber.rb +0 -5
- data/lib/aruba/event_bus/name_resolver.rb +5 -16
- data/lib/aruba/hooks.rb +1 -1
- data/lib/aruba/in_config_wrapper.rb +5 -1
- data/lib/aruba/initializer.rb +36 -42
- data/lib/aruba/matchers/base/base_matcher.rb +2 -2
- data/lib/aruba/matchers/base/message_indenter.rb +19 -0
- data/lib/aruba/matchers/base/object_formatter.rb +2 -9
- data/lib/aruba/matchers/collection/include_an_object.rb +7 -9
- data/lib/aruba/matchers/command/be_successfully_executed.rb +6 -4
- data/lib/aruba/matchers/command/have_exit_status.rb +14 -4
- data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -5
- data/lib/aruba/matchers/command/have_output.rb +10 -5
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +2 -2
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +2 -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 +4 -6
- 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 +6 -8
- data/lib/aruba/matchers/file/have_same_file_content.rb +5 -8
- 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 +6 -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 +42 -79
- data/lib/aruba/platforms/aruba_file_creator.rb +2 -6
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -2
- data/lib/aruba/platforms/aruba_logger.rb +23 -7
- data/lib/aruba/platforms/command_monitor.rb +12 -107
- data/lib/aruba/platforms/determine_disk_usage.rb +56 -14
- data/lib/aruba/platforms/filesystem_status.rb +10 -14
- 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 -11
- data/lib/aruba/platforms/unix_environment_variables.rb +18 -27
- data/lib/aruba/platforms/unix_platform.rb +20 -51
- data/lib/aruba/platforms/unix_which.rb +2 -1
- data/lib/aruba/platforms/windows_command_string.rb +15 -10
- data/lib/aruba/platforms/windows_environment_variables.rb +43 -44
- data/lib/aruba/platforms/windows_platform.rb +4 -0
- data/lib/aruba/platforms/windows_which.rb +4 -3
- data/lib/aruba/processes/basic_process.rb +28 -30
- data/lib/aruba/processes/debug_process.rb +12 -3
- data/lib/aruba/processes/in_process.rb +17 -8
- data/lib/aruba/processes/spawn_process.rb +57 -46
- data/lib/aruba/rspec.rb +14 -36
- data/lib/aruba/runtime.rb +3 -6
- data/lib/aruba/setup.rb +6 -6
- data/lib/aruba/tasks/docker_helpers.rb +154 -0
- data/lib/aruba/version.rb +1 -1
- metadata +191 -244
- data/features/.nav +0 -72
- data/features/api/command/find_command.feature +0 -83
- data/features/api/command/last_command_started.feature +0 -50
- data/features/api/command/last_command_stopped.feature +0 -89
- data/features/api/command/run.feature +0 -414
- data/features/api/command/run_simple.feature +0 -242
- data/features/api/command/send_signal.feature +0 -53
- data/features/api/command/stderr.feature +0 -46
- data/features/api/command/stdout.feature +0 -46
- data/features/api/command/stop.feature +0 -131
- data/features/api/command/stop_all_commands.feature +0 -53
- data/features/api/command/terminate_all_commands.feature +0 -53
- data/features/api/command/which.feature +0 -37
- data/features/api/core/expand_path.feature +0 -88
- data/features/api/environment/append_environment_variable.feature +0 -128
- data/features/api/environment/delete_environment_variable.feature +0 -63
- data/features/api/environment/prepend_environment_variable.feature +0 -128
- data/features/api/environment/set_environment_variable.feature +0 -376
- data/features/api/filesystem/cd.feature +0 -184
- data/features/api/filesystem/create_directory.feature +0 -57
- data/features/api/filesystem/disk_usage.feature +0 -152
- data/features/api/filesystem/does_exist.feature +0 -62
- data/features/api/filesystem/fixtures.feature +0 -104
- data/features/api/filesystem/is_absolute.feature +0 -48
- data/features/api/filesystem/is_directory.feature +0 -53
- data/features/api/filesystem/is_file.feature +0 -54
- data/features/api/filesystem/is_relative.feature +0 -48
- data/features/api/filesystem/move.feature +0 -119
- data/features/api/text/extract_text.feature +0 -87
- data/features/api/text/replace_variables.feature +0 -45
- data/features/api/text/sanitize_text.feature +0 -228
- data/features/api/text/unescape_text.feature +0 -127
- data/features/cli/console.feature +0 -52
- data/features/cli/init.feature +0 -79
- data/features/configuration/activate_announcer_on_command_failure.feature +0 -38
- data/features/configuration/command_runtime_environment.feature +0 -129
- data/features/configuration/console_history_file.feature +0 -38
- data/features/configuration/exit_timeout.feature +0 -52
- data/features/configuration/fixtures_directories.feature +0 -38
- data/features/configuration/fixtures_path_prefix.feature +0 -23
- data/features/configuration/home_directory.feature +0 -80
- data/features/configuration/io_timeout.feature +0 -30
- data/features/configuration/keep_ansi.feature +0 -30
- data/features/configuration/log_level.feature +0 -38
- data/features/configuration/physical_block_size.feature +0 -53
- data/features/configuration/remove_ansi_escape_sequences.feature +0 -38
- data/features/configuration/root_directory.feature +0 -30
- data/features/configuration/startup_wait_time.feature +0 -48
- data/features/configuration/usage.feature +0 -159
- data/features/configuration/working_directory.feature +0 -33
- data/features/development/build.feature +0 -15
- data/features/getting_started/cleanup.feature +0 -58
- data/features/getting_started/run_commands.feature +0 -187
- data/features/getting_started/supported_testing_frameworks.feature +0 -104
- data/features/getting_started/writing_good_feature_tests.feature +0 -38
- data/features/hooks/after/command.feature +0 -46
- data/features/hooks/before/command.feature +0 -75
- data/features/matchers/collection/include_an_object.feature +0 -72
- data/features/matchers/directory/have_sub_directory.feature +0 -110
- data/features/matchers/file/be_a_command_found_in_path.feature +0 -115
- data/features/matchers/file/be_existing_executable.feature +0 -88
- data/features/matchers/file/be_existing_file.feature +0 -82
- data/features/matchers/file/have_file_content.feature +0 -123
- data/features/matchers/file/have_file_size.feature +0 -107
- data/features/matchers/path/be_an_absolute_path.feature +0 -74
- data/features/matchers/path/be_an_existing_path.feature +0 -97
- data/features/matchers/path/have_permissions.feature +0 -118
- data/features/matchers/timeouts.feature +0 -48
- data/features/platforms/jruby.feature +0 -14
- data/features/rspec/integration.feature +0 -179
- data/features/step_definitions/aruba_dev_steps.rb +0 -56
- data/features/step_definitions/hooks.rb +0 -156
- data/features/steps/command/debug.feature +0 -92
- data/features/steps/command/exit_statuses.feature +0 -136
- data/features/steps/command/in_process.feature +0 -485
- data/features/steps/command/interactive.feature +0 -90
- data/features/steps/command/output.feature +0 -567
- data/features/steps/command/run.feature +0 -66
- data/features/steps/command/send_signal.feature +0 -104
- data/features/steps/command/shell.feature +0 -155
- data/features/steps/command/stderr.feature +0 -68
- data/features/steps/command/stdout.feature +0 -109
- data/features/steps/command/stop.feature +0 -313
- data/features/steps/core/announce.feature +0 -283
- data/features/steps/environment/append_environment_variable.feature +0 -52
- data/features/steps/environment/disable_bunder.feature +0 -18
- data/features/steps/environment/home_variable.feature +0 -62
- data/features/steps/environment/prepend_environment_variable.feature +0 -52
- data/features/steps/environment/set_environment_variable.feature +0 -49
- data/features/steps/filesystem/append_to_file.feature +0 -45
- data/features/steps/filesystem/cd_to_directory.feature +0 -33
- data/features/steps/filesystem/check_file_content.feature +0 -61
- data/features/steps/filesystem/check_permissions_of_file.feature +0 -39
- data/features/steps/filesystem/compare_files.feature +0 -42
- data/features/steps/filesystem/copy.feature +0 -45
- data/features/steps/filesystem/create_directory.feature +0 -57
- data/features/steps/filesystem/create_file.feature +0 -76
- data/features/steps/filesystem/existence_of_directory.feature +0 -57
- data/features/steps/filesystem/existence_of_file.feature +0 -43
- data/features/steps/filesystem/file_content.feature +0 -86
- data/features/steps/filesystem/fixtures.feature +0 -64
- data/features/steps/filesystem/move.feature +0 -45
- data/features/steps/filesystem/non_existence_of_directory.feature +0 -69
- data/features/steps/filesystem/non_existence_of_file.feature +0 -80
- data/features/steps/filesystem/overwrite_file.feature +0 -72
- data/features/steps/filesystem/remove_directory.feature +0 -38
- data/features/steps/filesystem/remove_file.feature +0 -38
- data/features/steps/filesystem/use_fixture.feature +0 -77
- data/features/steps/overview.feature +0 -25
- data/features/support/aruba.rb +0 -7
- data/features/support/env.rb +0 -33
- data/features/support/jruby.rb +0 -5
- data/features/support/simplecov_setup.rb +0 -8
- data/fixtures/cli-app/bin/cli +0 -6
- data/fixtures/spawn_process/stderr.sh +0 -3
- data/lib/aruba/api/deprecated.rb +0 -1234
- data/lib/aruba/config.rb +0 -107
- data/lib/aruba/cucumber/core.rb +0 -5
- 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/deprecated/file.rb +0 -17
- data/lib/aruba/matchers/deprecated.rb +0 -1
- 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/reporting.rb +0 -126
- data/lib/aruba/spawn_process.rb +0 -11
- data/script/bootstrap +0 -28
- data/script/console +0 -16
- data/script/test +0 -3
- data/spec/aruba/api/bundler_spec.rb +0 -15
- data/spec/aruba/api/deprecated_spec.rb +0 -308
- data/spec/aruba/api/environment/restore_env_spec.rb +0 -86
- data/spec/aruba/api/environment/set_env_spec.rb +0 -46
- data/spec/aruba/api/filesystem/file_size_spec.rb +0 -28
- data/spec/aruba/api/runtime_spec.rb +0 -28
- data/spec/aruba/api_spec.rb +0 -981
- data/spec/aruba/aruba_path_spec.rb +0 -103
- data/spec/aruba/basic_configuration_spec.rb +0 -5
- data/spec/aruba/configuration_spec.rb +0 -5
- data/spec/aruba/hooks_spec.rb +0 -17
- data/spec/aruba/in_config_wrapper_spec.rb +0 -25
- data/spec/aruba/jruby_spec.rb +0 -55
- data/spec/aruba/matchers/command/have_output_size_spec.rb +0 -25
- data/spec/aruba/matchers/command_spec.rb +0 -174
- data/spec/aruba/matchers/deprecated_spec.rb +0 -120
- data/spec/aruba/matchers/directory_spec.rb +0 -57
- data/spec/aruba/matchers/file_spec.rb +0 -208
- data/spec/aruba/matchers/path_spec.rb +0 -58
- data/spec/aruba/platform/simple_table_spec.rb +0 -23
- data/spec/aruba/platform/windows_environment_variables_spec.rb +0 -500
- data/spec/aruba/platforms/unix_command_string_spec.rb +0 -17
- data/spec/aruba/platforms/windows_command_string_spec.rb +0 -22
- data/spec/aruba/rspec_spec.rb +0 -15
- data/spec/aruba/runtime_spec.rb +0 -29
- data/spec/aruba/spawn_process_spec.rb +0 -96
- data/spec/event_bus/name_resolver_spec.rb +0 -68
- data/spec/event_bus_spec.rb +0 -158
- data/spec/spec_helper.rb +0 -20
- data/spec/support/configs/.keep +0 -0
- data/spec/support/configs/aruba.rb +0 -5
- data/spec/support/configs/pry.rb +0 -3
- data/spec/support/configs/rspec.rb +0 -15
- data/spec/support/helpers/.keep +0 -0
- data/spec/support/helpers/reporting.rb +0 -44
- data/spec/support/matchers/.keep +0 -0
- data/spec/support/matchers/option.rb +0 -35
- data/spec/support/shared_contexts/.keep +0 -0
- data/spec/support/shared_contexts/aruba.rb +0 -49
- data/spec/support/shared_examples/.keep +0 -0
- data/spec/support/shared_examples/configuration.rb +0 -116
- data/spec/support/shared_examples/directory.rb +0 -7
- data/spec/support/shared_examples/file.rb +0 -7
- data/templates/css/console.css +0 -24
- data/templates/css/filesystem.css +0 -42
- data/templates/css/pygments-autumn.css +0 -59
- data/templates/files.erb +0 -14
- data/templates/images/LICENSE +0 -22
- data/templates/images/folder.png +0 -0
- data/templates/images/page_white.png +0 -0
- data/templates/images/page_white_gherkin.png +0 -0
- data/templates/images/page_white_ruby.png +0 -0
- data/templates/index.erb +0 -20
- data/templates/js/filesystem.js +0 -5
- data/templates/js/jquery-1.11.3.min.js +0 -5
- data/templates/main.erb +0 -34
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'shellwords'
|
|
2
2
|
require 'aruba/colorizer'
|
|
3
3
|
|
|
4
|
-
Aruba::
|
|
4
|
+
Aruba::Colorizer.coloring = false if !STDOUT.tty? && !ENV.key?('AUTOTEST')
|
|
5
5
|
|
|
6
6
|
# Aruba
|
|
7
7
|
module Aruba
|
|
@@ -27,25 +27,32 @@ module Aruba
|
|
|
27
27
|
# Aruba.announcer.announce(:my_channel, 'my message')
|
|
28
28
|
#
|
|
29
29
|
class Announcer
|
|
30
|
+
# Base Announcer class
|
|
31
|
+
class BaseAnnouncer
|
|
32
|
+
def mode?(m)
|
|
33
|
+
mode == m
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
30
37
|
# Announcer using Kernel.puts
|
|
31
|
-
class KernelPutsAnnouncer
|
|
38
|
+
class KernelPutsAnnouncer < BaseAnnouncer
|
|
32
39
|
def announce(message)
|
|
33
40
|
Kernel.puts message
|
|
34
41
|
end
|
|
35
42
|
|
|
36
|
-
def mode
|
|
37
|
-
:kernel_puts
|
|
43
|
+
def mode
|
|
44
|
+
:kernel_puts
|
|
38
45
|
end
|
|
39
46
|
end
|
|
40
47
|
|
|
41
48
|
# Announcer using Main#puts
|
|
42
|
-
class PutsAnnouncer
|
|
49
|
+
class PutsAnnouncer < BaseAnnouncer
|
|
43
50
|
def announce(message)
|
|
44
51
|
puts message
|
|
45
52
|
end
|
|
46
53
|
|
|
47
|
-
def mode
|
|
48
|
-
:puts
|
|
54
|
+
def mode
|
|
55
|
+
:puts
|
|
49
56
|
end
|
|
50
57
|
end
|
|
51
58
|
|
|
@@ -55,7 +62,7 @@ module Aruba
|
|
|
55
62
|
|
|
56
63
|
public
|
|
57
64
|
|
|
58
|
-
def initialize
|
|
65
|
+
def initialize
|
|
59
66
|
@announcers = []
|
|
60
67
|
@announcers << PutsAnnouncer.new
|
|
61
68
|
@announcers << KernelPutsAnnouncer.new
|
|
@@ -66,14 +73,11 @@ module Aruba
|
|
|
66
73
|
@channels = {}
|
|
67
74
|
@output_formats = {}
|
|
68
75
|
|
|
69
|
-
@options = args[1] || {}
|
|
70
|
-
|
|
71
76
|
after_init
|
|
72
77
|
end
|
|
73
78
|
|
|
74
79
|
private
|
|
75
80
|
|
|
76
|
-
# rubocop:disable Metrics/MethodLength
|
|
77
81
|
def after_init
|
|
78
82
|
output_format :changed_configuration, proc { |n, v| format('# %s = %s', n, v) }
|
|
79
83
|
output_format :changed_environment, proc { |n, v| format('$ export %s=%s', n, Shellwords.escape(v)) }
|
|
@@ -88,34 +92,12 @@ module Aruba
|
|
|
88
92
|
output_format :stop_signal, proc { |p, s| format('Command will be stopped with `kill -%s %s`', s, p) }
|
|
89
93
|
output_format :timeout, '# %s-timeout: %s seconds'
|
|
90
94
|
output_format :wait_time, '# %s: %s seconds'
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if @options[:stdout]
|
|
97
|
-
warn('The use of "@announce_stdout-instance" variable and "options[:stdout] = true" for Announcer.new is deprecated. Please use "announcer.activate(:stdout)" instead.')
|
|
98
|
-
activate :stdout
|
|
99
|
-
end
|
|
100
|
-
if @options[:stderr]
|
|
101
|
-
warn('The use of "@announce_stderr-instance" variable and "options[:stderr] = true" for Announcer.new is deprecated. Please use "announcer.activate(:stderr)" instead.')
|
|
102
|
-
activate :stderr
|
|
103
|
-
end
|
|
104
|
-
if @options[:dir]
|
|
105
|
-
warn('The use of "@announce_dir-instance" variable and "options[:dir] = true" for Announcer.new is deprecated. Please use "announcer.activate(:directory)" instead.')
|
|
106
|
-
activate :directory
|
|
107
|
-
end
|
|
108
|
-
if @options[:cmd]
|
|
109
|
-
warn('The use of "@announce_cmd-instance" variable and "options[:cmd] = true" for Announcer.new is deprecated. Please use "announcer.activate(:command)" instead.')
|
|
110
|
-
activate :command
|
|
111
|
-
end
|
|
112
|
-
if @options[:env]
|
|
113
|
-
warn('The use of "@announce_env-instance" variable and "options[:env] = true" for Announcer.new is deprecated. Please use "announcer.activate(:modified_environment)" instead.')
|
|
114
|
-
activate :modified_enviroment
|
|
115
|
-
end
|
|
116
|
-
# rubocop:enable Metrics/LineLength
|
|
95
|
+
output_format :command_filesystem_status,
|
|
96
|
+
proc { |status|
|
|
97
|
+
format("<<-COMMAND FILESYSTEM STATUS\n%s\nCOMMAND FILESYSTEM STATUS",
|
|
98
|
+
Aruba.platform.simple_table(status.to_h, sort: false))
|
|
99
|
+
}
|
|
117
100
|
end
|
|
118
|
-
# rubocop:enable Metrics/MethodLength
|
|
119
101
|
|
|
120
102
|
def output_format(channel, string = '%s', &block)
|
|
121
103
|
output_formats[channel.to_sym] = if block_given?
|
|
@@ -139,11 +121,18 @@ module Aruba
|
|
|
139
121
|
# @param [Symbol] m
|
|
140
122
|
# The mode to set
|
|
141
123
|
def mode=(m)
|
|
142
|
-
@announcer = @announcers.find { |a|
|
|
124
|
+
@announcer = @announcers.find { |a| a.mode? m.to_sym }
|
|
143
125
|
|
|
144
126
|
self
|
|
145
127
|
end
|
|
146
128
|
|
|
129
|
+
# Fecth mode of announcer
|
|
130
|
+
#
|
|
131
|
+
# @return [Symbol] The current announcer mode
|
|
132
|
+
def mode
|
|
133
|
+
@announcer.mode
|
|
134
|
+
end
|
|
135
|
+
|
|
147
136
|
# Check if channel is activated
|
|
148
137
|
#
|
|
149
138
|
# @param [Symbol] channel
|
|
@@ -154,7 +143,7 @@ module Aruba
|
|
|
154
143
|
|
|
155
144
|
# Activate a channel
|
|
156
145
|
#
|
|
157
|
-
# @param [Symbol]
|
|
146
|
+
# @param [Symbol] chns
|
|
158
147
|
# The name of the channel to activate
|
|
159
148
|
def activate(*chns)
|
|
160
149
|
chns.flatten.each { |c| channels[c.to_sym] = true }
|
|
@@ -173,7 +162,7 @@ module Aruba
|
|
|
173
162
|
# @yield
|
|
174
163
|
# If block is given, that one is called and the return value is used as
|
|
175
164
|
# message to be announced.
|
|
176
|
-
def announce(channel, *args
|
|
165
|
+
def announce(channel, *args)
|
|
177
166
|
channel = channel.to_sym
|
|
178
167
|
|
|
179
168
|
the_output_format = if output_formats.key? channel
|
|
@@ -184,49 +173,23 @@ module Aruba
|
|
|
184
173
|
|
|
185
174
|
return unless activated?(channel)
|
|
186
175
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
176
|
+
begin
|
|
177
|
+
if block_given?
|
|
178
|
+
value = yield
|
|
179
|
+
args << value
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
message = the_output_format.call(*args)
|
|
183
|
+
message += "\n"
|
|
184
|
+
message = colorizer.cyan(message)
|
|
185
|
+
rescue NotImplementedError => e
|
|
186
|
+
message = "Error fetching announced value for #{channel}: #{e.message}"
|
|
187
|
+
end
|
|
194
188
|
|
|
195
189
|
announcer.announce(message)
|
|
196
190
|
|
|
197
191
|
nil
|
|
198
192
|
end
|
|
199
|
-
|
|
200
|
-
# @deprecated
|
|
201
|
-
def stdout(content)
|
|
202
|
-
warn('The announcer now has a new api to activate channels. Please use this one: announce(:stdout, message)')
|
|
203
|
-
announce :stdout, content
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
# @deprecated
|
|
207
|
-
def stderr(content)
|
|
208
|
-
warn('The announcer now has a new api to activate channels. Please use this one: announce(:stderr, message)')
|
|
209
|
-
announce :stderr, content
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
# @deprecated
|
|
213
|
-
def dir(dir)
|
|
214
|
-
warn('The announcer now has a new api to activate channels. Please use this one announce(:directory, message)')
|
|
215
|
-
announce :directory, dir
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
# @deprecated
|
|
219
|
-
def cmd(cmd)
|
|
220
|
-
warn('The announcer now has a new api to activate channels. Please use this one announce(:command, message)')
|
|
221
|
-
announce :command, cmd
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
# @deprecated
|
|
225
|
-
def env(name, value)
|
|
226
|
-
warn('The announcer now has a new api to activate channels. Please use this one: announce(:changed_environment, key, value)')
|
|
227
|
-
|
|
228
|
-
announce :changed_environment, name, value
|
|
229
|
-
end
|
|
230
193
|
end
|
|
231
194
|
end
|
|
232
195
|
end
|
|
@@ -15,18 +15,14 @@ module Aruba
|
|
|
15
15
|
# @param [Object] content
|
|
16
16
|
# The content of the file
|
|
17
17
|
#
|
|
18
|
-
# @param [
|
|
18
|
+
# @param [Boolean] check_presence (false)
|
|
19
19
|
# Check if file exist
|
|
20
20
|
def call(path, content, check_presence = false)
|
|
21
21
|
fail "Expected #{path} to be present" if check_presence && !Aruba.platform.file?(path)
|
|
22
22
|
|
|
23
23
|
Aruba.platform.mkdir(File.dirname(path))
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
File.open(path, 'w') { |f| f << content }
|
|
27
|
-
else
|
|
28
|
-
File.write(path, content)
|
|
29
|
-
end
|
|
25
|
+
File.write(path, content)
|
|
30
26
|
|
|
31
27
|
self
|
|
32
28
|
end
|
|
@@ -19,14 +19,14 @@ module Aruba
|
|
|
19
19
|
# @param [Numeric] size
|
|
20
20
|
# The size of the file
|
|
21
21
|
#
|
|
22
|
-
# @param [
|
|
22
|
+
# @param [Boolean] check_presence (false)
|
|
23
23
|
# Check if file exist
|
|
24
24
|
def call(path, size, check_presence)
|
|
25
25
|
fail "Expected #{path} to be present" if check_presence && !Aruba.platform.file?(path)
|
|
26
26
|
|
|
27
27
|
Aruba.platform.mkdir(File.dirname(path))
|
|
28
28
|
|
|
29
|
-
File.open(path,
|
|
29
|
+
File.open(path, 'wb') { |f| f.seek(size - 1); f.write("\0") }
|
|
30
30
|
|
|
31
31
|
self
|
|
32
32
|
end
|
|
@@ -10,19 +10,35 @@ module Aruba
|
|
|
10
10
|
|
|
11
11
|
# Create logger
|
|
12
12
|
#
|
|
13
|
-
# @param [
|
|
14
|
-
#
|
|
13
|
+
# @param [Hash] opts
|
|
14
|
+
# Options
|
|
15
|
+
#
|
|
16
|
+
# @option opts [Symbol] :default_mode Log level
|
|
15
17
|
def initialize(opts = {})
|
|
16
18
|
@mode = opts.fetch(:default_mode, :info)
|
|
17
19
|
end
|
|
18
20
|
|
|
21
|
+
# @!method fatal(msg)
|
|
22
|
+
# Log a fatal level log message
|
|
23
|
+
|
|
24
|
+
# @!method warn(msg)
|
|
25
|
+
# Log a warn level log message
|
|
26
|
+
|
|
27
|
+
# @!method debug(msg)
|
|
28
|
+
# Log a debug level log message
|
|
29
|
+
|
|
30
|
+
# @!method info(msg)
|
|
31
|
+
# Log an info level log message
|
|
32
|
+
|
|
33
|
+
# @!method error(msg)
|
|
34
|
+
# Log an error level log message
|
|
35
|
+
|
|
36
|
+
# @!method unknown(msg)
|
|
37
|
+
# Log an unknown level log message
|
|
38
|
+
|
|
19
39
|
[:fatal, :warn, :debug, :info, :error, :unknown].each do |m|
|
|
20
40
|
define_method m do |msg|
|
|
21
|
-
|
|
22
|
-
logger.send m, msg
|
|
23
|
-
else
|
|
24
|
-
logger.public_send m, msg
|
|
25
|
-
end
|
|
41
|
+
logger.public_send m, msg
|
|
26
42
|
end
|
|
27
43
|
end
|
|
28
44
|
|
|
@@ -22,6 +22,10 @@ module Aruba
|
|
|
22
22
|
def method_missing(*)
|
|
23
23
|
fail NoCommandHasBeenStoppedError, 'No last command stopped available'
|
|
24
24
|
end
|
|
25
|
+
|
|
26
|
+
def respond_to_missing?(*)
|
|
27
|
+
true
|
|
28
|
+
end
|
|
25
29
|
end
|
|
26
30
|
|
|
27
31
|
class DefaultLastCommandStarted
|
|
@@ -32,6 +36,10 @@ module Aruba
|
|
|
32
36
|
def method_missing(*)
|
|
33
37
|
fail NoCommandHasBeenStartedError, 'No last command started available'
|
|
34
38
|
end
|
|
39
|
+
|
|
40
|
+
def respond_to_missing?(*)
|
|
41
|
+
true
|
|
42
|
+
end
|
|
35
43
|
end
|
|
36
44
|
|
|
37
45
|
def initialize(opts = {})
|
|
@@ -40,23 +48,11 @@ module Aruba
|
|
|
40
48
|
|
|
41
49
|
@last_command_stopped = DefaultLastCommandStopped.new
|
|
42
50
|
@last_command_started = DefaultLastCommandStarted.new
|
|
43
|
-
|
|
44
51
|
rescue KeyError => e
|
|
45
52
|
raise ArgumentError, e.message
|
|
46
53
|
end
|
|
47
54
|
|
|
48
|
-
|
|
49
|
-
# Return the last command stopped
|
|
50
|
-
def last_command_stopped
|
|
51
|
-
return @last_command_stopped unless @last_command_stopped.nil?
|
|
52
|
-
|
|
53
|
-
registered_commands.each(&:stop)
|
|
54
|
-
|
|
55
|
-
@last_command_stopped
|
|
56
|
-
end
|
|
57
|
-
else
|
|
58
|
-
attr_reader :last_command_stopped
|
|
59
|
-
end
|
|
55
|
+
attr_reader :last_command_stopped
|
|
60
56
|
|
|
61
57
|
# Set last command started
|
|
62
58
|
#
|
|
@@ -66,7 +62,7 @@ module Aruba
|
|
|
66
62
|
@last_command_started = find(cmd)
|
|
67
63
|
end
|
|
68
64
|
|
|
69
|
-
# Set last command
|
|
65
|
+
# Set last command stopped
|
|
70
66
|
#
|
|
71
67
|
# @param [String] cmd
|
|
72
68
|
# The commandline of the command
|
|
@@ -95,37 +91,6 @@ module Aruba
|
|
|
95
91
|
self
|
|
96
92
|
end
|
|
97
93
|
|
|
98
|
-
# @deprecated
|
|
99
|
-
# Fetch output (stdout, stderr) from command
|
|
100
|
-
#
|
|
101
|
-
# @param [String] cmd
|
|
102
|
-
# The command
|
|
103
|
-
def output_from(cmd)
|
|
104
|
-
cmd = Utils.detect_ruby(cmd)
|
|
105
|
-
find(cmd).output
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# @deprecated
|
|
109
|
-
# Fetch stdout from command
|
|
110
|
-
#
|
|
111
|
-
# @param [String] cmd
|
|
112
|
-
# The command
|
|
113
|
-
def stdout_from(cmd)
|
|
114
|
-
cmd = Utils.detect_ruby(cmd)
|
|
115
|
-
find(cmd).stdout
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# @deprecated
|
|
119
|
-
# Fetch stderr from command
|
|
120
|
-
#
|
|
121
|
-
# @param [String] cmd
|
|
122
|
-
# The command
|
|
123
|
-
def stderr_from(cmd)
|
|
124
|
-
cmd = Utils.detect_ruby(cmd)
|
|
125
|
-
find(cmd).stderr
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
# @deprecated
|
|
129
94
|
# Get stdout of all commands
|
|
130
95
|
#
|
|
131
96
|
# @return [String]
|
|
@@ -133,14 +98,9 @@ module Aruba
|
|
|
133
98
|
def all_stdout
|
|
134
99
|
registered_commands.each(&:stop)
|
|
135
100
|
|
|
136
|
-
|
|
137
|
-
registered_commands.inject("") { |a, e| a << e.stdout; a }
|
|
138
|
-
else
|
|
139
|
-
registered_commands.each_with_object("") { |e, a| a << e.stdout }
|
|
140
|
-
end
|
|
101
|
+
registered_commands.each_with_object('') { |e, a| a << e.stdout }
|
|
141
102
|
end
|
|
142
103
|
|
|
143
|
-
# @deprecated
|
|
144
104
|
# Get stderr of all commands
|
|
145
105
|
#
|
|
146
106
|
# @return [String]
|
|
@@ -148,14 +108,9 @@ module Aruba
|
|
|
148
108
|
def all_stderr
|
|
149
109
|
registered_commands.each(&:stop)
|
|
150
110
|
|
|
151
|
-
|
|
152
|
-
registered_commands.inject("") { |a, e| a << e.stderr; a }
|
|
153
|
-
else
|
|
154
|
-
registered_commands.each_with_object("") { |e, a| a << e.stderr }
|
|
155
|
-
end
|
|
111
|
+
registered_commands.each_with_object('') { |e, a| a << e.stderr }
|
|
156
112
|
end
|
|
157
113
|
|
|
158
|
-
# @deprecated
|
|
159
114
|
# Get stderr and stdout of all commands
|
|
160
115
|
#
|
|
161
116
|
# @return [String]
|
|
@@ -164,56 +119,6 @@ module Aruba
|
|
|
164
119
|
all_stdout << all_stderr
|
|
165
120
|
end
|
|
166
121
|
|
|
167
|
-
# @deprecated
|
|
168
|
-
def last_exit_status
|
|
169
|
-
Aruba.platform.deprecated('The use of "#last_exit_status" is deprecated. Use "last_command_(started|stopped).exit_status" instead')
|
|
170
|
-
|
|
171
|
-
return @last_exit_status if @last_exit_status
|
|
172
|
-
registered_commands.each(&:stop)
|
|
173
|
-
@last_exit_status
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# @deprecated
|
|
177
|
-
def stop_process(process)
|
|
178
|
-
@last_command_stopped = process
|
|
179
|
-
@last_exit_status = process.stop(announcer)
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
# @deprecated
|
|
183
|
-
def terminate_process!(process)
|
|
184
|
-
process.terminate
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
# @deprecated
|
|
188
|
-
def stop_processes!
|
|
189
|
-
Aruba.platform.deprecated('The use of "#stop_processes!" is deprecated.')
|
|
190
|
-
|
|
191
|
-
registered_commands.each(&:stop)
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
# @deprecated
|
|
195
|
-
# Terminate all running processes
|
|
196
|
-
def terminate_processes
|
|
197
|
-
Aruba.platform.deprecated('The use of "#terminate_processes" is deprecated.')
|
|
198
|
-
|
|
199
|
-
registered_commands.each(&:terminate)
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
# @deprecated
|
|
203
|
-
def only_processes
|
|
204
|
-
Aruba.platform.deprecated('The use of "#only_processes" is deprecated.')
|
|
205
|
-
|
|
206
|
-
registered_commands
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
# @deprecated
|
|
210
|
-
def get_process(wanted)
|
|
211
|
-
command = find(wanted)
|
|
212
|
-
raise ArgumentError.new("No process named '#{wanted}' has been started") unless command
|
|
213
|
-
|
|
214
|
-
command
|
|
215
|
-
end
|
|
216
|
-
|
|
217
122
|
# Register command to monitor
|
|
218
123
|
def register_command(cmd)
|
|
219
124
|
registered_commands << cmd
|
|
@@ -1,28 +1,70 @@
|
|
|
1
|
-
require 'aruba/
|
|
1
|
+
require 'aruba/file_size'
|
|
2
2
|
|
|
3
|
-
# Aruba
|
|
4
3
|
module Aruba
|
|
5
|
-
# Platforms
|
|
6
4
|
module Platforms
|
|
7
5
|
# Determinate disk usage
|
|
8
6
|
#
|
|
9
7
|
# @private
|
|
10
8
|
class DetermineDiskUsage
|
|
11
|
-
def call(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
physical_block_size = args.pop
|
|
15
|
-
paths = args
|
|
16
|
-
|
|
17
|
-
size = paths.flatten.map do |p|
|
|
18
|
-
DiskUsageCalculator.new.call(
|
|
19
|
-
p.blocks,
|
|
20
|
-
physical_block_size
|
|
21
|
-
)
|
|
9
|
+
def call(paths)
|
|
10
|
+
size = paths.flatten.map do |path|
|
|
11
|
+
minimum_disk_space_used path
|
|
22
12
|
end.inject(0, &:+)
|
|
23
13
|
|
|
24
14
|
FileSize.new(size)
|
|
25
15
|
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
# TODO: Aruba.config.physical_block_size could be allowed to be nil
|
|
20
|
+
# (So the unit size can be autodetected)
|
|
21
|
+
|
|
22
|
+
# Report minimum disk space used
|
|
23
|
+
#
|
|
24
|
+
# This estimates the minimum bytes allocated by the path.
|
|
25
|
+
#
|
|
26
|
+
# E.g. a 1-byte text file on a typical EXT-3 filesystem takes up 4096 bytes
|
|
27
|
+
# (could be more if it was truncated or less for sparse files).
|
|
28
|
+
#
|
|
29
|
+
# Both `File::Stat` and the `stat()` system call will report 8 `blocks`
|
|
30
|
+
# (each "usually" represents 512 bytes). So 8 * 512 is exactly 4096 bytes.
|
|
31
|
+
#
|
|
32
|
+
# (The "magic" 512 bye implied makes the value of "blocks" so confusing).
|
|
33
|
+
#
|
|
34
|
+
# Currently Aruba allows you to set what's called the `physical_block_size`,
|
|
35
|
+
# which is a bit misleading - it's the "512" value. So if you somehow have a
|
|
36
|
+
# "filesystem unit size" of 8192 (instead of a typical 4KB), set the
|
|
37
|
+
# `physical_block_size` to 1024 (yes, divide by 8: 8192/8 = 1024).
|
|
38
|
+
#
|
|
39
|
+
# Ideally, Aruba should provide e.g. `Aruba.config.fs_allocation_unit`
|
|
40
|
+
# (with 4096 as the default), so you wouldn't have to "divide by 8".
|
|
41
|
+
#
|
|
42
|
+
# (typical_fs_unit / typical_dev_bsize = 4096 / 512 = 8)
|
|
43
|
+
#
|
|
44
|
+
#
|
|
45
|
+
# @return [Integer]
|
|
46
|
+
# Total bytes allocate
|
|
47
|
+
#
|
|
48
|
+
# TODO: this is recommended over the above "blocks"
|
|
49
|
+
def minimum_disk_space_used(path)
|
|
50
|
+
# TODO: replace Aruba.config.physical_block_size
|
|
51
|
+
# with something like Aruba.config.fs_allocation_unit
|
|
52
|
+
dev_bsize = Aruba.config.physical_block_size
|
|
53
|
+
|
|
54
|
+
stat = File::Stat.new(path.to_s)
|
|
55
|
+
|
|
56
|
+
blocks = stat.blocks
|
|
57
|
+
return (blocks * dev_bsize) if blocks
|
|
58
|
+
|
|
59
|
+
typical_fs_unit = 4096
|
|
60
|
+
typical_dev_bsize = 512 # google dev_bsize for more info
|
|
61
|
+
|
|
62
|
+
block_multiplier = typical_fs_unit / typical_dev_bsize
|
|
63
|
+
fs_unit_size = dev_bsize * block_multiplier
|
|
64
|
+
fs_units = (stat.size + fs_unit_size - 1) / fs_unit_size
|
|
65
|
+
fs_units = 1 if fs_units.zero?
|
|
66
|
+
fs_units * fs_unit_size
|
|
67
|
+
end
|
|
26
68
|
end
|
|
27
69
|
end
|
|
28
70
|
end
|
|
@@ -22,11 +22,7 @@ module Aruba
|
|
|
22
22
|
|
|
23
23
|
public
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
def_delegators :@status, *METHODS
|
|
27
|
-
else
|
|
28
|
-
def_delegators :@status, :executable?, :ctime, :atime, :mtime, :size
|
|
29
|
-
end
|
|
25
|
+
def_delegators :@status, *METHODS
|
|
30
26
|
|
|
31
27
|
def initialize(path)
|
|
32
28
|
@status = File::Stat.new(path)
|
|
@@ -34,7 +30,7 @@ module Aruba
|
|
|
34
30
|
|
|
35
31
|
# Return permissions
|
|
36
32
|
def mode
|
|
37
|
-
format(
|
|
33
|
+
format('%o', status.mode)[-4, 4].gsub(/^0*/, '')
|
|
38
34
|
end
|
|
39
35
|
|
|
40
36
|
# Return owner
|
|
@@ -53,14 +49,14 @@ module Aruba
|
|
|
53
49
|
# A hash of values
|
|
54
50
|
def to_h
|
|
55
51
|
{
|
|
56
|
-
:
|
|
57
|
-
:
|
|
58
|
-
:
|
|
59
|
-
:
|
|
60
|
-
:
|
|
61
|
-
:
|
|
62
|
-
:
|
|
63
|
-
:
|
|
52
|
+
owner: owner,
|
|
53
|
+
group: group,
|
|
54
|
+
mode: mode,
|
|
55
|
+
executable: executable?,
|
|
56
|
+
ctime: ctime,
|
|
57
|
+
atime: atime,
|
|
58
|
+
mtime: mtime,
|
|
59
|
+
size: size
|
|
64
60
|
}
|
|
65
61
|
end
|
|
66
62
|
end
|
|
@@ -17,7 +17,7 @@ module Aruba
|
|
|
17
17
|
def initialize(hash, opts)
|
|
18
18
|
@hash = hash
|
|
19
19
|
@opts = {
|
|
20
|
-
:
|
|
20
|
+
sort: true
|
|
21
21
|
}.merge opts
|
|
22
22
|
end
|
|
23
23
|
|
|
@@ -31,16 +31,8 @@ module Aruba
|
|
|
31
31
|
|
|
32
32
|
name_size = longest_key.length
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
hash.each do |k,v|
|
|
38
|
-
rows << format("# %-#{name_size}s => %s", k, v)
|
|
39
|
-
end
|
|
40
|
-
else
|
|
41
|
-
rows = hash.each_with_object([]) do |(k,v), a|
|
|
42
|
-
a << format("# %-#{name_size}s => %s", k, v)
|
|
43
|
-
end
|
|
34
|
+
rows = hash.each_with_object([]) do |(k, v), a|
|
|
35
|
+
a << format("# %-#{name_size}s => %s", k, v)
|
|
44
36
|
end
|
|
45
37
|
|
|
46
38
|
if opts[:sort] == true
|
|
@@ -6,21 +6,17 @@ module Aruba
|
|
|
6
6
|
# Platforms
|
|
7
7
|
module Platforms
|
|
8
8
|
# This is a command which should be run
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
#
|
|
10
|
+
# @private
|
|
11
|
+
class UnixCommandString
|
|
12
|
+
def initialize(command, *arguments)
|
|
13
|
+
@command = command
|
|
14
|
+
@arguments = arguments
|
|
12
15
|
end
|
|
13
16
|
|
|
14
17
|
# Convert to array
|
|
15
18
|
def to_a
|
|
16
|
-
[
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
if RUBY_VERSION < '1.9'
|
|
20
|
-
def to_s
|
|
21
|
-
__getobj__.to_s
|
|
22
|
-
end
|
|
23
|
-
alias inspect to_s
|
|
19
|
+
[@command, *@arguments]
|
|
24
20
|
end
|
|
25
21
|
end
|
|
26
22
|
end
|