wwtd 0.5.3 → 0.5.4
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/wwtd.rb +17 -11
- data/lib/wwtd/cli.rb +23 -6
- data/lib/wwtd/ruby.rb +9 -1
- data/lib/wwtd/run.rb +13 -7
- data/lib/wwtd/version.rb +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b1e832c599a16052d46aa694de0b9464c794f73
|
4
|
+
data.tar.gz: 96c4a480a1bc405dc7db98c9b14e89e86dec0daa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1ad70dbdf2bd82a827d115ba107effcfc4a360ade2a5931b288d1078f04150d41860c217b724888918b7f723a52a7868dbedc00a9b4c777393cb2fc3e66691a
|
7
|
+
data.tar.gz: acdc3ea7a6d24c9818687ec442d209aa8e4a7b849324888eabb9c4dc4c4e722e07f846fd5ad7548030f7e61b760b7f3693a8920f9ca18cd1f159c7e4bae7590a
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/wwtd.rb
CHANGED
@@ -52,6 +52,23 @@ module WWTD
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
# internal api
|
56
|
+
def escaped_env(env)
|
57
|
+
env.map {|k,v| "#{k}=#{Shellwords.escape(v)}" }.join(" ")
|
58
|
+
end
|
59
|
+
|
60
|
+
# internal api
|
61
|
+
def sh(env, cmd=nil)
|
62
|
+
cmd, env = env, {} unless cmd
|
63
|
+
env = if env.any?
|
64
|
+
escaped_env(env) + " "
|
65
|
+
else
|
66
|
+
""
|
67
|
+
end
|
68
|
+
puts cmd
|
69
|
+
system("#{env}#{cmd}")
|
70
|
+
end
|
71
|
+
|
55
72
|
private
|
56
73
|
|
57
74
|
def with_clean_dot_bundle
|
@@ -89,17 +106,6 @@ module WWTD
|
|
89
106
|
matrix.map! { |c| config.merge(c) }
|
90
107
|
end
|
91
108
|
|
92
|
-
def sh(env, cmd=nil)
|
93
|
-
cmd, env = env, {} unless cmd
|
94
|
-
env = if env.any?
|
95
|
-
env.map {|k,v| "export #{k}=#{Shellwords.escape(v)}" }.join(" && ") + " && "
|
96
|
-
else
|
97
|
-
""
|
98
|
-
end
|
99
|
-
puts cmd
|
100
|
-
system("#{env}#{cmd}")
|
101
|
-
end
|
102
|
-
|
103
109
|
def with_clean_env(&block)
|
104
110
|
if defined?(Bundler)
|
105
111
|
Bundler.with_clean_env(&block)
|
data/lib/wwtd/cli.rb
CHANGED
@@ -19,21 +19,37 @@ module WWTD
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
puts "\nResults:"
|
25
|
-
puts results.map { |state, config| info_line(state, config, matrix) }
|
26
|
-
end
|
22
|
+
print_summary(matrix, results)
|
23
|
+
print_rerun(results)
|
27
24
|
|
28
25
|
results.all? { |state, config| state == :success } ? 0 : 1
|
29
26
|
end
|
30
27
|
|
31
28
|
private
|
32
29
|
|
30
|
+
def print_rerun(results)
|
31
|
+
failed = results.select { |s, c| s == :failure }
|
32
|
+
if failed.any?
|
33
|
+
puts "\nFailed:"
|
34
|
+
failed.each do |state, config|
|
35
|
+
runner = WWTD::Run.new(config.merge(:rerun => true), {}, nil)
|
36
|
+
env, cmd = runner.env_and_command
|
37
|
+
env = (env.empty? ? "" : WWTD.escaped_env(env) + " ")
|
38
|
+
puts colorize(:red, env + cmd)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def print_summary(matrix, results)
|
44
|
+
if results.size > 1
|
45
|
+
puts "\nResults:"
|
46
|
+
results.each { |state, config| puts info_line(state, config, matrix) }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
33
50
|
def protect_against_nested_runs
|
34
51
|
env = (defined?(Bundler) ? Bundler::ORIGINAL_ENV : ENV)
|
35
52
|
|
36
|
-
r = rand
|
37
53
|
raise "Already running WWTD" if env["INSIDE_WWTD"]
|
38
54
|
env['INSIDE_WWTD'] = "1"
|
39
55
|
yield
|
@@ -67,6 +83,7 @@ module WWTD
|
|
67
83
|
def info_line(state, config, matrix)
|
68
84
|
config_info = config_info(matrix, config)
|
69
85
|
color = STATE_COLOR_MAP[state] || :red
|
86
|
+
|
70
87
|
"#{colorize(color, state.to_s.upcase)} #{config_info}"
|
71
88
|
end
|
72
89
|
|
data/lib/wwtd/ruby.rb
CHANGED
@@ -8,12 +8,20 @@ module WWTD
|
|
8
8
|
# - rvm: "rvm xxx do"
|
9
9
|
# - others: env hash
|
10
10
|
# - unknown: nil
|
11
|
-
def switch_statement(version)
|
11
|
+
def switch_statement(version, options={})
|
12
12
|
return unless version
|
13
13
|
version = normalize_ruby_version(version)
|
14
14
|
if rvm_executable
|
15
15
|
command = "rvm #{version} do "
|
16
16
|
command if cache_command("#{command} ruby -v")
|
17
|
+
elsif options[:rerun]
|
18
|
+
if rbenv_executable
|
19
|
+
# cannot call different ruby from inside ruby, but ok for copy-paste
|
20
|
+
"RBENV_VERSION=#{version} "
|
21
|
+
else
|
22
|
+
# don't print giant path hack :/
|
23
|
+
"USE-RUBY-#{version}"
|
24
|
+
end
|
17
25
|
else
|
18
26
|
if ruby_root = ENV["RUBY_ROOT"] # chruby or RUBY_ROOT set
|
19
27
|
switch_via_env(File.dirname(ruby_root), version)
|
data/lib/wwtd/run.rb
CHANGED
@@ -19,10 +19,21 @@ module WWTD
|
|
19
19
|
[state, config]
|
20
20
|
end
|
21
21
|
|
22
|
+
# internal api
|
23
|
+
def env_and_command
|
24
|
+
default_command = (wants_bundle? ? "bundle exec rake" : "rake")
|
25
|
+
command = config["script"] || default_command
|
26
|
+
command = command.join(" && ") if Array === command
|
27
|
+
command = "#{switch}#{command}"
|
28
|
+
|
29
|
+
[env, command]
|
30
|
+
end
|
31
|
+
|
22
32
|
private
|
23
33
|
|
24
34
|
attr_reader :config, :env, :lock, :switch
|
25
35
|
|
36
|
+
|
26
37
|
def success?
|
27
38
|
if wants_bundle?
|
28
39
|
flock File.join(lock, (config["rvm"] || "rvm").to_s) do
|
@@ -32,12 +43,7 @@ module WWTD
|
|
32
43
|
end
|
33
44
|
end
|
34
45
|
|
35
|
-
|
36
|
-
command = config["script"] || default_command
|
37
|
-
command = command.join(" && ") if Array === command
|
38
|
-
command = "#{switch}#{command}"
|
39
|
-
|
40
|
-
sh(env, command)
|
46
|
+
sh(*env_and_command)
|
41
47
|
end
|
42
48
|
|
43
49
|
def wants_bundle?
|
@@ -49,7 +55,7 @@ module WWTD
|
|
49
55
|
end
|
50
56
|
|
51
57
|
def build_switch_statement
|
52
|
-
switch_ruby = Ruby.switch_statement(config["rvm"])
|
58
|
+
switch_ruby = Ruby.switch_statement(config["rvm"], :rerun => config[:rerun])
|
53
59
|
if switch_ruby.is_a?(Hash)
|
54
60
|
env.merge!(switch_ruby)
|
55
61
|
switch_ruby = nil
|
data/lib/wwtd/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wwtd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
F5etKHZg0j3eHO31/i2HnswY04lqGImUu6aM5EnijFTB7PPW2KwKKM4+kKDYFdlw
|
31
31
|
/0WV1Ng2/Y6qsHwmqGg2VlYj2h4=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2014-
|
33
|
+
date: 2014-07-08 00:00:00.000000000 Z
|
34
34
|
dependencies: []
|
35
35
|
description:
|
36
36
|
email: michael@grosser.it
|
metadata.gz.sig
CHANGED
Binary file
|