aruba 0.11.0.pre → 0.11.0.pre2
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/Gemfile +1 -1
- data/History.md +21 -1
- data/aruba.gemspec +1 -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 +259 -0
- data/features/api/command/stop.feature +53 -1
- data/features/api/text/replace_variables.feature +1 -1
- data/features/getting_started/run_commands.feature +177 -0
- data/features/matchers/file/be_existing_executable.feature +87 -0
- data/features/{integration/rspec/getting_started.feature → rspec/integration.feature} +31 -0
- data/fixtures/getting-started-app/Gemfile +1 -1
- data/lib/aruba.rb +0 -19
- data/lib/aruba/api.rb +2 -0
- data/lib/aruba/api/command.rb +103 -44
- data/lib/aruba/api/core.rb +13 -8
- data/lib/aruba/api/deprecated.rb +26 -4
- data/lib/aruba/api/environment.rb +21 -13
- data/lib/aruba/api/filesystem.rb +13 -0
- data/lib/aruba/api/rvm.rb +5 -0
- data/lib/aruba/api/text.rb +7 -1
- data/lib/aruba/aruba_path.rb +6 -0
- data/lib/aruba/basic_configuration.rb +35 -3
- data/lib/aruba/basic_configuration/option.rb +7 -0
- data/lib/aruba/cli.rb +4 -0
- data/lib/aruba/command.rb +47 -1
- data/lib/aruba/config.rb +15 -2
- data/lib/aruba/config_wrapper.rb +49 -8
- data/lib/aruba/console.rb +4 -1
- data/lib/aruba/console/help.rb +2 -0
- data/lib/aruba/contracts/absolute_path.rb +7 -0
- data/lib/aruba/contracts/enum.rb +5 -0
- data/lib/aruba/contracts/is_power_of_two.rb +9 -2
- data/lib/aruba/contracts/relative_path.rb +7 -0
- data/lib/aruba/cucumber/command.rb +6 -9
- data/lib/aruba/cucumber/file.rb +1 -1
- data/lib/aruba/cucumber/hooks.rb +36 -29
- data/lib/aruba/errors.rb +16 -1
- data/lib/aruba/events.rb +39 -0
- data/lib/aruba/extensions/string/strip.rb +1 -0
- data/lib/aruba/file_size.rb +11 -0
- data/lib/aruba/hooks.rb +2 -0
- data/lib/aruba/in_config_wrapper.rb +24 -0
- data/lib/aruba/in_process.rb +2 -0
- data/lib/aruba/initializer.rb +37 -0
- data/lib/aruba/matchers/base/base_matcher.rb +2 -0
- data/lib/aruba/matchers/base/object_formatter.rb +4 -0
- data/lib/aruba/matchers/collection/all.rb +2 -0
- data/lib/aruba/matchers/collection/include_an_object.rb +2 -0
- data/lib/aruba/matchers/command/have_exit_status.rb +1 -1
- data/lib/aruba/matchers/command/have_finished_in_time.rb +1 -10
- data/lib/aruba/matchers/command/have_output.rb +1 -10
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +1 -10
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +1 -10
- data/lib/aruba/matchers/file/be_an_existing_executable.rb +37 -0
- data/lib/aruba/platform.rb +4 -0
- data/lib/aruba/platforms/announcer.rb +225 -0
- data/lib/aruba/platforms/aruba_file_creator.rb +4 -0
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +4 -0
- data/lib/aruba/{aruba_logger.rb → platforms/aruba_logger.rb} +4 -0
- data/lib/aruba/platforms/command_monitor.rb +229 -0
- data/lib/aruba/platforms/determine_disk_usage.rb +5 -0
- data/lib/aruba/platforms/determine_file_size.rb +9 -0
- data/lib/aruba/platforms/disk_usage_calculator.rb +9 -0
- data/lib/aruba/platforms/local_environment.rb +12 -0
- data/lib/aruba/platforms/simple_table.rb +11 -0
- data/lib/aruba/platforms/unix_command_string.rb +3 -0
- data/lib/aruba/platforms/unix_environment_variables.rb +3 -0
- data/lib/aruba/platforms/unix_platform.rb +20 -2
- data/lib/aruba/platforms/unix_which.rb +6 -2
- data/lib/aruba/platforms/windows_command_string.rb +7 -0
- data/lib/aruba/platforms/windows_environment_variables.rb +2 -0
- data/lib/aruba/platforms/windows_platform.rb +3 -0
- data/lib/aruba/platforms/windows_which.rb +6 -2
- data/lib/aruba/processes/basic_process.rb +20 -5
- data/lib/aruba/processes/debug_process.rb +3 -1
- data/lib/aruba/processes/in_process.rb +18 -2
- data/lib/aruba/processes/spawn_process.rb +14 -13
- data/lib/aruba/rspec.rb +34 -23
- data/lib/aruba/runtime.rb +65 -6
- data/lib/aruba/setup.rb +87 -0
- data/lib/aruba/version.rb +1 -1
- data/spec/aruba/api_spec.rb +13 -36
- data/spec/aruba/{config_wrapper_spec.rb → in_config_wrapper_spec.rb} +1 -1
- data/spec/aruba/spawn_process_spec.rb +9 -14
- data/spec/support/configs/pry.rb +3 -0
- data/spec/support/shared_contexts/aruba.rb +1 -0
- metadata +40 -14
- data/features/getting_started/supported_programming_languages.feature +0 -89
- data/lib/aruba/announcer.rb +0 -219
- data/lib/aruba/matchers/rspec.rb +0 -0
- data/lib/aruba/process_monitor.rb +0 -201
- data/lib/aruba/processes/null_process.rb +0 -26
data/lib/aruba/events.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Aruba
|
2
|
+
module Aruba
|
3
|
+
# Events
|
4
|
+
module Events
|
5
|
+
# Basic event
|
6
|
+
#
|
7
|
+
# This is not meant for direct use - BasicEvent.new - by users. It is inherited by normal events
|
8
|
+
#
|
9
|
+
# @private
|
10
|
+
class BasicEvent
|
11
|
+
attr_reader :entity
|
12
|
+
|
13
|
+
def initialize(entity)
|
14
|
+
@entity = entity
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Command was stopped
|
19
|
+
class CommandStopped < BasicEvent; end
|
20
|
+
|
21
|
+
# Command was started
|
22
|
+
class CommandStarted < BasicEvent; end
|
23
|
+
|
24
|
+
# An environment variable was changed
|
25
|
+
class ChangedEnvironmentVariable < BasicEvent; end
|
26
|
+
|
27
|
+
# An environment variable was added
|
28
|
+
class AddedEnvironmentVariable < BasicEvent; end
|
29
|
+
|
30
|
+
# An environment variable was deleted
|
31
|
+
class DeletedEnvironmentVariable < BasicEvent; end
|
32
|
+
|
33
|
+
# The working directory has changed
|
34
|
+
class ChangedWorkingDirectory < BasicEvent; end
|
35
|
+
|
36
|
+
# The configuration was changed
|
37
|
+
class ChangedConfiguration < BasicEvent; end
|
38
|
+
end
|
39
|
+
end
|
data/lib/aruba/file_size.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
|
3
|
+
# Aruba
|
3
4
|
module Aruba
|
5
|
+
# File Size
|
4
6
|
class FileSize
|
5
7
|
include Comparable
|
6
8
|
|
@@ -10,41 +12,50 @@ module Aruba
|
|
10
12
|
|
11
13
|
public
|
12
14
|
|
15
|
+
# Create file size object
|
13
16
|
def initialize(bytes)
|
14
17
|
@bytes = bytes
|
15
18
|
@divisor = 1024
|
16
19
|
end
|
17
20
|
|
21
|
+
# Convert to bytes
|
18
22
|
def to_byte
|
19
23
|
bytes
|
20
24
|
end
|
21
25
|
alias_method :to_i, :to_byte
|
22
26
|
|
27
|
+
# Convert to float
|
23
28
|
def to_f
|
24
29
|
to_i.to_f
|
25
30
|
end
|
26
31
|
|
32
|
+
# Convert to string
|
27
33
|
def to_s
|
28
34
|
to_i.to_s
|
29
35
|
end
|
30
36
|
alias_method :inspect, :to_s
|
31
37
|
|
38
|
+
# Move to other
|
32
39
|
def coerce(other)
|
33
40
|
[bytes, other]
|
34
41
|
end
|
35
42
|
|
43
|
+
# Convert to kibi byte
|
36
44
|
def to_kibi_byte
|
37
45
|
to_byte.to_f / divisor
|
38
46
|
end
|
39
47
|
|
48
|
+
# Convert to mebi byte
|
40
49
|
def to_mebi_byte
|
41
50
|
to_kibi_byte.to_f / divisor
|
42
51
|
end
|
43
52
|
|
53
|
+
# Convert to gibi byte
|
44
54
|
def to_gibi_byte
|
45
55
|
to_mebi_byte.to_f / divisor
|
46
56
|
end
|
47
57
|
|
58
|
+
# Compare size with other size
|
48
59
|
def <=>(other)
|
49
60
|
to_i <=> other.to_i
|
50
61
|
end
|
data/lib/aruba/hooks.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
# Aruba
|
2
|
+
module Aruba
|
3
|
+
# In config wrapper
|
4
|
+
#
|
5
|
+
# Used to make the configuration read only if one needs to access an
|
6
|
+
# configuration option from with `Aruba::Config`.
|
7
|
+
#
|
8
|
+
# @private
|
9
|
+
class InConfigWrapper
|
10
|
+
attr_reader :config
|
11
|
+
private :config
|
12
|
+
|
13
|
+
def initialize(config)
|
14
|
+
@config = config.dup
|
15
|
+
end
|
16
|
+
|
17
|
+
def method_missing(name, *args)
|
18
|
+
fail ArgumentError, 'Options take no argument' if args.count > 0
|
19
|
+
fail UnknownOptionError, %(Option "#{name}" is unknown. Please use only earlier defined options) unless config.key? name
|
20
|
+
|
21
|
+
config[name]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/aruba/in_process.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'aruba/processes/in_process'
|
2
2
|
require 'aruba/platform'
|
3
3
|
|
4
|
+
# Aruba
|
4
5
|
module Aruba
|
6
|
+
# @deprecated
|
5
7
|
class InProcess < Aruba::Processes::InProcess
|
6
8
|
def initialize(*args)
|
7
9
|
Aruba.platform.deprecated('The use of "Aruba::InProcess" is deprecated. Use "Aruba::Processes::InProcess" instead.')
|
data/lib/aruba/initializer.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
require 'thor/group'
|
2
2
|
require 'thor/actions'
|
3
3
|
|
4
|
+
# Aruba
|
4
5
|
module Aruba
|
6
|
+
# Initializers
|
7
|
+
#
|
8
|
+
# Initialize project with aruba configuration files
|
5
9
|
module Initializers
|
10
|
+
# Common initializer
|
11
|
+
#
|
12
|
+
# @private
|
6
13
|
class CommonInitializer < Thor::Group
|
7
14
|
include Thor::Actions
|
8
15
|
|
16
|
+
# Add gem to gemfile
|
9
17
|
def add_gem
|
10
18
|
file = 'Gemfile'
|
11
19
|
creator = if File.exist? file
|
@@ -25,8 +33,15 @@ module Aruba
|
|
25
33
|
end
|
26
34
|
end
|
27
35
|
|
36
|
+
# Aruba
|
28
37
|
module Aruba
|
38
|
+
# Initializers
|
29
39
|
module Initializers
|
40
|
+
# Default Initializer
|
41
|
+
#
|
42
|
+
# This handles invalid values for initializer.
|
43
|
+
#
|
44
|
+
# @private
|
30
45
|
class FailingInitializer
|
31
46
|
class << self
|
32
47
|
def match?(*)
|
@@ -41,8 +56,13 @@ module Aruba
|
|
41
56
|
end
|
42
57
|
end
|
43
58
|
|
59
|
+
# Aruba
|
44
60
|
module Aruba
|
61
|
+
# Initializer
|
45
62
|
module Initializers
|
63
|
+
# Add aruba + rspec to project
|
64
|
+
#
|
65
|
+
# @private
|
46
66
|
class RSpecInitializer < Thor::Group
|
47
67
|
include Thor::Actions
|
48
68
|
|
@@ -82,8 +102,13 @@ EOS
|
|
82
102
|
end
|
83
103
|
end
|
84
104
|
|
105
|
+
# Aruba
|
85
106
|
module Aruba
|
107
|
+
# Initializer
|
86
108
|
module Initializers
|
109
|
+
# Add aruba + aruba to project
|
110
|
+
#
|
111
|
+
# @private
|
87
112
|
class CucumberInitializer < Thor::Group
|
88
113
|
include Thor::Actions
|
89
114
|
|
@@ -102,8 +127,13 @@ EOS
|
|
102
127
|
end
|
103
128
|
end
|
104
129
|
|
130
|
+
# Aruba
|
105
131
|
module Aruba
|
132
|
+
# Initializer
|
106
133
|
module Initializers
|
134
|
+
# Add aruba + minitest to project
|
135
|
+
#
|
136
|
+
# @private
|
107
137
|
class MiniTestInitializer < Thor::Group
|
108
138
|
include Thor::Actions
|
109
139
|
|
@@ -155,7 +185,13 @@ EOS
|
|
155
185
|
end
|
156
186
|
end
|
157
187
|
|
188
|
+
# Aruba
|
158
189
|
module Aruba
|
190
|
+
# The whole initializer
|
191
|
+
#
|
192
|
+
# This one uses the specific initializers to generate the needed files.
|
193
|
+
#
|
194
|
+
# @private
|
159
195
|
class Initializer
|
160
196
|
private
|
161
197
|
|
@@ -171,6 +207,7 @@ module Aruba
|
|
171
207
|
@initializers << Initializers::FailingInitializer
|
172
208
|
end
|
173
209
|
|
210
|
+
# Create files etc.
|
174
211
|
def call(test_framework)
|
175
212
|
begin
|
176
213
|
initializers.find { |i| i.match? test_framework }.start [], {}
|
@@ -20,7 +20,7 @@ RSpec::Matchers.define :have_exit_status do |expected|
|
|
20
20
|
match do |actual|
|
21
21
|
@old_actual = actual
|
22
22
|
|
23
|
-
@old_actual.stop
|
23
|
+
@old_actual.stop
|
24
24
|
@actual = actual.exit_status
|
25
25
|
|
26
26
|
next false unless @old_actual.respond_to? :exit_status
|
@@ -26,16 +26,7 @@ RSpec::Matchers.define :have_finished_in_time do
|
|
26
26
|
|
27
27
|
next false unless @old_actual.respond_to? :timed_out?
|
28
28
|
|
29
|
-
@
|
30
|
-
self,
|
31
|
-
:stdout => @announce_stdout,
|
32
|
-
:stderr => @announce_stderr,
|
33
|
-
:dir => @announce_dir,
|
34
|
-
:cmd => @announce_cmd,
|
35
|
-
:env => @announce_env
|
36
|
-
)
|
37
|
-
|
38
|
-
@old_actual.stop(@announcer) unless @old_actual.stopped?
|
29
|
+
@old_actual.stop
|
39
30
|
|
40
31
|
@old_actual.timed_out? == false
|
41
32
|
end
|
@@ -19,16 +19,7 @@ RSpec::Matchers.define :have_output do |expected|
|
|
19
19
|
|
20
20
|
next false unless @old_actual.respond_to? :output
|
21
21
|
|
22
|
-
@
|
23
|
-
self,
|
24
|
-
:stdout => @announce_stdout,
|
25
|
-
:stderr => @announce_stderr,
|
26
|
-
:dir => @announce_dir,
|
27
|
-
:cmd => @announce_cmd,
|
28
|
-
:env => @announce_env
|
29
|
-
)
|
30
|
-
|
31
|
-
@old_actual.stop(@announcer)
|
22
|
+
@old_actual.stop
|
32
23
|
|
33
24
|
@actual = sanitize_text(actual.output)
|
34
25
|
|
@@ -19,16 +19,7 @@ RSpec::Matchers.define :have_output_on_stderr do |expected|
|
|
19
19
|
|
20
20
|
next false unless @old_actual.respond_to? :stderr
|
21
21
|
|
22
|
-
@
|
23
|
-
self,
|
24
|
-
:stdout => @announce_stdout,
|
25
|
-
:stderr => @announce_stderr,
|
26
|
-
:dir => @announce_dir,
|
27
|
-
:cmd => @announce_cmd,
|
28
|
-
:env => @announce_env
|
29
|
-
)
|
30
|
-
|
31
|
-
@old_actual.stop(@announcer) unless @old_actual.stopped?
|
22
|
+
@old_actual.stop
|
32
23
|
|
33
24
|
@actual = sanitize_text(actual.stderr)
|
34
25
|
|
@@ -19,16 +19,7 @@ RSpec::Matchers.define :have_output_on_stdout do |expected|
|
|
19
19
|
|
20
20
|
next false unless @old_actual.respond_to? :stdout
|
21
21
|
|
22
|
-
@
|
23
|
-
self,
|
24
|
-
:stdout => @announce_stdout,
|
25
|
-
:stderr => @announce_stderr,
|
26
|
-
:dir => @announce_dir,
|
27
|
-
:cmd => @announce_cmd,
|
28
|
-
:env => @announce_env
|
29
|
-
)
|
30
|
-
|
31
|
-
@old_actual.stop(@announcer) unless @old_actual.stopped?
|
22
|
+
@old_actual.stop
|
32
23
|
|
33
24
|
@actual = sanitize_text(actual.stdout)
|
34
25
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rspec/expectations/version'
|
2
|
+
require 'shellwords'
|
3
|
+
|
4
|
+
# @!method be_an_existing_executable
|
5
|
+
# This matchers checks if <file> exists in filesystem
|
6
|
+
#
|
7
|
+
# @return [TrueClass, FalseClass] The result
|
8
|
+
#
|
9
|
+
# false:
|
10
|
+
# * if file does not exist
|
11
|
+
# true:
|
12
|
+
# * if file exists
|
13
|
+
#
|
14
|
+
# @example Use matcher
|
15
|
+
#
|
16
|
+
# RSpec.describe do
|
17
|
+
# it { expect(file1).to be_an_existing_executable }
|
18
|
+
# end
|
19
|
+
RSpec::Matchers.define :be_an_existing_executable do |_|
|
20
|
+
match do |actual|
|
21
|
+
@actual = Shellwords.split(actual.commandline).first if actual.respond_to? :commandline
|
22
|
+
|
23
|
+
executable?(@actual)
|
24
|
+
end
|
25
|
+
|
26
|
+
failure_message do |actual|
|
27
|
+
format("expected that executable \"%s\" exists", actual)
|
28
|
+
end
|
29
|
+
|
30
|
+
failure_message_when_negated do |actual|
|
31
|
+
format("expected that executable \"%s\" does not exist", actual)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
if RSpec::Expectations::Version::STRING >= '3.0'
|
36
|
+
RSpec::Matchers.alias_matcher :an_existing_executable, :be_an_existing_executable
|
37
|
+
end
|
data/lib/aruba/platform.rb
CHANGED
@@ -2,14 +2,18 @@ require 'thread'
|
|
2
2
|
require 'aruba/platforms/unix_platform'
|
3
3
|
require 'aruba/platforms/windows_platform'
|
4
4
|
|
5
|
+
# Aruba
|
5
6
|
module Aruba
|
6
7
|
PLATFORM_MUTEX = Mutex.new
|
7
8
|
end
|
8
9
|
|
10
|
+
# Aruba
|
9
11
|
module Aruba
|
12
|
+
# Platform
|
10
13
|
Platform = [Platforms::WindowsPlatform, Platforms::UnixPlatform].find(&:match?)
|
11
14
|
end
|
12
15
|
|
16
|
+
# Aruba
|
13
17
|
module Aruba
|
14
18
|
PLATFORM_MUTEX.synchronize do
|
15
19
|
@platform = Platform.new
|
@@ -0,0 +1,225 @@
|
|
1
|
+
require 'shellwords'
|
2
|
+
|
3
|
+
# Aruba
|
4
|
+
module Aruba
|
5
|
+
# Platforms
|
6
|
+
module Platforms
|
7
|
+
# Announcer
|
8
|
+
#
|
9
|
+
# @private
|
10
|
+
#
|
11
|
+
# @example Activate your you own channel in cucumber
|
12
|
+
#
|
13
|
+
# Before('@announce-my-channel') do
|
14
|
+
# aruba.announcer.activate :my_channel
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# @example Activate your you own channel in rspec > 3
|
18
|
+
#
|
19
|
+
# before do
|
20
|
+
# current_example = context.example
|
21
|
+
# aruba.announcer.activate :my_channel if current_example.metadata[:announce_my_channel]
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# Aruba.announcer.announce(:my_channel, 'my message')
|
25
|
+
#
|
26
|
+
class Announcer
|
27
|
+
# Dev null
|
28
|
+
class NullAnnouncer
|
29
|
+
def announce(*)
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
|
33
|
+
def mode?(*)
|
34
|
+
true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Announcer using Kernel.puts
|
39
|
+
class KernelPutsAnnouncer
|
40
|
+
def announce(message)
|
41
|
+
Kernel.puts message
|
42
|
+
end
|
43
|
+
|
44
|
+
def mode?(m)
|
45
|
+
:kernel_puts == m
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Announcer using Main#puts
|
50
|
+
class PutsAnnouncer
|
51
|
+
def announce(message)
|
52
|
+
Kernel.puts message
|
53
|
+
end
|
54
|
+
|
55
|
+
def mode?(m)
|
56
|
+
:puts == m
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
attr_reader :announcers, :default_announcer, :announcer, :channels, :output_formats
|
63
|
+
|
64
|
+
public
|
65
|
+
|
66
|
+
def initialize(*args)
|
67
|
+
@announcers = []
|
68
|
+
@announcers << PutsAnnouncer.new
|
69
|
+
@announcers << KernelPutsAnnouncer.new
|
70
|
+
@announcers << NullAnnouncer.new
|
71
|
+
|
72
|
+
@default_announcer = @announcers.last
|
73
|
+
@announcer = @announcers.first
|
74
|
+
@channels = {}
|
75
|
+
@output_formats = {}
|
76
|
+
|
77
|
+
@options = args[1] || {}
|
78
|
+
|
79
|
+
after_init
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
# rubocop:disable Metrics/MethodLength
|
85
|
+
def after_init
|
86
|
+
output_format :changed_configuration, proc { |n, v| format('# %s = %s', n, v) }
|
87
|
+
output_format :changed_environment, proc { |n, v| format('$ export %s=%s', n, Shellwords.escape(v)) }
|
88
|
+
output_format :command, '$ %s'
|
89
|
+
output_format :directory, '$ cd %s'
|
90
|
+
output_format :environment, proc { |n, v| format('$ export %s=%s', n, Shellwords.escape(v)) }
|
91
|
+
output_format :full_environment, proc { |h| Aruba.platform.simple_table(h) }
|
92
|
+
output_format :modified_environment, proc { |n, v| format('$ export %s=%s', n, Shellwords.escape(v)) }
|
93
|
+
output_format :stderr, "<<-STDERR\n%s\nSTDERR"
|
94
|
+
output_format :stdout, "<<-STDOUT\n%s\nSTDOUT"
|
95
|
+
output_format :stop_signal, proc { |p, s| format('Command will be stopped with `kill -%s %s`', s, p) }
|
96
|
+
output_format :timeout, '# %s-timeout: %s seconds'
|
97
|
+
output_format :wait_time, '# %s: %s seconds'
|
98
|
+
|
99
|
+
# rubocop:disable Metrics/LineLength
|
100
|
+
if @options[:stdout]
|
101
|
+
warn('The use of "@announce_stdout-instance" variable and "options[:stdout] = true" for Announcer.new is deprecated. Please use "announcer.activate(:stdout)" instead.')
|
102
|
+
activate :stdout
|
103
|
+
end
|
104
|
+
if @options[:stderr]
|
105
|
+
warn('The use of "@announce_stderr-instance" variable and "options[:stderr] = true" for Announcer.new is deprecated. Please use "announcer.activate(:stderr)" instead.')
|
106
|
+
activate :stderr
|
107
|
+
end
|
108
|
+
if @options[:dir]
|
109
|
+
warn('The use of "@announce_dir-instance" variable and "options[:dir] = true" for Announcer.new is deprecated. Please use "announcer.activate(:directory)" instead.')
|
110
|
+
activate :directory
|
111
|
+
end
|
112
|
+
if @options[:cmd]
|
113
|
+
warn('The use of "@announce_cmd-instance" variable and "options[:cmd] = true" for Announcer.new is deprecated. Please use "announcer.activate(:command)" instead.')
|
114
|
+
activate :command
|
115
|
+
end
|
116
|
+
if @options[:env]
|
117
|
+
warn('The use of "@announce_env-instance" variable and "options[:env] = true" for Announcer.new is deprecated. Please use "announcer.activate(:modified_environment)" instead.')
|
118
|
+
activate :modified_enviroment
|
119
|
+
end
|
120
|
+
# rubocop:enable Metrics/LineLength
|
121
|
+
end
|
122
|
+
# rubocop:enable Metrics/MethodLength
|
123
|
+
|
124
|
+
def output_format(channel, string = '%s', &block)
|
125
|
+
if block_given?
|
126
|
+
output_formats[channel.to_sym] = block
|
127
|
+
elsif string.is_a?(Proc)
|
128
|
+
output_formats[channel.to_sym] = string
|
129
|
+
else
|
130
|
+
output_formats[channel.to_sym] = proc { |*args| format(string, *args) }
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
public
|
135
|
+
|
136
|
+
# Reset announcer
|
137
|
+
def reset
|
138
|
+
@default_announcer = @announcers.last
|
139
|
+
@announcer = @announcers.first
|
140
|
+
end
|
141
|
+
|
142
|
+
# Change mode of announcer
|
143
|
+
#
|
144
|
+
# @param [Symbol] m
|
145
|
+
# The mode to set
|
146
|
+
def mode=(m)
|
147
|
+
@announcer = @announcers.find { |a| f.mode? m.to_sym }
|
148
|
+
|
149
|
+
self
|
150
|
+
end
|
151
|
+
|
152
|
+
# Check if channel is activated
|
153
|
+
#
|
154
|
+
# @param [Symbol] channel
|
155
|
+
# The name of the channel to check
|
156
|
+
def activated?(channel)
|
157
|
+
channels[channel.to_sym] == true
|
158
|
+
end
|
159
|
+
|
160
|
+
# Activate a channel
|
161
|
+
#
|
162
|
+
# @param [Symbol] channel
|
163
|
+
# The name of the channel to activate
|
164
|
+
def activate(channel)
|
165
|
+
channels[channel.to_sym] = true
|
166
|
+
|
167
|
+
self
|
168
|
+
end
|
169
|
+
|
170
|
+
# Announce information to channel
|
171
|
+
#
|
172
|
+
# @param [Symbol] channel
|
173
|
+
# The name of the channel to check
|
174
|
+
#
|
175
|
+
# @param [Array] args
|
176
|
+
# Arguments
|
177
|
+
def announce(channel, *args)
|
178
|
+
channel = channel.to_sym
|
179
|
+
|
180
|
+
the_output_format = if output_formats.key? channel
|
181
|
+
output_formats[channel]
|
182
|
+
else
|
183
|
+
proc { |v| format('%s', v) }
|
184
|
+
end
|
185
|
+
|
186
|
+
message = the_output_format.call(*args)
|
187
|
+
|
188
|
+
announcer.announce(message) if channels[channel]
|
189
|
+
|
190
|
+
default_announcer.announce message
|
191
|
+
end
|
192
|
+
|
193
|
+
# @deprecated
|
194
|
+
def stdout(content)
|
195
|
+
warn('The announcer now has a new api to activate channels. Please use this one: announce(:stdout, message)')
|
196
|
+
announce :stdout, content
|
197
|
+
end
|
198
|
+
|
199
|
+
# @deprecated
|
200
|
+
def stderr(content)
|
201
|
+
warn('The announcer now has a new api to activate channels. Please use this one: announce(:stderr, message)')
|
202
|
+
announce :stderr, content
|
203
|
+
end
|
204
|
+
|
205
|
+
# @deprecated
|
206
|
+
def dir(dir)
|
207
|
+
warn('The announcer now has a new api to activate channels. Please use this one announce(:directory, message)')
|
208
|
+
announce :directory, dir
|
209
|
+
end
|
210
|
+
|
211
|
+
# @deprecated
|
212
|
+
def cmd(cmd)
|
213
|
+
warn('The announcer now has a new api to activate channels. Please use this one announce(:command, message)')
|
214
|
+
announce :command, cmd
|
215
|
+
end
|
216
|
+
|
217
|
+
# @deprecated
|
218
|
+
def env(name, value)
|
219
|
+
warn('The announcer now has a new api to activate channels. Please use this one: announce(:changed_environment, key, value)')
|
220
|
+
|
221
|
+
announce :changed_environment, name, value
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|