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,29 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# Platforms
|
|
4
|
+
module Platforms
|
|
5
|
+
# Local environemnt
|
|
6
|
+
#
|
|
7
|
+
# Wraps logic to make enviroment local and restorable
|
|
8
|
+
class LocalEnvironment
|
|
9
|
+
# Run in environment
|
|
10
|
+
#
|
|
11
|
+
# @param [Hash] env
|
|
12
|
+
# The environment
|
|
13
|
+
#
|
|
14
|
+
# @yield
|
|
15
|
+
# The block of code which should with local ENV
|
|
16
|
+
def call(env, &block)
|
|
17
|
+
old_env = ENV.to_hash.dup
|
|
18
|
+
|
|
19
|
+
ENV.clear
|
|
20
|
+
ENV.update env
|
|
21
|
+
|
|
22
|
+
yield if block_given?
|
|
23
|
+
ensure
|
|
24
|
+
ENV.clear
|
|
25
|
+
ENV.update old_env
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# Platforms
|
|
4
|
+
module Platforms
|
|
5
|
+
# Generate simple table
|
|
6
|
+
class SimpleTable
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
attr_reader :hash, :opts
|
|
10
|
+
|
|
11
|
+
public
|
|
12
|
+
|
|
13
|
+
# Create
|
|
14
|
+
#
|
|
15
|
+
# @param [Hash] hash
|
|
16
|
+
# Input
|
|
17
|
+
def initialize(hash, opts)
|
|
18
|
+
@hash = hash
|
|
19
|
+
@opts = {
|
|
20
|
+
:sort => true
|
|
21
|
+
}.merge opts
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Generate table
|
|
25
|
+
#
|
|
26
|
+
# @return [String]
|
|
27
|
+
# The table
|
|
28
|
+
def to_s
|
|
29
|
+
longest_key = hash.keys.map(&:to_s).max_by(&:length)
|
|
30
|
+
return '' if longest_key.nil?
|
|
31
|
+
|
|
32
|
+
name_size = longest_key.length
|
|
33
|
+
|
|
34
|
+
if RUBY_VERSION < '2'
|
|
35
|
+
rows = []
|
|
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
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
if opts[:sort] == true
|
|
47
|
+
rows.sort.join("\n")
|
|
48
|
+
else
|
|
49
|
+
rows.join("\n")
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'delegate'
|
|
2
|
+
require 'shellwords'
|
|
3
|
+
|
|
4
|
+
# Aruba
|
|
5
|
+
module Aruba
|
|
6
|
+
# Platforms
|
|
7
|
+
module Platforms
|
|
8
|
+
# This is a command which should be run
|
|
9
|
+
class UnixCommandString < SimpleDelegator
|
|
10
|
+
def initialize(cmd)
|
|
11
|
+
__setobj__ cmd
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Convert to array
|
|
15
|
+
def to_a
|
|
16
|
+
Shellwords.split __getobj__
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
if RUBY_VERSION < '1.9'
|
|
20
|
+
def to_s
|
|
21
|
+
__getobj__.to_s
|
|
22
|
+
end
|
|
23
|
+
alias inspect to_s
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# Aruba
|
|
2
|
+
module Aruba
|
|
3
|
+
# Platforms
|
|
4
|
+
module Platforms
|
|
5
|
+
# Abstract environment variables
|
|
6
|
+
class UnixEnvironmentVariables
|
|
7
|
+
# Update environment
|
|
8
|
+
class UpdateAction
|
|
9
|
+
attr_reader :other_env, :block
|
|
10
|
+
|
|
11
|
+
def initialize(other_env, &block)
|
|
12
|
+
@other_env = other_env
|
|
13
|
+
|
|
14
|
+
@other_env = if RUBY_VERSION <= '1.9.3'
|
|
15
|
+
# rubocop:disable Style/EachWithObject
|
|
16
|
+
@other_env.to_hash.inject({}) { |a, (k, v)| a[k] = v.to_s; a }
|
|
17
|
+
# rubocop:enable Style/EachWithObject
|
|
18
|
+
else
|
|
19
|
+
@other_env.to_h.each_with_object({}) { |(k, v), a| a[k] = v.to_s }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
@block = if block_given?
|
|
23
|
+
block
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def call(env)
|
|
28
|
+
if block
|
|
29
|
+
env.update(other_env, &block)
|
|
30
|
+
else
|
|
31
|
+
env.update(other_env)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Remove variables from environment
|
|
37
|
+
class RemoveAction
|
|
38
|
+
attr_reader :variables
|
|
39
|
+
|
|
40
|
+
def initialize(variables)
|
|
41
|
+
@variables = Array(variables)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def call(env)
|
|
45
|
+
variables.each { |v| env.delete v }
|
|
46
|
+
|
|
47
|
+
env
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# We need to use this, because `nil` is a valid value as default
|
|
52
|
+
UNDEFINED = Object.new.freeze
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
attr_reader :actions, :env
|
|
57
|
+
|
|
58
|
+
public
|
|
59
|
+
|
|
60
|
+
def initialize(env = ENV)
|
|
61
|
+
@actions = []
|
|
62
|
+
|
|
63
|
+
@env = if RUBY_VERSION < '2.0'
|
|
64
|
+
env.to_hash
|
|
65
|
+
else
|
|
66
|
+
env.to_h
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Update environment with other en
|
|
71
|
+
#
|
|
72
|
+
# @param [#to_hash, #to_h] other_env
|
|
73
|
+
# Another environment object or hash
|
|
74
|
+
#
|
|
75
|
+
# @yield
|
|
76
|
+
# Pass block to env
|
|
77
|
+
def update(other_env)
|
|
78
|
+
actions << UpdateAction.new(other_env)
|
|
79
|
+
|
|
80
|
+
UnixEnvironmentVariables.new(to_h)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Fetch variable from environment
|
|
84
|
+
#
|
|
85
|
+
# @param [#to_s] name
|
|
86
|
+
# The name of the variable
|
|
87
|
+
#
|
|
88
|
+
# @param [Object] default
|
|
89
|
+
# The default value used, if the variable is not defined
|
|
90
|
+
def fetch(name, default = UNDEFINED)
|
|
91
|
+
if default == UNDEFINED
|
|
92
|
+
to_h.fetch name.to_s
|
|
93
|
+
else
|
|
94
|
+
to_h.fetch name.to_s, default
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Check if variable exist
|
|
99
|
+
#
|
|
100
|
+
# @param [#to_s] name
|
|
101
|
+
# The name of the variable
|
|
102
|
+
def key?(name)
|
|
103
|
+
to_h.key? name.to_s
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Get value of variable
|
|
107
|
+
#
|
|
108
|
+
# @param [#to_s] name
|
|
109
|
+
# The name of the variable
|
|
110
|
+
def [](name)
|
|
111
|
+
to_h[name.to_s]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Set value of variable
|
|
115
|
+
#
|
|
116
|
+
# @param [#to_s] name
|
|
117
|
+
# The name of the variable
|
|
118
|
+
#
|
|
119
|
+
# @param [#to_s] value
|
|
120
|
+
# The value of the variable
|
|
121
|
+
def []=(name, value)
|
|
122
|
+
value = value.to_s
|
|
123
|
+
|
|
124
|
+
actions << UpdateAction.new(name.to_s => value)
|
|
125
|
+
|
|
126
|
+
value
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Append value to variable
|
|
130
|
+
#
|
|
131
|
+
# @param [#to_s] name
|
|
132
|
+
# The name of the variable
|
|
133
|
+
#
|
|
134
|
+
# @param [#to_s] value
|
|
135
|
+
# The value of the variable
|
|
136
|
+
def append(name, value)
|
|
137
|
+
name = name.to_s
|
|
138
|
+
value = self[name].to_s + value.to_s
|
|
139
|
+
|
|
140
|
+
actions << UpdateAction.new(name => value )
|
|
141
|
+
|
|
142
|
+
value
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Prepend value to variable
|
|
146
|
+
#
|
|
147
|
+
# @param [#to_s] name
|
|
148
|
+
# The name of the variable
|
|
149
|
+
#
|
|
150
|
+
# @param [#to_s] value
|
|
151
|
+
# The value of the variable
|
|
152
|
+
def prepend(name, value)
|
|
153
|
+
name = name.to_s
|
|
154
|
+
value = value.to_s + self[name].to_s
|
|
155
|
+
|
|
156
|
+
actions << UpdateAction.new(name => value)
|
|
157
|
+
|
|
158
|
+
value
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Delete variable
|
|
162
|
+
#
|
|
163
|
+
# @param [#to_s] name
|
|
164
|
+
# The name of the variable
|
|
165
|
+
def delete(name)
|
|
166
|
+
# Rescue value, before it is deleted
|
|
167
|
+
value = to_h[name.to_s]
|
|
168
|
+
|
|
169
|
+
actions << RemoveAction.new(name.to_s)
|
|
170
|
+
|
|
171
|
+
value
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Pass on checks
|
|
175
|
+
def method_missing(name, *args, &block)
|
|
176
|
+
super unless to_h.respond_to? name
|
|
177
|
+
|
|
178
|
+
to_h.send name, *args, &block
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# Check for respond_to
|
|
182
|
+
def respond_to_missing?(name, _private)
|
|
183
|
+
to_h.respond_to? name
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Convert to hash
|
|
187
|
+
#
|
|
188
|
+
# @return [Hash]
|
|
189
|
+
# A new hash from environment
|
|
190
|
+
def to_h
|
|
191
|
+
if RUBY_VERSION < '2.0'
|
|
192
|
+
Marshal.load(Marshal.dump(prepared_environment.to_hash))
|
|
193
|
+
else
|
|
194
|
+
Marshal.load(Marshal.dump(prepared_environment.to_h))
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Reset environment
|
|
199
|
+
def clear
|
|
200
|
+
value = to_h
|
|
201
|
+
|
|
202
|
+
actions.clear
|
|
203
|
+
|
|
204
|
+
value
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
private
|
|
208
|
+
|
|
209
|
+
def prepared_environment
|
|
210
|
+
if RUBY_VERSION <= '1.9.3'
|
|
211
|
+
# rubocop:disable Style/EachWithObject
|
|
212
|
+
actions.inject(ENV.to_hash.merge(env)) { |a, e| e.call(a) }
|
|
213
|
+
# rubocop:enable Style/EachWithObject
|
|
214
|
+
else
|
|
215
|
+
actions.each_with_object(ENV.to_hash.merge(env)) { |e, a| a = e.call(a) }
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
end
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
require 'rbconfig'
|
|
2
|
+
require 'pathname'
|
|
3
|
+
|
|
4
|
+
require 'aruba/aruba_path'
|
|
5
|
+
|
|
6
|
+
require 'aruba/platforms/simple_table'
|
|
7
|
+
require 'aruba/platforms/unix_command_string'
|
|
8
|
+
require 'aruba/platforms/unix_which'
|
|
9
|
+
require 'aruba/platforms/determine_file_size'
|
|
10
|
+
require 'aruba/platforms/determine_disk_usage'
|
|
11
|
+
require 'aruba/platforms/aruba_file_creator'
|
|
12
|
+
require 'aruba/platforms/aruba_fixed_size_file_creator'
|
|
13
|
+
require 'aruba/platforms/local_environment'
|
|
14
|
+
require 'aruba/platforms/aruba_logger'
|
|
15
|
+
require 'aruba/platforms/announcer'
|
|
16
|
+
require 'aruba/platforms/command_monitor'
|
|
17
|
+
require 'aruba/platforms/filesystem_status'
|
|
18
|
+
|
|
19
|
+
# Aruba
|
|
20
|
+
module Aruba
|
|
21
|
+
# This abstracts OS-specific things
|
|
22
|
+
module Platforms
|
|
23
|
+
# WARNING:
|
|
24
|
+
# All methods found here are not considered part of the public API of aruba.
|
|
25
|
+
#
|
|
26
|
+
# Those methods can be changed at any time in the feature or removed without
|
|
27
|
+
# any further notice.
|
|
28
|
+
#
|
|
29
|
+
# This includes all methods for the UNIX platform
|
|
30
|
+
#
|
|
31
|
+
# @private
|
|
32
|
+
class UnixPlatform
|
|
33
|
+
def self.match?
|
|
34
|
+
!FFI::Platform.windows?
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def environment_variables
|
|
38
|
+
UnixEnvironmentVariables
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def command_string
|
|
42
|
+
UnixCommandString
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def filesystem_status
|
|
46
|
+
FilesystemStatus
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def announcer
|
|
50
|
+
Announcer
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def command_monitor
|
|
54
|
+
CommandMonitor
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def logger
|
|
58
|
+
ArubaLogger
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def determine_file_size(*args)
|
|
62
|
+
DetermineFileSize.new.call(*args)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def determine_disk_usage(*args)
|
|
66
|
+
DetermineDiskUsage.new.call(*args)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def create_file(*args)
|
|
70
|
+
ArubaFileCreator.new.call(*args)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def create_fixed_size_file(*args)
|
|
74
|
+
ArubaFixedSizeFileCreator.new.call(*args)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def with_environment(env = {}, &block)
|
|
78
|
+
LocalEnvironment.new.call(env, &block)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def default_shell
|
|
82
|
+
'bash'
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def detect_ruby(cmd)
|
|
86
|
+
if cmd =~ /^ruby\s/
|
|
87
|
+
cmd.gsub(/^ruby\s/, "#{current_ruby} ")
|
|
88
|
+
else
|
|
89
|
+
cmd
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def deprecated(msg)
|
|
94
|
+
warn(format('%s. Called by %s', msg, caller[1]))
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def current_ruby
|
|
98
|
+
::File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# @deprecated
|
|
102
|
+
# Add newline at the end
|
|
103
|
+
def ensure_newline(str)
|
|
104
|
+
deprecated('The use of "#ensure_newline" is deprecated. It will be removed soon')
|
|
105
|
+
|
|
106
|
+
str.chomp << "\n"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def require_matching_files(pattern, base)
|
|
110
|
+
if RUBY_VERSION < '1.9.3'
|
|
111
|
+
::Dir.glob(::File.expand_path(pattern, base)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
|
|
112
|
+
else
|
|
113
|
+
::Dir.glob(::File.expand_path(pattern, base)).each { |f| require_relative f }
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Create directory and subdirectories
|
|
118
|
+
def mkdir(dir_name)
|
|
119
|
+
dir_name = ::File.expand_path(dir_name)
|
|
120
|
+
|
|
121
|
+
::FileUtils.mkdir_p(dir_name) unless ::File.directory?(dir_name)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Remove file, directory + sub-directories
|
|
125
|
+
def rm(paths, options = {})
|
|
126
|
+
paths = Array(paths).map { |p| ::File.expand_path(p) }
|
|
127
|
+
|
|
128
|
+
FileUtils.rm_r(paths, options)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Get current working directory
|
|
132
|
+
def getwd
|
|
133
|
+
Dir.getwd
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Change to directory
|
|
137
|
+
def chdir(dir_name, &block)
|
|
138
|
+
dir_name = ::File.expand_path(dir_name.to_s)
|
|
139
|
+
|
|
140
|
+
with_environment 'OLDPWD' => getwd, 'PWD' => dir_name do
|
|
141
|
+
::Dir.chdir(dir_name, &block)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Touch file, directory
|
|
146
|
+
def touch(args, options)
|
|
147
|
+
FileUtils.touch(args, options)
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Copy file/directory
|
|
151
|
+
def cp(args, options)
|
|
152
|
+
FileUtils.cp_r(args, options)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Move file/directory
|
|
156
|
+
def mv(args, options)
|
|
157
|
+
FileUtils.mv(args, options)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Change mode of file/directory
|
|
161
|
+
def chmod(mode, args, options)
|
|
162
|
+
FileUtils.chmod_R(mode, args, options)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Exists and is file
|
|
166
|
+
def file?(f)
|
|
167
|
+
File.file? f
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Exists and is directory
|
|
171
|
+
def directory?(f)
|
|
172
|
+
File.directory? f
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# Path Exists
|
|
176
|
+
def exist?(f)
|
|
177
|
+
File.exist? f
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
# Path is executable
|
|
181
|
+
def executable?(f)
|
|
182
|
+
File.executable?(f)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# Expand path
|
|
186
|
+
def expand_path(path, base)
|
|
187
|
+
File.expand_path(path, base)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# Is absolute path
|
|
191
|
+
def absolute_path?(path)
|
|
192
|
+
Pathname.new(path).absolute?
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Is relative path
|
|
196
|
+
def relative_path?(path)
|
|
197
|
+
Pathname.new(path).relative?
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# Check if command is relative
|
|
201
|
+
#
|
|
202
|
+
# @return [TrueClass, FalseClass]
|
|
203
|
+
# true
|
|
204
|
+
# * bin/command.sh
|
|
205
|
+
#
|
|
206
|
+
# false
|
|
207
|
+
# * /bin/command.sh
|
|
208
|
+
# * command.sh
|
|
209
|
+
def relative_command?(path)
|
|
210
|
+
p = ArubaPath.new(path)
|
|
211
|
+
p.relative? && p.depth > 1
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# Check if command is relative
|
|
215
|
+
#
|
|
216
|
+
# @return [TrueClass, FalseClass]
|
|
217
|
+
# true
|
|
218
|
+
# * command.sh
|
|
219
|
+
#
|
|
220
|
+
# false
|
|
221
|
+
# * /bin/command.sh
|
|
222
|
+
# * bin/command.sh
|
|
223
|
+
def command?(path)
|
|
224
|
+
p = Pathname.new(path)
|
|
225
|
+
p.relative? && p.basename == p
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# Write to file
|
|
229
|
+
def write_file(path, content)
|
|
230
|
+
if RUBY_VERSION < '1.9.3'
|
|
231
|
+
File.open(path, 'wb') do |f|
|
|
232
|
+
f.print content
|
|
233
|
+
end
|
|
234
|
+
else
|
|
235
|
+
File.write(path, content)
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Unescape string
|
|
240
|
+
#
|
|
241
|
+
# @param [String] string
|
|
242
|
+
# The string which should be unescaped, e.g. the output of a command
|
|
243
|
+
#
|
|
244
|
+
# @return
|
|
245
|
+
# The string stripped from escape sequences
|
|
246
|
+
def unescape(string, keep_ansi = true)
|
|
247
|
+
# rubocop:disable Metrics/LineLength
|
|
248
|
+
deprecated('The use of "Aruba.platform.unescape" is deprecated. Please use "#unescape_text" and "#sanitize_text" instead. But be aware it uses a different implementation')
|
|
249
|
+
# rubocop:enable Metrics/LineLength
|
|
250
|
+
|
|
251
|
+
string = string.gsub('\n', "\n").gsub('\"', '"').gsub('\e', "\e")
|
|
252
|
+
string = string.gsub(/\e\[\d+(?>(;\d+)*)m/, '') unless keep_ansi
|
|
253
|
+
string
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
# Transform hash to a string table which can be output on stderr/stdout
|
|
257
|
+
def simple_table(hash, opts = {})
|
|
258
|
+
SimpleTable.new(hash, opts).to_s
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
# Resolve path for command using the PATH-environment variable
|
|
262
|
+
#
|
|
263
|
+
# Mostly taken from here: https://github.com/djberg96/ptools
|
|
264
|
+
#
|
|
265
|
+
# @param [#to_s] program
|
|
266
|
+
# The name of the program which should be resolved
|
|
267
|
+
#
|
|
268
|
+
# @param [String] path
|
|
269
|
+
# The PATH, a string concatenated with ":", e.g. /usr/bin/:/bin on a
|
|
270
|
+
# UNIX-system
|
|
271
|
+
def which(program, path = ENV['PATH'])
|
|
272
|
+
UnixWhich.new.call(program, path)
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
end
|