aruba 0.11.0.pre → 0.11.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|