buildkite-builder 1.0.0.beta.5 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +118 -14
  4. data/VERSION +1 -0
  5. data/lib/buildkite/builder.rb +12 -18
  6. data/lib/buildkite/builder/commands/abstract.rb +49 -4
  7. data/lib/buildkite/builder/commands/preview.rb +1 -13
  8. data/lib/buildkite/builder/commands/run.rb +21 -1
  9. data/lib/buildkite/builder/context.rb +108 -0
  10. data/lib/buildkite/builder/loaders/abstract.rb +6 -10
  11. data/lib/buildkite/builder/loaders/manifests.rb +1 -1
  12. data/lib/buildkite/builder/loaders/processors.rb +2 -2
  13. data/lib/buildkite/builder/loaders/templates.rb +1 -1
  14. data/lib/buildkite/builder/manifest.rb +1 -1
  15. data/lib/buildkite/builder/processors/abstract.rb +7 -7
  16. data/lib/buildkite/builder/rainbow.rb +1 -1
  17. data/lib/buildkite/pipelines.rb +1 -0
  18. data/lib/buildkite/pipelines/pipeline.rb +20 -9
  19. data/lib/buildkite/pipelines/step_context.rb +25 -0
  20. data/lib/buildkite/pipelines/steps/abstract.rb +9 -3
  21. data/lib/buildkite/pipelines/steps/block.rb +1 -0
  22. metadata +110 -27
  23. data/lib/buildkite/builder/runner.rb +0 -114
  24. data/lib/vendor/rainbow/Changelog.md +0 -101
  25. data/lib/vendor/rainbow/Gemfile +0 -30
  26. data/lib/vendor/rainbow/LICENSE +0 -20
  27. data/lib/vendor/rainbow/README.markdown +0 -225
  28. data/lib/vendor/rainbow/Rakefile +0 -11
  29. data/lib/vendor/rainbow/lib/rainbow.rb +0 -13
  30. data/lib/vendor/rainbow/lib/rainbow/color.rb +0 -150
  31. data/lib/vendor/rainbow/lib/rainbow/ext/string.rb +0 -64
  32. data/lib/vendor/rainbow/lib/rainbow/global.rb +0 -25
  33. data/lib/vendor/rainbow/lib/rainbow/null_presenter.rb +0 -100
  34. data/lib/vendor/rainbow/lib/rainbow/presenter.rb +0 -144
  35. data/lib/vendor/rainbow/lib/rainbow/refinement.rb +0 -14
  36. data/lib/vendor/rainbow/lib/rainbow/string_utils.rb +0 -22
  37. data/lib/vendor/rainbow/lib/rainbow/version.rb +0 -5
  38. data/lib/vendor/rainbow/lib/rainbow/wrapper.rb +0 -22
  39. data/lib/vendor/rainbow/lib/rainbow/x11_color_names.rb +0 -153
  40. data/lib/vendor/rainbow/rainbow.gemspec +0 -23
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
-
5
- require 'rspec/core/rake_task'
6
- RSpec::Core::RakeTask.new
7
-
8
- require 'rubocop/rake_task'
9
- RuboCop::RakeTask.new
10
-
11
- task default: %i[spec rubocop]
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'rainbow/global'
4
-
5
- module Rainbow
6
- def self.new
7
- Wrapper.new(global.enabled)
8
- end
9
-
10
- self.enabled = false unless STDOUT.tty? && STDERR.tty?
11
- self.enabled = false if ENV['TERM'] == 'dumb'
12
- self.enabled = true if ENV['CLICOLOR_FORCE'] == '1'
13
- end
@@ -1,150 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Rainbow
4
- class Color
5
- attr_reader :ground
6
-
7
- def self.build(ground, values)
8
- unless [1, 3].include?(values.size)
9
- raise ArgumentError,
10
- "Wrong number of arguments for color definition, should be 1 or 3"
11
- end
12
-
13
- color = values.size == 1 ? values.first : values
14
-
15
- case color
16
- # NOTE: Properly handle versions before/after Ruby 2.4.0.
17
- # Ruby 2.4+ unifies Fixnum & Bignum into Integer.
18
- # However previous versions would still use Fixnum.
19
- # To avoid missing `Fixnum` input, call `0.class` which would
20
- # return either `Integer` or `Fixnum`.
21
- when 0.class
22
- Indexed.new(ground, color)
23
- when Symbol
24
- if Named.color_names.include?(color)
25
- Named.new(ground, color)
26
- elsif X11Named.color_names.include?(color)
27
- X11Named.new(ground, color)
28
- else
29
- raise ArgumentError,
30
- "Unknown color name, valid names: " +
31
- (Named.color_names + X11Named.color_names).join(', ')
32
- end
33
- when Array
34
- RGB.new(ground, *color)
35
- when String
36
- RGB.new(ground, *parse_hex_color(color))
37
- end
38
- end
39
-
40
- def self.parse_hex_color(hex)
41
- unless hex =~ /^#?[a-f0-9]{6}/i
42
- raise ArgumentError,
43
- "Invalid hexadecimal RGB triplet. Valid format: /^#?[a-f0-9]{6}/i"
44
- end
45
-
46
- hex = hex.sub(/^#/, '')
47
- r = hex[0..1].to_i(16)
48
- g = hex[2..3].to_i(16)
49
- b = hex[4..5].to_i(16)
50
-
51
- [r, g, b]
52
- end
53
-
54
- class Indexed < Color
55
- attr_reader :num
56
-
57
- def initialize(ground, num)
58
- @ground = ground
59
- @num = num
60
- end
61
-
62
- def codes
63
- code = num + (ground == :foreground ? 30 : 40)
64
-
65
- [code]
66
- end
67
- end
68
-
69
- class Named < Indexed
70
- NAMES = {
71
- black: 0,
72
- red: 1,
73
- green: 2,
74
- yellow: 3,
75
- blue: 4,
76
- magenta: 5,
77
- cyan: 6,
78
- white: 7,
79
- default: 9
80
- }.freeze
81
-
82
- def self.color_names
83
- NAMES.keys
84
- end
85
-
86
- def self.valid_names
87
- color_names.join(', ')
88
- end
89
-
90
- def initialize(ground, name)
91
- unless Named.color_names.include?(name)
92
- raise ArgumentError,
93
- "Unknown color name, valid names: #{self.class.valid_names}"
94
- end
95
-
96
- super(ground, NAMES[name])
97
- end
98
- end
99
-
100
- class RGB < Indexed
101
- attr_reader :r, :g, :b
102
-
103
- def self.to_ansi_domain(value)
104
- (6 * (value / 256.0)).to_i
105
- end
106
-
107
- def initialize(ground, *values)
108
- if values.min.negative? || values.max > 255
109
- raise ArgumentError, "RGB value outside 0-255 range"
110
- end
111
-
112
- super(ground, 8)
113
- @r, @g, @b = values
114
- end
115
-
116
- def codes
117
- super + [5, code_from_rgb]
118
- end
119
-
120
- private
121
-
122
- def code_from_rgb
123
- 16 + self.class.to_ansi_domain(r) * 36 +
124
- self.class.to_ansi_domain(g) * 6 +
125
- self.class.to_ansi_domain(b)
126
- end
127
- end
128
-
129
- class X11Named < RGB
130
- include X11ColorNames
131
-
132
- def self.color_names
133
- NAMES.keys
134
- end
135
-
136
- def self.valid_names
137
- color_names.join(', ')
138
- end
139
-
140
- def initialize(ground, name)
141
- unless X11Named.color_names.include?(name)
142
- raise ArgumentError,
143
- "Unknown color name, valid names: #{self.class.valid_names}"
144
- end
145
-
146
- super(ground, *NAMES[name])
147
- end
148
- end
149
- end
150
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rainbow'
4
-
5
- module Rainbow
6
- module Ext
7
- module String
8
- module InstanceMethods
9
- def foreground(*color)
10
- Rainbow(self).foreground(*color)
11
- end
12
-
13
- alias color foreground
14
- alias colour foreground
15
-
16
- def background(*color)
17
- Rainbow(self).background(*color)
18
- end
19
-
20
- def reset
21
- Rainbow(self).reset
22
- end
23
-
24
- def bright
25
- Rainbow(self).bright
26
- end
27
-
28
- def faint
29
- Rainbow(self).faint
30
- end
31
-
32
- def italic
33
- Rainbow(self).italic
34
- end
35
-
36
- def underline
37
- Rainbow(self).underline
38
- end
39
-
40
- def blink
41
- Rainbow(self).blink
42
- end
43
-
44
- def inverse
45
- Rainbow(self).inverse
46
- end
47
-
48
- def hide
49
- Rainbow(self).hide
50
- end
51
-
52
- def cross_out
53
- Rainbow(self).cross_out
54
- end
55
-
56
- alias strike cross_out
57
- end
58
- end
59
- end
60
- end
61
-
62
- class String
63
- include Rainbow::Ext::String::InstanceMethods
64
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'wrapper'
4
-
5
- module Rainbow
6
- def self.global
7
- @global ||= Wrapper.new
8
- end
9
-
10
- def self.enabled
11
- global.enabled
12
- end
13
-
14
- def self.enabled=(value)
15
- global.enabled = value
16
- end
17
-
18
- def self.uncolor(string)
19
- StringUtils.uncolor(string)
20
- end
21
- end
22
-
23
- def Rainbow(string)
24
- Rainbow.global.wrap(string.to_s)
25
- end
@@ -1,100 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Rainbow
4
- class NullPresenter < ::String
5
- def color(*_values)
6
- self
7
- end
8
-
9
- def background(*_values)
10
- self
11
- end
12
-
13
- def reset
14
- self
15
- end
16
-
17
- def bright
18
- self
19
- end
20
-
21
- def faint
22
- self
23
- end
24
-
25
- def italic
26
- self
27
- end
28
-
29
- def underline
30
- self
31
- end
32
-
33
- def blink
34
- self
35
- end
36
-
37
- def inverse
38
- self
39
- end
40
-
41
- def hide
42
- self
43
- end
44
-
45
- def cross_out
46
- self
47
- end
48
-
49
- def black
50
- self
51
- end
52
-
53
- def red
54
- self
55
- end
56
-
57
- def green
58
- self
59
- end
60
-
61
- def yellow
62
- self
63
- end
64
-
65
- def blue
66
- self
67
- end
68
-
69
- def magenta
70
- self
71
- end
72
-
73
- def cyan
74
- self
75
- end
76
-
77
- def white
78
- self
79
- end
80
-
81
- def method_missing(method_name, *args)
82
- if Color::X11Named.color_names.include?(method_name) && args.empty?
83
- self
84
- else
85
- super
86
- end
87
- end
88
-
89
- def respond_to_missing?(method_name, *args)
90
- Color::X11Named.color_names.include?(method_name) && args.empty? || super
91
- end
92
-
93
- alias foreground color
94
- alias fg color
95
- alias bg background
96
- alias bold bright
97
- alias dark faint
98
- alias strike cross_out
99
- end
100
- end
@@ -1,144 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'string_utils'
4
- require_relative 'x11_color_names'
5
- require_relative 'color'
6
-
7
- module Rainbow
8
- class Presenter < ::String
9
- TERM_EFFECTS = {
10
- reset: 0,
11
- bright: 1,
12
- faint: 2,
13
- italic: 3,
14
- underline: 4,
15
- blink: 5,
16
- inverse: 7,
17
- hide: 8,
18
- cross_out: 9
19
- }.freeze
20
-
21
- # Sets color of this text.
22
- def color(*values)
23
- wrap_with_sgr(Color.build(:foreground, values).codes)
24
- end
25
-
26
- alias foreground color
27
- alias fg color
28
-
29
- # Sets background color of this text.
30
- def background(*values)
31
- wrap_with_sgr(Color.build(:background, values).codes)
32
- end
33
-
34
- alias bg background
35
-
36
- # Resets terminal to default colors/backgrounds.
37
- #
38
- # It shouldn't be needed to use this method because all methods
39
- # append terminal reset code to end of string.
40
- def reset
41
- wrap_with_sgr(TERM_EFFECTS[:reset])
42
- end
43
-
44
- # Turns on bright/bold for this text.
45
- def bright
46
- wrap_with_sgr(TERM_EFFECTS[:bright])
47
- end
48
-
49
- alias bold bright
50
-
51
- # Turns on faint/dark for this text (not well supported by terminal
52
- # emulators).
53
- def faint
54
- wrap_with_sgr(TERM_EFFECTS[:faint])
55
- end
56
-
57
- alias dark faint
58
-
59
- # Turns on italic style for this text (not well supported by terminal
60
- # emulators).
61
- def italic
62
- wrap_with_sgr(TERM_EFFECTS[:italic])
63
- end
64
-
65
- # Turns on underline decoration for this text.
66
- def underline
67
- wrap_with_sgr(TERM_EFFECTS[:underline])
68
- end
69
-
70
- # Turns on blinking attribute for this text (not well supported by terminal
71
- # emulators).
72
- def blink
73
- wrap_with_sgr(TERM_EFFECTS[:blink])
74
- end
75
-
76
- # Inverses current foreground/background colors.
77
- def inverse
78
- wrap_with_sgr(TERM_EFFECTS[:inverse])
79
- end
80
-
81
- # Hides this text (set its color to the same as background).
82
- def hide
83
- wrap_with_sgr(TERM_EFFECTS[:hide])
84
- end
85
-
86
- def cross_out
87
- wrap_with_sgr(TERM_EFFECTS[:cross_out])
88
- end
89
-
90
- alias strike cross_out
91
-
92
- def black
93
- color(:black)
94
- end
95
-
96
- def red
97
- color(:red)
98
- end
99
-
100
- def green
101
- color(:green)
102
- end
103
-
104
- def yellow
105
- color(:yellow)
106
- end
107
-
108
- def blue
109
- color(:blue)
110
- end
111
-
112
- def magenta
113
- color(:magenta)
114
- end
115
-
116
- def cyan
117
- color(:cyan)
118
- end
119
-
120
- def white
121
- color(:white)
122
- end
123
-
124
- # We take care of X11 color method call here.
125
- # Such as #aqua, #ghostwhite.
126
- def method_missing(method_name, *args)
127
- if Color::X11Named.color_names.include?(method_name) && args.empty?
128
- color(method_name)
129
- else
130
- super
131
- end
132
- end
133
-
134
- def respond_to_missing?(method_name, *args)
135
- Color::X11Named.color_names.include?(method_name) && args.empty? || super
136
- end
137
-
138
- private
139
-
140
- def wrap_with_sgr(codes) #:nodoc:
141
- self.class.new(StringUtils.wrap_with_sgr(self, [*codes]))
142
- end
143
- end
144
- end