aruba-win-fix 0.14.2
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 +7 -0
- data/.document +5 -0
- data/.gitignore +37 -0
- data/.rspec +3 -0
- data/.rubocop.yml +188 -0
- data/.simplecov +34 -0
- data/.travis.yml +47 -0
- data/.yardopts +8 -0
- data/CONTRIBUTING.md +71 -0
- data/Gemfile +83 -0
- data/History.md +579 -0
- data/LICENSE +20 -0
- data/README.md +226 -0
- data/Rakefile +49 -0
- data/TODO.md +13 -0
- data/appveyor.yml +32 -0
- data/aruba.gemspec +48 -0
- data/bin/aruba +7 -0
- data/config/.gitignore +1 -0
- data/cucumber.yml +26 -0
- data/features/.nav +72 -0
- data/features/api/command/find_command.feature +83 -0
- data/features/api/command/last_command_started.feature +50 -0
- data/features/api/command/last_command_stopped.feature +89 -0
- data/features/api/command/run.feature +414 -0
- data/features/api/command/run_simple.feature +242 -0
- data/features/api/command/send_signal.feature +53 -0
- data/features/api/command/stderr.feature +46 -0
- data/features/api/command/stdout.feature +46 -0
- data/features/api/command/stop.feature +131 -0
- data/features/api/command/stop_all_commands.feature +53 -0
- data/features/api/command/terminate_all_commands.feature +53 -0
- data/features/api/command/which.feature +37 -0
- data/features/api/core/expand_path.feature +88 -0
- data/features/api/environment/append_environment_variable.feature +128 -0
- data/features/api/environment/delete_environment_variable.feature +63 -0
- data/features/api/environment/prepend_environment_variable.feature +128 -0
- data/features/api/environment/set_environment_variable.feature +376 -0
- data/features/api/filesystem/cd.feature +184 -0
- data/features/api/filesystem/create_directory.feature +57 -0
- data/features/api/filesystem/disk_usage.feature +152 -0
- data/features/api/filesystem/does_exist.feature +62 -0
- data/features/api/filesystem/fixtures.feature +104 -0
- data/features/api/filesystem/is_absolute.feature +48 -0
- data/features/api/filesystem/is_directory.feature +53 -0
- data/features/api/filesystem/is_file.feature +54 -0
- data/features/api/filesystem/is_relative.feature +48 -0
- data/features/api/filesystem/move.feature +119 -0
- data/features/api/text/extract_text.feature +87 -0
- data/features/api/text/replace_variables.feature +45 -0
- data/features/api/text/sanitize_text.feature +228 -0
- data/features/api/text/unescape_text.feature +127 -0
- data/features/cli/console.feature +52 -0
- data/features/cli/init.feature +79 -0
- data/features/configuration/activate_announcer_on_command_failure.feature +38 -0
- data/features/configuration/command_runtime_environment.feature +129 -0
- data/features/configuration/console_history_file.feature +38 -0
- data/features/configuration/exit_timeout.feature +52 -0
- data/features/configuration/fixtures_directories.feature +38 -0
- data/features/configuration/fixtures_path_prefix.feature +23 -0
- data/features/configuration/home_directory.feature +80 -0
- data/features/configuration/io_timeout.feature +30 -0
- data/features/configuration/keep_ansi.feature +30 -0
- data/features/configuration/log_level.feature +38 -0
- data/features/configuration/physical_block_size.feature +53 -0
- data/features/configuration/remove_ansi_escape_sequences.feature +38 -0
- data/features/configuration/root_directory.feature +30 -0
- data/features/configuration/startup_wait_time.feature +48 -0
- data/features/configuration/usage.feature +159 -0
- data/features/configuration/working_directory.feature +33 -0
- data/features/development/build.feature +15 -0
- data/features/development/test.feature +24 -0
- data/features/getting_started/cleanup.feature +67 -0
- data/features/getting_started/install.feature +8 -0
- data/features/getting_started/run_commands.feature +177 -0
- data/features/getting_started/supported_testing_frameworks.feature +104 -0
- data/features/getting_started/writing_good_feature_tests.feature +38 -0
- data/features/hooks/after/command.feature +44 -0
- data/features/hooks/before/command.feature +71 -0
- data/features/matchers/collection/include_an_object.feature +72 -0
- data/features/matchers/directory/have_sub_directory.feature +110 -0
- data/features/matchers/file/be_a_command_found_in_path.feature +115 -0
- data/features/matchers/file/be_existing_executable.feature +88 -0
- data/features/matchers/file/be_existing_file.feature +82 -0
- data/features/matchers/file/have_file_content.feature +123 -0
- data/features/matchers/file/have_file_size.feature +107 -0
- data/features/matchers/path/be_an_absolute_path.feature +74 -0
- data/features/matchers/path/be_an_existing_path.feature +97 -0
- data/features/matchers/path/have_permissions.feature +118 -0
- data/features/matchers/timeouts.feature +48 -0
- data/features/platforms/jruby.feature +14 -0
- data/features/rspec/integration.feature +179 -0
- data/features/step_definitions/aruba_dev_steps.rb +56 -0
- data/features/step_definitions/hooks.rb +96 -0
- data/features/steps/command/debug.feature +92 -0
- data/features/steps/command/exit_statuses.feature +136 -0
- data/features/steps/command/in_process.feature +485 -0
- data/features/steps/command/interactive.feature +90 -0
- data/features/steps/command/output.feature +588 -0
- data/features/steps/command/run.feature +66 -0
- data/features/steps/command/send_signal.feature +104 -0
- data/features/steps/command/shell.feature +155 -0
- data/features/steps/command/stderr.feature +68 -0
- data/features/steps/command/stdout.feature +109 -0
- data/features/steps/command/stop.feature +313 -0
- data/features/steps/core/announce.feature +283 -0
- data/features/steps/environment/append_environment_variable.feature +52 -0
- data/features/steps/environment/home_variable.feature +62 -0
- data/features/steps/environment/prepend_environment_variable.feature +52 -0
- data/features/steps/environment/set_environment_variable.feature +49 -0
- data/features/steps/filesystem/append_to_file.feature +45 -0
- data/features/steps/filesystem/cd_to_directory.feature +33 -0
- data/features/steps/filesystem/check_file_content.feature +61 -0
- data/features/steps/filesystem/check_permissions_of_file.feature +39 -0
- data/features/steps/filesystem/compare_files.feature +42 -0
- data/features/steps/filesystem/copy.feature +45 -0
- data/features/steps/filesystem/create_directory.feature +57 -0
- data/features/steps/filesystem/create_file.feature +76 -0
- data/features/steps/filesystem/existence_of_directory.feature +57 -0
- data/features/steps/filesystem/existence_of_file.feature +43 -0
- data/features/steps/filesystem/file_content.feature +86 -0
- data/features/steps/filesystem/fixtures.feature +64 -0
- data/features/steps/filesystem/move.feature +45 -0
- data/features/steps/filesystem/non_existence_of_directory.feature +69 -0
- data/features/steps/filesystem/non_existence_of_file.feature +80 -0
- data/features/steps/filesystem/overwrite_file.feature +72 -0
- data/features/steps/filesystem/remove_directory.feature +38 -0
- data/features/steps/filesystem/remove_file.feature +38 -0
- data/features/steps/filesystem/use_fixture.feature +77 -0
- data/features/steps/overview.feature +60 -0
- data/features/support/aruba.rb +7 -0
- data/features/support/env.rb +33 -0
- data/features/support/jruby.rb +5 -0
- data/features/support/simplecov_setup.rb +8 -0
- data/fixtures/cli-app/.gitignore +9 -0
- data/fixtures/cli-app/.rspec +2 -0
- data/fixtures/cli-app/README.md +39 -0
- data/fixtures/cli-app/Rakefile +1 -0
- data/fixtures/cli-app/bin/cli +6 -0
- data/fixtures/cli-app/cli-app.gemspec +26 -0
- data/fixtures/cli-app/features/support/env.rb +1 -0
- data/fixtures/cli-app/lib/cli/app.rb +13 -0
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
- data/fixtures/cli-app/lib/cli/app/version.rb +5 -0
- data/fixtures/cli-app/script/console +14 -0
- data/fixtures/cli-app/spec/spec_helper.rb +9 -0
- data/fixtures/cli-app/spec/support/aruba.rb +1 -0
- data/fixtures/copy/file.txt +1 -0
- data/fixtures/empty-app/.gitignore +9 -0
- data/fixtures/empty-app/.rspec +2 -0
- data/fixtures/empty-app/README.md +24 -0
- data/fixtures/empty-app/Rakefile +1 -0
- data/fixtures/empty-app/cli-app.gemspec +26 -0
- data/fixtures/empty-app/lib/cli/app.rb +13 -0
- data/fixtures/empty-app/lib/cli/app/version.rb +5 -0
- data/fixtures/getting-started-app/.gitignore +4 -0
- data/fixtures/getting-started-app/Gemfile +4 -0
- data/fixtures/getting-started-app/README.md +3 -0
- data/fixtures/getting-started-app/features/support/env.rb +1 -0
- data/fixtures/spawn_process/stderr.sh +3 -0
- data/lib/aruba.rb +1 -0
- data/lib/aruba/api.rb +34 -0
- data/lib/aruba/api/command.rb +307 -0
- data/lib/aruba/api/core.rb +191 -0
- data/lib/aruba/api/deprecated.rb +897 -0
- data/lib/aruba/api/environment.rb +89 -0
- data/lib/aruba/api/filesystem.rb +392 -0
- data/lib/aruba/api/rvm.rb +44 -0
- data/lib/aruba/api/text.rb +56 -0
- data/lib/aruba/aruba_path.rb +133 -0
- data/lib/aruba/basic_configuration.rb +240 -0
- data/lib/aruba/basic_configuration/option.rb +32 -0
- data/lib/aruba/cli.rb +26 -0
- data/lib/aruba/colorizer.rb +108 -0
- data/lib/aruba/command.rb +74 -0
- data/lib/aruba/config.rb +108 -0
- data/lib/aruba/config/jruby.rb +17 -0
- data/lib/aruba/config_wrapper.rb +58 -0
- data/lib/aruba/console.rb +70 -0
- data/lib/aruba/console/help.rb +35 -0
- data/lib/aruba/contracts/absolute_path.rb +20 -0
- data/lib/aruba/contracts/enum.rb +26 -0
- data/lib/aruba/contracts/is_power_of_two.rb +22 -0
- data/lib/aruba/contracts/relative_path.rb +20 -0
- data/lib/aruba/cucumber.rb +13 -0
- data/lib/aruba/cucumber/command.rb +422 -0
- data/lib/aruba/cucumber/core.rb +5 -0
- data/lib/aruba/cucumber/environment.rb +42 -0
- data/lib/aruba/cucumber/file.rb +201 -0
- data/lib/aruba/cucumber/hooks.rb +160 -0
- data/lib/aruba/cucumber/rvm.rb +3 -0
- data/lib/aruba/cucumber/testing_frameworks.rb +95 -0
- data/lib/aruba/errors.rb +37 -0
- data/lib/aruba/event_bus.rb +59 -0
- data/lib/aruba/event_bus/name_resolver.rb +168 -0
- data/lib/aruba/events.rb +39 -0
- data/lib/aruba/extensions/string/strip.rb +25 -0
- data/lib/aruba/file_size.rb +63 -0
- data/lib/aruba/generators/script_file.rb +46 -0
- data/lib/aruba/hooks.rb +56 -0
- data/lib/aruba/in_config_wrapper.rb +24 -0
- data/lib/aruba/in_process.rb +14 -0
- data/lib/aruba/initializer.rb +222 -0
- data/lib/aruba/jruby.rb +4 -0
- data/lib/aruba/matchers/base/base_matcher.rb +96 -0
- data/lib/aruba/matchers/base/object_formatter.rb +114 -0
- data/lib/aruba/matchers/collection.rb +1 -0
- data/lib/aruba/matchers/collection/all.rb +11 -0
- data/lib/aruba/matchers/collection/include_an_object.rb +122 -0
- data/lib/aruba/matchers/command.rb +1 -0
- data/lib/aruba/matchers/command/be_successfully_executed.rb +34 -0
- data/lib/aruba/matchers/command/have_exit_status.rb +38 -0
- data/lib/aruba/matchers/command/have_finished_in_time.rb +37 -0
- data/lib/aruba/matchers/command/have_output.rb +36 -0
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +32 -0
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +32 -0
- data/lib/aruba/matchers/command/have_output_size.rb +28 -0
- data/lib/aruba/matchers/directory.rb +1 -0
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +38 -0
- data/lib/aruba/matchers/directory/have_sub_directory.rb +53 -0
- data/lib/aruba/matchers/environment.rb +1 -0
- data/lib/aruba/matchers/file.rb +1 -0
- data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +36 -0
- data/lib/aruba/matchers/file/be_an_existing_executable.rb +37 -0
- data/lib/aruba/matchers/file/be_an_existing_file.rb +38 -0
- data/lib/aruba/matchers/file/have_file_content.rb +62 -0
- data/lib/aruba/matchers/file/have_file_size.rb +47 -0
- data/lib/aruba/matchers/file/have_same_file_content.rb +48 -0
- data/lib/aruba/matchers/path.rb +1 -0
- data/lib/aruba/matchers/path/a_path_matching_pattern.rb +25 -0
- data/lib/aruba/matchers/path/be_an_absolute_path.rb +36 -0
- data/lib/aruba/matchers/path/be_an_existing_path.rb +37 -0
- data/lib/aruba/matchers/path/have_permissions.rb +64 -0
- data/lib/aruba/matchers/path/match_path_pattern.rb +41 -0
- data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +25 -0
- data/lib/aruba/matchers/string.rb +1 -0
- data/lib/aruba/matchers/string/include_output_string.rb +36 -0
- data/lib/aruba/matchers/string/match_output_string.rb +37 -0
- data/lib/aruba/matchers/string/output_string_eq.rb +35 -0
- data/lib/aruba/platform.rb +25 -0
- data/lib/aruba/platforms/announcer.rb +232 -0
- data/lib/aruba/platforms/aruba_file_creator.rb +35 -0
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +35 -0
- data/lib/aruba/platforms/aruba_logger.rb +81 -0
- data/lib/aruba/platforms/command_monitor.rb +229 -0
- data/lib/aruba/platforms/determine_disk_usage.rb +28 -0
- data/lib/aruba/platforms/determine_file_size.rb +22 -0
- data/lib/aruba/platforms/disk_usage_calculator.rb +20 -0
- data/lib/aruba/platforms/filesystem_status.rb +68 -0
- data/lib/aruba/platforms/local_environment.rb +29 -0
- data/lib/aruba/platforms/simple_table.rb +54 -0
- data/lib/aruba/platforms/unix_command_string.rb +27 -0
- data/lib/aruba/platforms/unix_environment_variables.rb +220 -0
- data/lib/aruba/platforms/unix_platform.rb +276 -0
- data/lib/aruba/platforms/unix_which.rb +85 -0
- data/lib/aruba/platforms/windows_command_string.rb +31 -0
- data/lib/aruba/platforms/windows_environment_variables.rb +89 -0
- data/lib/aruba/platforms/windows_platform.rb +42 -0
- data/lib/aruba/platforms/windows_which.rb +106 -0
- data/lib/aruba/processes/basic_process.rb +143 -0
- data/lib/aruba/processes/debug_process.rb +69 -0
- data/lib/aruba/processes/in_process.rb +125 -0
- data/lib/aruba/processes/spawn_process.rb +278 -0
- data/lib/aruba/reporting.rb +126 -0
- data/lib/aruba/rspec.rb +107 -0
- data/lib/aruba/runtime.rb +96 -0
- data/lib/aruba/setup.rb +90 -0
- data/lib/aruba/spawn_process.rb +11 -0
- data/lib/aruba/version.rb +3 -0
- data/script/bootstrap +28 -0
- data/script/console +16 -0
- data/script/test +3 -0
- data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
- data/spec/aruba/api/environment/set_env_spec.rb +42 -0
- data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
- data/spec/aruba/api/runtime_spec.rb +28 -0
- data/spec/aruba/api_spec.rb +1209 -0
- data/spec/aruba/aruba_path_spec.rb +103 -0
- data/spec/aruba/basic_configuration_spec.rb +5 -0
- data/spec/aruba/configuration_spec.rb +5 -0
- data/spec/aruba/hooks_spec.rb +17 -0
- data/spec/aruba/in_config_wrapper_spec.rb +25 -0
- data/spec/aruba/jruby_spec.rb +55 -0
- data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
- data/spec/aruba/matchers/command_spec.rb +174 -0
- data/spec/aruba/matchers/directory_spec.rb +57 -0
- data/spec/aruba/matchers/file_spec.rb +127 -0
- data/spec/aruba/matchers/path_spec.rb +88 -0
- data/spec/aruba/platform/simple_table_spec.rb +23 -0
- data/spec/aruba/platform/windows_environment_variables_spec.rb +500 -0
- data/spec/aruba/rspec_spec.rb +15 -0
- data/spec/aruba/runtime_spec.rb +29 -0
- data/spec/aruba/spawn_process_spec.rb +60 -0
- data/spec/event_bus/name_resolver_spec.rb +68 -0
- data/spec/event_bus_spec.rb +160 -0
- data/spec/spec_helper.rb +23 -0
- data/spec/support/configs/.keep +0 -0
- data/spec/support/configs/aruba.rb +5 -0
- data/spec/support/configs/pry.rb +3 -0
- data/spec/support/configs/rspec.rb +15 -0
- data/spec/support/helpers/.keep +0 -0
- data/spec/support/helpers/reporting.rb +44 -0
- data/spec/support/matchers/.keep +0 -0
- data/spec/support/matchers/option.rb +35 -0
- data/spec/support/shared_contexts/.keep +0 -0
- data/spec/support/shared_contexts/aruba.rb +48 -0
- data/spec/support/shared_examples/.keep +0 -0
- data/spec/support/shared_examples/configuration.rb +116 -0
- data/spec/support/shared_examples/directory.rb +7 -0
- data/spec/support/shared_examples/file.rb +7 -0
- data/templates/css/console.css +24 -0
- data/templates/css/filesystem.css +42 -0
- data/templates/css/pygments-autumn.css +59 -0
- data/templates/files.erb +14 -0
- data/templates/images/LICENSE +22 -0
- 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 +20 -0
- data/templates/js/filesystem.js +5 -0
- data/templates/js/jquery-1.11.3.min.js +5 -0
- data/templates/main.erb +34 -0
- metadata +629 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'aruba/api/environment'
|
|
2
|
+
require 'aruba/api/command'
|
|
3
|
+
|
|
4
|
+
# Aruba
|
|
5
|
+
module Aruba
|
|
6
|
+
# Api
|
|
7
|
+
module Api
|
|
8
|
+
# RVM
|
|
9
|
+
#
|
|
10
|
+
# @deprecated
|
|
11
|
+
module Rvm
|
|
12
|
+
# Use a clean rvm gemset
|
|
13
|
+
#
|
|
14
|
+
# Please make sure that you've got [rvm](http://rvm.io/) installed.
|
|
15
|
+
#
|
|
16
|
+
# @param [String] gemset
|
|
17
|
+
# The name of the gemset to be used
|
|
18
|
+
def use_clean_gemset(gemset)
|
|
19
|
+
run_simple(%{rvm gemset create "#{gemset}"}, true)
|
|
20
|
+
if all_stdout =~ /'#{gemset}' gemset created \((.*)\)\./
|
|
21
|
+
gem_home = Regexp.last_match[1]
|
|
22
|
+
set_environment_variable('GEM_HOME', gem_home)
|
|
23
|
+
set_environment_variable('GEM_PATH', gem_home)
|
|
24
|
+
set_environment_variable('BUNDLE_PATH', gem_home)
|
|
25
|
+
|
|
26
|
+
paths = (ENV['PATH'] || "").split(File::PATH_SEPARATOR)
|
|
27
|
+
paths.unshift(File.join(gem_home, 'bin'))
|
|
28
|
+
set_environment_variable('PATH', paths.uniq.join(File::PATH_SEPARATOR))
|
|
29
|
+
|
|
30
|
+
run_simple("gem install bundler", true)
|
|
31
|
+
else
|
|
32
|
+
raise "I didn't understand rvm's output: #{all_stdout}"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Unset variables used by bundler
|
|
37
|
+
def unset_bundler_env_vars
|
|
38
|
+
%w[RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE].each do |key|
|
|
39
|
+
set_environment_variable(key, nil)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# Api
|
|
4
|
+
module Api
|
|
5
|
+
# Text manipulation
|
|
6
|
+
module Text
|
|
7
|
+
# Unescape text
|
|
8
|
+
#
|
|
9
|
+
# '\n' => "\n"
|
|
10
|
+
# '\e' => "\e"
|
|
11
|
+
# '\033' => "\e"
|
|
12
|
+
# '\"' => '"'
|
|
13
|
+
#
|
|
14
|
+
# @param [#to_s] text
|
|
15
|
+
# Input
|
|
16
|
+
def unescape_text(text)
|
|
17
|
+
text.gsub('\n', "\n").gsub('\"', '"').gsub('\e', "\e").gsub('\033', "\e").gsub('\016', "\016").gsub('\017', "\017").gsub('\t', "\t")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Remove ansi characters from text
|
|
21
|
+
#
|
|
22
|
+
# @param [#to_s] text
|
|
23
|
+
# Input
|
|
24
|
+
def extract_text(text)
|
|
25
|
+
if Aruba::VERSION < '1'
|
|
26
|
+
text.gsub(/(?:\e|\033)\[\d+(?>(;\d+)*)m/, '')
|
|
27
|
+
else
|
|
28
|
+
text.gsub(/(?:\e|\033)\[\d+(?>(;\d+)*)m/, '').gsub(/\\\[|\\\]/, '').gsub(/\007|\016|\017/, '')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Unescape special characters and remove ANSI characters
|
|
33
|
+
#
|
|
34
|
+
# @param [#to_s] text
|
|
35
|
+
# The text to sanitize
|
|
36
|
+
def sanitize_text(text)
|
|
37
|
+
text = unescape_text(text)
|
|
38
|
+
text = extract_text(text) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
|
|
39
|
+
|
|
40
|
+
text.chomp
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @experimental
|
|
44
|
+
#
|
|
45
|
+
# Replace variables in command string
|
|
46
|
+
#
|
|
47
|
+
# @param [#to_s] text
|
|
48
|
+
# The text to parse
|
|
49
|
+
def replace_variables(text)
|
|
50
|
+
text = text.gsub(/<pid-last-command-started>/, last_command_started.pid.to_s) if text.include? '<pid-last-command-started>'
|
|
51
|
+
|
|
52
|
+
text
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require 'pathname'
|
|
2
|
+
require 'delegate'
|
|
3
|
+
|
|
4
|
+
require 'aruba/file_size'
|
|
5
|
+
|
|
6
|
+
# Aruba
|
|
7
|
+
module Aruba
|
|
8
|
+
# Pathname for aruba files and directories
|
|
9
|
+
#
|
|
10
|
+
# @private
|
|
11
|
+
class ArubaPath < Delegator
|
|
12
|
+
def initialize(path)
|
|
13
|
+
obj = [path.to_s].flatten
|
|
14
|
+
|
|
15
|
+
super obj
|
|
16
|
+
|
|
17
|
+
@delegate_sd_obj = obj
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Get path
|
|
21
|
+
def __getobj__
|
|
22
|
+
::Pathname.new(::File.join(*@delegate_sd_obj))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Set path
|
|
26
|
+
def __setobj__(obj)
|
|
27
|
+
@delegate_sd_obj = [obj.to_s].flatten
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Add directory/file to path
|
|
31
|
+
#
|
|
32
|
+
# @param [String] p
|
|
33
|
+
# The path to be added
|
|
34
|
+
#
|
|
35
|
+
# @example
|
|
36
|
+
# path = ArubaPath.new 'path/to/dir.d'
|
|
37
|
+
# path << 'subdir.d
|
|
38
|
+
# # or path.push 'subdir.d
|
|
39
|
+
# puts path
|
|
40
|
+
# # => path/to/dir.d/subdir.d
|
|
41
|
+
def push(p)
|
|
42
|
+
@delegate_sd_obj << p
|
|
43
|
+
end
|
|
44
|
+
alias << push
|
|
45
|
+
|
|
46
|
+
# Remove last component of path
|
|
47
|
+
#
|
|
48
|
+
# @example
|
|
49
|
+
# path = ArubaPath.new 'path/to/dir.d'
|
|
50
|
+
# path.pop
|
|
51
|
+
# puts path
|
|
52
|
+
# # => path/to
|
|
53
|
+
def pop
|
|
54
|
+
@delegate_sd_obj.pop
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
if RUBY_VERSION < '1.9'
|
|
58
|
+
def to_s
|
|
59
|
+
__getobj__.to_s
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def relative?
|
|
63
|
+
!(%r{\A/} === to_s)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def absolute?
|
|
67
|
+
(%r{\A/} === to_s)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def to_ary
|
|
71
|
+
to_a
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# How many parts has the file name
|
|
76
|
+
#
|
|
77
|
+
# @return [Integer]
|
|
78
|
+
# The count of file name parts
|
|
79
|
+
#
|
|
80
|
+
# @example
|
|
81
|
+
#
|
|
82
|
+
# path = ArubaPath.new('path/to/file.txt')
|
|
83
|
+
# path.depth # => 3
|
|
84
|
+
#
|
|
85
|
+
def depth
|
|
86
|
+
if RUBY_VERSION < '1.9'
|
|
87
|
+
items = []
|
|
88
|
+
__getobj__.each_filename { |f| items << f }
|
|
89
|
+
|
|
90
|
+
items.size
|
|
91
|
+
else
|
|
92
|
+
__getobj__.each_filename.to_a.size
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Path ends with string
|
|
97
|
+
#
|
|
98
|
+
# @param [String] string
|
|
99
|
+
# The string to check
|
|
100
|
+
def end_with?(string)
|
|
101
|
+
to_s.end_with? string
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Path starts with string
|
|
105
|
+
#
|
|
106
|
+
# @param [String] string
|
|
107
|
+
# The string to check
|
|
108
|
+
def start_with?(string)
|
|
109
|
+
to_s.start_with? string
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Return string at index
|
|
113
|
+
#
|
|
114
|
+
# @param [Integer, Range] index
|
|
115
|
+
def [](index)
|
|
116
|
+
if RUBY_VERSION < '1.9'
|
|
117
|
+
to_s.chars.to_a[index].to_a.join('')
|
|
118
|
+
else
|
|
119
|
+
to_s[index]
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Report count of blocks allocated on disk
|
|
124
|
+
#
|
|
125
|
+
# This reports the amount of blocks which are allocated by the path.
|
|
126
|
+
#
|
|
127
|
+
# @return [Integer]
|
|
128
|
+
# The count of blocks on disk
|
|
129
|
+
def blocks
|
|
130
|
+
File::Stat.new(to_s).blocks
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
require 'contracts'
|
|
2
|
+
require 'aruba/basic_configuration/option'
|
|
3
|
+
require 'aruba/in_config_wrapper'
|
|
4
|
+
|
|
5
|
+
# Aruba
|
|
6
|
+
module Aruba
|
|
7
|
+
# Basic configuration for Aruba
|
|
8
|
+
#
|
|
9
|
+
# @private
|
|
10
|
+
class BasicConfiguration
|
|
11
|
+
include Contracts
|
|
12
|
+
|
|
13
|
+
class << self
|
|
14
|
+
def known_options
|
|
15
|
+
@known_options ||= {}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Define an option reader
|
|
19
|
+
#
|
|
20
|
+
# @param [Symbol] name
|
|
21
|
+
# The name of the reader
|
|
22
|
+
#
|
|
23
|
+
# @param [Hash] opts
|
|
24
|
+
# Options
|
|
25
|
+
#
|
|
26
|
+
# @option [Class, Module] contract
|
|
27
|
+
# The contract for the option
|
|
28
|
+
#
|
|
29
|
+
# @option [Object] default
|
|
30
|
+
# The default value
|
|
31
|
+
def option_reader(name, opts = {})
|
|
32
|
+
contract = opts[:contract]
|
|
33
|
+
default = opts[:default]
|
|
34
|
+
|
|
35
|
+
fail ArgumentError, 'Either use block or default value' if block_given? && default
|
|
36
|
+
fail ArgumentError, 'contract-options is required' if contract.nil?
|
|
37
|
+
|
|
38
|
+
Contract contract
|
|
39
|
+
add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)
|
|
40
|
+
|
|
41
|
+
define_method(name) { find_option(name).value }
|
|
42
|
+
|
|
43
|
+
self
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Define an option reader and writer
|
|
47
|
+
#
|
|
48
|
+
# @param [Symbol] name
|
|
49
|
+
# The name of the reader
|
|
50
|
+
#
|
|
51
|
+
# @param [Hash] opts
|
|
52
|
+
# Options
|
|
53
|
+
#
|
|
54
|
+
# @option [Class, Module] contract
|
|
55
|
+
# The contract for the option
|
|
56
|
+
#
|
|
57
|
+
# @option [Object] default
|
|
58
|
+
# The default value
|
|
59
|
+
#
|
|
60
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
61
|
+
def option_accessor(name, opts = {})
|
|
62
|
+
contract = opts[:contract]
|
|
63
|
+
default = opts[:default]
|
|
64
|
+
|
|
65
|
+
fail ArgumentError, 'Either use block or default value' if block_given? && default
|
|
66
|
+
# fail ArgumentError, 'Either use block or default value' if !block_given? && default.nil? && default.to_s.empty?
|
|
67
|
+
fail ArgumentError, 'contract-options is required' if contract.nil?
|
|
68
|
+
|
|
69
|
+
# Add writer
|
|
70
|
+
add_option(name, block_given? ? yield(InConfigWrapper.new(known_options)) : default)
|
|
71
|
+
|
|
72
|
+
Contract contract
|
|
73
|
+
define_method("#{name}=") { |v| find_option(name).value = v }
|
|
74
|
+
|
|
75
|
+
# Add reader
|
|
76
|
+
option_reader name, :contract => { None => contract.values.first }
|
|
77
|
+
end
|
|
78
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
|
79
|
+
|
|
80
|
+
private
|
|
81
|
+
|
|
82
|
+
def add_option(name, value = nil)
|
|
83
|
+
return if known_options.key?(name)
|
|
84
|
+
|
|
85
|
+
known_options[name] = Option.new(:name => name, :value => value)
|
|
86
|
+
|
|
87
|
+
self
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
protected
|
|
92
|
+
|
|
93
|
+
attr_accessor :local_options
|
|
94
|
+
attr_writer :hooks
|
|
95
|
+
|
|
96
|
+
# attr_reader :hooks
|
|
97
|
+
|
|
98
|
+
public
|
|
99
|
+
|
|
100
|
+
# Create configuration
|
|
101
|
+
def initialize
|
|
102
|
+
initialize_configuration
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# @yield [Configuration]
|
|
106
|
+
#
|
|
107
|
+
# Yields self
|
|
108
|
+
def configure
|
|
109
|
+
yield self if block_given?
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Reset configuration
|
|
113
|
+
def reset
|
|
114
|
+
initialize_configuration
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Make deep dup copy of configuration
|
|
118
|
+
def make_copy
|
|
119
|
+
obj = self.dup
|
|
120
|
+
obj.local_options = Marshal.load(Marshal.dump(local_options))
|
|
121
|
+
obj.hooks = @hooks
|
|
122
|
+
|
|
123
|
+
obj
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Get access to hooks
|
|
127
|
+
def hooks
|
|
128
|
+
# rubocop:disable Metrics/LineLength
|
|
129
|
+
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.'
|
|
130
|
+
# rubocop:enable Metrics/LineLength
|
|
131
|
+
|
|
132
|
+
@hooks
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# @deprecated
|
|
136
|
+
def before_cmd(&block)
|
|
137
|
+
Aruba.platform.deprecated 'The use of the "#before_cmd"-hook is deprecated. Please define with "#before(:command) {}" instead'
|
|
138
|
+
|
|
139
|
+
before(:command, &block)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Define or run before-hook
|
|
143
|
+
#
|
|
144
|
+
# @param [Symbol, String] name
|
|
145
|
+
# The name of the hook
|
|
146
|
+
#
|
|
147
|
+
# @param [Proc] context
|
|
148
|
+
# The context a hook should run in. This is a runtime only option.
|
|
149
|
+
#
|
|
150
|
+
# @param [Array] args
|
|
151
|
+
# Arguments for the run of hook. This is a runtime only option.
|
|
152
|
+
#
|
|
153
|
+
# @yield
|
|
154
|
+
# The code block which should be run. This is a configure time only option
|
|
155
|
+
def before(name, context = proc {}, *args, &block)
|
|
156
|
+
name = format('%s_%s', 'before_', name.to_s).to_sym
|
|
157
|
+
|
|
158
|
+
if block_given?
|
|
159
|
+
@hooks.append(name, block)
|
|
160
|
+
|
|
161
|
+
self
|
|
162
|
+
else
|
|
163
|
+
@hooks.execute(name, context, *args)
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Define or run after-hook
|
|
168
|
+
#
|
|
169
|
+
# @param [Symbol, String] name
|
|
170
|
+
# The name of the hook
|
|
171
|
+
#
|
|
172
|
+
# @param [Proc] context
|
|
173
|
+
# The context a hook should run in. This is a runtime only option.
|
|
174
|
+
#
|
|
175
|
+
# @param [Array] args
|
|
176
|
+
# Arguments for the run of hook. This is a runtime only option.
|
|
177
|
+
#
|
|
178
|
+
# @yield
|
|
179
|
+
# The code block which should be run. This is a configure time only option
|
|
180
|
+
def after(name, context = proc {}, *args, &block)
|
|
181
|
+
name = format('%s_%s', 'after_', name.to_s).to_sym
|
|
182
|
+
|
|
183
|
+
if block_given?
|
|
184
|
+
@hooks.append(name, block)
|
|
185
|
+
|
|
186
|
+
self
|
|
187
|
+
else
|
|
188
|
+
@hooks.execute(name, context, *args)
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# Check if before-hook <name> is defined
|
|
193
|
+
def before?(name)
|
|
194
|
+
name = format('%s_%s', 'before_', name.to_s).to_sym
|
|
195
|
+
|
|
196
|
+
@hooks.exist? name
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Check if after-hook <name> is defined
|
|
200
|
+
def after?(name)
|
|
201
|
+
name = format('%s_%s', 'after_', name.to_s).to_sym
|
|
202
|
+
|
|
203
|
+
@hooks.exist? name
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# Check if <name> is option
|
|
207
|
+
#
|
|
208
|
+
# @param [String, Symbol] name
|
|
209
|
+
# The name of the option
|
|
210
|
+
def option?(name)
|
|
211
|
+
local_options.any? { |_, v| v.name == name.to_sym }
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def ==(other)
|
|
215
|
+
local_options.values.map(&:value) == other.local_options.values.map(&:value)
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
# Set if name is option
|
|
219
|
+
def set_if_option(name, *args)
|
|
220
|
+
if RUBY_VERSION < '1.9'
|
|
221
|
+
send("#{name}=".to_sym, *args) if option? name
|
|
222
|
+
else
|
|
223
|
+
public_send("#{name}=".to_sym, *args) if option? name
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
private
|
|
228
|
+
|
|
229
|
+
def initialize_configuration
|
|
230
|
+
@local_options = Marshal.load(Marshal.dump(self.class.known_options))
|
|
231
|
+
@hooks = Hooks.new
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def find_option(name)
|
|
235
|
+
fail NotImplementedError, %(Unknown option "#{name}") unless option? name
|
|
236
|
+
|
|
237
|
+
local_options[name]
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|