license-acceptance 0.2.10 → 2.1.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 +4 -4
- data/Gemfile +23 -1
- data/config/product_info.toml +41 -10
- data/lib/license_acceptance/acceptor.rb +103 -46
- data/lib/license_acceptance/cli_flags/mixlib_cli.rb +2 -2
- data/lib/license_acceptance/cli_flags/thor.rb +3 -3
- data/lib/license_acceptance/config.rb +6 -4
- data/lib/license_acceptance/product.rb +15 -8
- data/lib/license_acceptance/product_reader.rb +29 -14
- data/lib/license_acceptance/strategy/argument.rb +45 -0
- data/lib/license_acceptance/strategy/base.rb +7 -0
- data/lib/license_acceptance/strategy/environment.rb +39 -0
- data/lib/license_acceptance/strategy/file.rb +101 -0
- data/lib/license_acceptance/strategy/prompt.rb +111 -0
- data/lib/license_acceptance/strategy/provided_value.rb +31 -0
- data/lib/license_acceptance/version.rb +1 -1
- metadata +12 -135
- data/Gemfile.lock +0 -94
- data/Rakefile +0 -6
- data/lib/license_acceptance/arg_acceptance.rb +0 -32
- data/lib/license_acceptance/env_acceptance.rb +0 -26
- data/lib/license_acceptance/file_acceptance.rb +0 -97
- data/lib/license_acceptance/prompt_acceptance.rb +0 -106
- data/spec/license_acceptance/acceptor_spec.rb +0 -272
- data/spec/license_acceptance/arg_acceptance_spec.rb +0 -57
- data/spec/license_acceptance/cli_flags/mixlib_cli_spec.rb +0 -14
- data/spec/license_acceptance/cli_flags/thor_spec.rb +0 -14
- data/spec/license_acceptance/config_spec.rb +0 -111
- data/spec/license_acceptance/env_acceptance_spec.rb +0 -65
- data/spec/license_acceptance/file_acceptance_spec.rb +0 -121
- data/spec/license_acceptance/product_reader_spec.rb +0 -139
- data/spec/license_acceptance/product_spec.rb +0 -13
- data/spec/license_acceptance/prompt_acceptance_spec.rb +0 -100
- data/spec/spec_helper.rb +0 -25
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
require "date"
|
|
2
|
+
autoload :YAML, "yaml"
|
|
3
|
+
require "fileutils" unless defined?(FileUtils)
|
|
4
|
+
require "etc" unless defined?(Etc)
|
|
5
|
+
require "license_acceptance/logger"
|
|
6
|
+
require "license_acceptance/strategy/base"
|
|
7
|
+
|
|
8
|
+
module LicenseAcceptance
|
|
9
|
+
module Strategy
|
|
10
|
+
|
|
11
|
+
# Read and write marker files that show acceptance.
|
|
12
|
+
class File < Base
|
|
13
|
+
include Logger
|
|
14
|
+
|
|
15
|
+
attr_reader :config
|
|
16
|
+
|
|
17
|
+
def initialize(config)
|
|
18
|
+
@config = config
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
INVOCATION_TIME = DateTime.now.freeze
|
|
22
|
+
|
|
23
|
+
# For all the given products in the product set, search all possible locations for the
|
|
24
|
+
# license acceptance files.
|
|
25
|
+
def accepted?(product_relationship)
|
|
26
|
+
searching = [product_relationship.parent] + product_relationship.children
|
|
27
|
+
missing_licenses = searching.clone
|
|
28
|
+
logger.debug("Searching for the following licenses: #{missing_licenses.map(&:id)}")
|
|
29
|
+
|
|
30
|
+
searching.each do |product|
|
|
31
|
+
config.license_locations.each do |loc|
|
|
32
|
+
f = ::File.join(loc, product.filename)
|
|
33
|
+
if ::File.exist?(f)
|
|
34
|
+
logger.debug("Found license #{product.filename} at #{f}")
|
|
35
|
+
missing_licenses.delete(product)
|
|
36
|
+
break
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
break if missing_licenses.empty?
|
|
40
|
+
end
|
|
41
|
+
logger.debug("Missing licenses remaining: #{missing_licenses.map(&:id)}")
|
|
42
|
+
missing_licenses
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def persist(product_relationship, missing_licenses)
|
|
46
|
+
parent = product_relationship.parent
|
|
47
|
+
parent_version = product_relationship.parent_version
|
|
48
|
+
root_dir = config.persist_location
|
|
49
|
+
|
|
50
|
+
unless Dir.exist?(root_dir)
|
|
51
|
+
begin
|
|
52
|
+
FileUtils.mkdir_p(root_dir)
|
|
53
|
+
rescue StandardError => e
|
|
54
|
+
msg = "Could not create license directory #{root_dir}"
|
|
55
|
+
logger.info "#{msg}\n\t#{e.message}\n\t#{e.backtrace.join("\n\t")}"
|
|
56
|
+
return [e]
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
errs = []
|
|
61
|
+
if missing_licenses.include?(parent)
|
|
62
|
+
err = persist_license(root_dir, parent, parent, parent_version)
|
|
63
|
+
errs << err unless err.nil?
|
|
64
|
+
end
|
|
65
|
+
product_relationship.children.each do |child|
|
|
66
|
+
if missing_licenses.include?(child)
|
|
67
|
+
err = persist_license(root_dir, child, parent, parent_version)
|
|
68
|
+
errs << err unless err.nil?
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
errs
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
|
|
76
|
+
def persist_license(folder_path, product, parent, parent_version)
|
|
77
|
+
path = ::File.join(folder_path, product.filename)
|
|
78
|
+
logger.info("Persisting a license for #{product.pretty_name} at path #{path}")
|
|
79
|
+
::File.open(path, ::File::WRONLY | ::File::CREAT | ::File::EXCL) do |license_file|
|
|
80
|
+
contents = {
|
|
81
|
+
id: product.id,
|
|
82
|
+
name: product.pretty_name,
|
|
83
|
+
date_accepted: INVOCATION_TIME.iso8601,
|
|
84
|
+
accepting_product: parent.id,
|
|
85
|
+
accepting_product_version: parent_version,
|
|
86
|
+
user: Etc.getlogin,
|
|
87
|
+
file_format: 1,
|
|
88
|
+
}
|
|
89
|
+
contents = Hash[contents.map { |k, v| [k.to_s, v] }]
|
|
90
|
+
license_file << YAML.dump(contents)
|
|
91
|
+
end
|
|
92
|
+
nil
|
|
93
|
+
rescue StandardError => e
|
|
94
|
+
msg = "Could not persist license to #{path}"
|
|
95
|
+
logger.info "#{msg}\n\t#{e.message}\n\t#{e.backtrace.join("\n\t")}"
|
|
96
|
+
e
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
autoload :TTY, "tty-prompt"
|
|
2
|
+
require "pastel"
|
|
3
|
+
require "license_acceptance/logger"
|
|
4
|
+
require "license_acceptance/strategy/base"
|
|
5
|
+
require "timeout" unless defined?(Timeout)
|
|
6
|
+
|
|
7
|
+
module LicenseAcceptance
|
|
8
|
+
module Strategy
|
|
9
|
+
|
|
10
|
+
# Interactive prompt for accepting and persistence license acceptance, or failing with custom exit code
|
|
11
|
+
class Prompt < Base
|
|
12
|
+
include Logger
|
|
13
|
+
|
|
14
|
+
attr_reader :output
|
|
15
|
+
|
|
16
|
+
def initialize(config)
|
|
17
|
+
@output = config.output
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
WIDTH = 50
|
|
21
|
+
PASTEL = Pastel.new
|
|
22
|
+
BORDER = "+---------------------------------------------+".freeze
|
|
23
|
+
YES = PASTEL.green.bold("yes")
|
|
24
|
+
CHECK = PASTEL.green("✔")
|
|
25
|
+
|
|
26
|
+
def request(missing_licenses, &persist_callback)
|
|
27
|
+
logger.debug("Requesting a license for #{missing_licenses.map(&:id)}")
|
|
28
|
+
c = missing_licenses.size
|
|
29
|
+
s = c > 1 ? "s" : ""
|
|
30
|
+
|
|
31
|
+
acceptance_question = "Do you accept the #{c} product license#{s} (#{YES}/no)?"
|
|
32
|
+
output.puts <<~EOM
|
|
33
|
+
#{BORDER}
|
|
34
|
+
Chef License Acceptance
|
|
35
|
+
|
|
36
|
+
Before you can continue, #{c} product license#{s}
|
|
37
|
+
must be accepted. View the license at
|
|
38
|
+
https://www.chef.io/end-user-license-agreement/
|
|
39
|
+
|
|
40
|
+
License#{s} that need accepting:
|
|
41
|
+
* #{missing_licenses.map(&:pretty_name).join("\n * ")}
|
|
42
|
+
|
|
43
|
+
#{acceptance_question}
|
|
44
|
+
|
|
45
|
+
EOM
|
|
46
|
+
|
|
47
|
+
if ask(output, c, s, persist_callback)
|
|
48
|
+
output.puts BORDER
|
|
49
|
+
return true
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
output.puts <<~EOM
|
|
53
|
+
|
|
54
|
+
If you do not accept this license you will
|
|
55
|
+
not be able to use Chef products.
|
|
56
|
+
|
|
57
|
+
#{acceptance_question}
|
|
58
|
+
|
|
59
|
+
EOM
|
|
60
|
+
|
|
61
|
+
answer = ask(output, c, s, persist_callback)
|
|
62
|
+
if answer != "yes"
|
|
63
|
+
output.puts BORDER
|
|
64
|
+
end
|
|
65
|
+
answer
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
private
|
|
69
|
+
|
|
70
|
+
def ask(output, c, s, persist_callback)
|
|
71
|
+
logger.debug("Attempting to request interactive prompt on TTY")
|
|
72
|
+
prompt = TTY::Prompt.new(track_history: false, active_color: :bold, interrupt: :exit, output: output)
|
|
73
|
+
|
|
74
|
+
answer = "no"
|
|
75
|
+
begin
|
|
76
|
+
Timeout.timeout(60, PromptTimeout) do
|
|
77
|
+
answer = prompt.ask(">") do |q|
|
|
78
|
+
q.modify :down, :trim
|
|
79
|
+
q.required true
|
|
80
|
+
q.messages[:required?] = "You must enter 'yes' or 'no'"
|
|
81
|
+
q.validate(/^\s*(yes|no)\s*$/i)
|
|
82
|
+
q.messages[:valid?] = "You must enter 'yes' or 'no'"
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
rescue PromptTimeout
|
|
86
|
+
prompt.unsubscribe(prompt.reader)
|
|
87
|
+
output.puts "Prompt timed out. Use non-interactive flags or enter an answer within 60 seconds."
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
if answer == "yes"
|
|
91
|
+
output.puts
|
|
92
|
+
output.puts "Persisting #{c} product license#{s}..."
|
|
93
|
+
errs = persist_callback.call
|
|
94
|
+
if errs.empty?
|
|
95
|
+
output.puts "#{CHECK} #{c} product license#{s} persisted.\n\n"
|
|
96
|
+
else
|
|
97
|
+
output.puts <<~EOM
|
|
98
|
+
#{CHECK} #{c} product license#{s} accepted.
|
|
99
|
+
Could not persist acceptance:\n\t* #{errs.map(&:message).join("\n\t* ")}
|
|
100
|
+
EOM
|
|
101
|
+
end
|
|
102
|
+
return true
|
|
103
|
+
end
|
|
104
|
+
false
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
class PromptTimeout < StandardError; end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require "license_acceptance/strategy/base"
|
|
2
|
+
|
|
3
|
+
module LicenseAcceptance
|
|
4
|
+
module Strategy
|
|
5
|
+
|
|
6
|
+
# Used for library consumers to parse their own form of acceptance (knife config, omnibus config, etc.) and pass it in
|
|
7
|
+
class ProvidedValue < Base
|
|
8
|
+
attr_reader :value
|
|
9
|
+
|
|
10
|
+
def initialize(value)
|
|
11
|
+
@value = value
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def accepted?
|
|
15
|
+
String(value).downcase == ACCEPT
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def silent?
|
|
19
|
+
String(value).downcase == ACCEPT_SILENT
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def no_persist?
|
|
23
|
+
String(value).downcase == ACCEPT_NO_PERSIST
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def value?
|
|
27
|
+
!!value
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: license-acceptance
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- tyler-ball
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-09-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pastel
|
|
@@ -44,140 +44,28 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0.
|
|
47
|
+
version: '0.6'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0.
|
|
54
|
+
version: '0.6'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: tty-prompt
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.18'
|
|
62
|
-
type: :runtime
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.18'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rake
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '10.0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '10.0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rspec
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '3.0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '3.0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: pry
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - "~>"
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0.12'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - "~>"
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0.12'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: pry-byebug
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - "~>"
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '3.6'
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - "~>"
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '3.6'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: pry-stack_explorer
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - "~>"
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: '0.4'
|
|
132
|
-
type: :development
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - "~>"
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '0.4'
|
|
139
|
-
- !ruby/object:Gem::Dependency
|
|
140
|
-
name: mixlib-cli
|
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
|
142
|
-
requirements:
|
|
143
|
-
- - "~>"
|
|
144
|
-
- !ruby/object:Gem::Version
|
|
145
|
-
version: '1.7'
|
|
146
|
-
type: :development
|
|
147
|
-
prerelease: false
|
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
-
requirements:
|
|
150
|
-
- - "~>"
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '1.7'
|
|
153
|
-
- !ruby/object:Gem::Dependency
|
|
154
|
-
name: thor
|
|
155
57
|
requirement: !ruby/object:Gem::Requirement
|
|
156
58
|
requirements:
|
|
157
59
|
- - "~>"
|
|
158
60
|
- !ruby/object:Gem::Version
|
|
159
61
|
version: '0.20'
|
|
160
|
-
type: :
|
|
62
|
+
type: :runtime
|
|
161
63
|
prerelease: false
|
|
162
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
65
|
requirements:
|
|
164
66
|
- - "~>"
|
|
165
67
|
- !ruby/object:Gem::Version
|
|
166
68
|
version: '0.20'
|
|
167
|
-
- !ruby/object:Gem::Dependency
|
|
168
|
-
name: climate_control
|
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
|
170
|
-
requirements:
|
|
171
|
-
- - "~>"
|
|
172
|
-
- !ruby/object:Gem::Version
|
|
173
|
-
version: '0.2'
|
|
174
|
-
type: :development
|
|
175
|
-
prerelease: false
|
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
-
requirements:
|
|
178
|
-
- - "~>"
|
|
179
|
-
- !ruby/object:Gem::Version
|
|
180
|
-
version: '0.2'
|
|
181
69
|
description: Chef End User License Agreement Acceptance for Ruby products
|
|
182
70
|
email:
|
|
183
71
|
- tball@chef.io
|
|
@@ -186,34 +74,23 @@ extensions: []
|
|
|
186
74
|
extra_rdoc_files: []
|
|
187
75
|
files:
|
|
188
76
|
- Gemfile
|
|
189
|
-
- Gemfile.lock
|
|
190
77
|
- LICENSE
|
|
191
|
-
- Rakefile
|
|
192
78
|
- config/product_info.toml
|
|
193
79
|
- lib/license_acceptance/acceptor.rb
|
|
194
|
-
- lib/license_acceptance/arg_acceptance.rb
|
|
195
80
|
- lib/license_acceptance/cli_flags/mixlib_cli.rb
|
|
196
81
|
- lib/license_acceptance/cli_flags/thor.rb
|
|
197
82
|
- lib/license_acceptance/config.rb
|
|
198
|
-
- lib/license_acceptance/env_acceptance.rb
|
|
199
|
-
- lib/license_acceptance/file_acceptance.rb
|
|
200
83
|
- lib/license_acceptance/logger.rb
|
|
201
84
|
- lib/license_acceptance/product.rb
|
|
202
85
|
- lib/license_acceptance/product_reader.rb
|
|
203
86
|
- lib/license_acceptance/product_relationship.rb
|
|
204
|
-
- lib/license_acceptance/
|
|
87
|
+
- lib/license_acceptance/strategy/argument.rb
|
|
88
|
+
- lib/license_acceptance/strategy/base.rb
|
|
89
|
+
- lib/license_acceptance/strategy/environment.rb
|
|
90
|
+
- lib/license_acceptance/strategy/file.rb
|
|
91
|
+
- lib/license_acceptance/strategy/prompt.rb
|
|
92
|
+
- lib/license_acceptance/strategy/provided_value.rb
|
|
205
93
|
- lib/license_acceptance/version.rb
|
|
206
|
-
- spec/license_acceptance/acceptor_spec.rb
|
|
207
|
-
- spec/license_acceptance/arg_acceptance_spec.rb
|
|
208
|
-
- spec/license_acceptance/cli_flags/mixlib_cli_spec.rb
|
|
209
|
-
- spec/license_acceptance/cli_flags/thor_spec.rb
|
|
210
|
-
- spec/license_acceptance/config_spec.rb
|
|
211
|
-
- spec/license_acceptance/env_acceptance_spec.rb
|
|
212
|
-
- spec/license_acceptance/file_acceptance_spec.rb
|
|
213
|
-
- spec/license_acceptance/product_reader_spec.rb
|
|
214
|
-
- spec/license_acceptance/product_spec.rb
|
|
215
|
-
- spec/license_acceptance/prompt_acceptance_spec.rb
|
|
216
|
-
- spec/spec_helper.rb
|
|
217
94
|
homepage: https://github.com/chef/license-acceptance/
|
|
218
95
|
licenses:
|
|
219
96
|
- Apache-2.0
|
|
@@ -226,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
226
103
|
requirements:
|
|
227
104
|
- - ">="
|
|
228
105
|
- !ruby/object:Gem::Version
|
|
229
|
-
version: '
|
|
106
|
+
version: '2.4'
|
|
230
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
108
|
requirements:
|
|
232
109
|
- - ">="
|
data/Gemfile.lock
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
license-acceptance (0.2.10)
|
|
5
|
-
pastel (~> 0.7)
|
|
6
|
-
tomlrb (~> 1.2)
|
|
7
|
-
tty-box (~> 0.3)
|
|
8
|
-
tty-prompt (~> 0.18)
|
|
9
|
-
|
|
10
|
-
GEM
|
|
11
|
-
remote: https://rubygems.org/
|
|
12
|
-
specs:
|
|
13
|
-
binding_of_caller (0.8.0)
|
|
14
|
-
debug_inspector (>= 0.0.1)
|
|
15
|
-
byebug (11.0.1)
|
|
16
|
-
climate_control (0.2.0)
|
|
17
|
-
coderay (1.1.2)
|
|
18
|
-
debug_inspector (0.0.3)
|
|
19
|
-
diff-lcs (1.3)
|
|
20
|
-
equatable (0.5.0)
|
|
21
|
-
method_source (0.9.2)
|
|
22
|
-
mixlib-cli (1.7.0)
|
|
23
|
-
necromancer (0.4.0)
|
|
24
|
-
pastel (0.7.2)
|
|
25
|
-
equatable (~> 0.5.0)
|
|
26
|
-
tty-color (~> 0.4.0)
|
|
27
|
-
pry (0.12.2)
|
|
28
|
-
coderay (~> 1.1.0)
|
|
29
|
-
method_source (~> 0.9.0)
|
|
30
|
-
pry-byebug (3.7.0)
|
|
31
|
-
byebug (~> 11.0)
|
|
32
|
-
pry (~> 0.10)
|
|
33
|
-
pry-stack_explorer (0.4.9.3)
|
|
34
|
-
binding_of_caller (>= 0.7)
|
|
35
|
-
pry (>= 0.9.11)
|
|
36
|
-
rake (10.5.0)
|
|
37
|
-
rspec (3.8.0)
|
|
38
|
-
rspec-core (~> 3.8.0)
|
|
39
|
-
rspec-expectations (~> 3.8.0)
|
|
40
|
-
rspec-mocks (~> 3.8.0)
|
|
41
|
-
rspec-core (3.8.0)
|
|
42
|
-
rspec-support (~> 3.8.0)
|
|
43
|
-
rspec-expectations (3.8.2)
|
|
44
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
45
|
-
rspec-support (~> 3.8.0)
|
|
46
|
-
rspec-mocks (3.8.0)
|
|
47
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
48
|
-
rspec-support (~> 3.8.0)
|
|
49
|
-
rspec-support (3.8.0)
|
|
50
|
-
strings (0.1.5)
|
|
51
|
-
strings-ansi (~> 0.1)
|
|
52
|
-
unicode-display_width (~> 1.5)
|
|
53
|
-
unicode_utils (~> 1.4)
|
|
54
|
-
strings-ansi (0.1.0)
|
|
55
|
-
thor (0.20.3)
|
|
56
|
-
timers (4.3.0)
|
|
57
|
-
tomlrb (1.2.8)
|
|
58
|
-
tty-box (0.3.0)
|
|
59
|
-
pastel (~> 0.7.2)
|
|
60
|
-
strings (~> 0.1.4)
|
|
61
|
-
tty-cursor (~> 0.6.0)
|
|
62
|
-
tty-color (0.4.3)
|
|
63
|
-
tty-cursor (0.6.1)
|
|
64
|
-
tty-prompt (0.18.1)
|
|
65
|
-
necromancer (~> 0.4.0)
|
|
66
|
-
pastel (~> 0.7.0)
|
|
67
|
-
timers (~> 4.0)
|
|
68
|
-
tty-cursor (~> 0.6.0)
|
|
69
|
-
tty-reader (~> 0.5.0)
|
|
70
|
-
tty-reader (0.5.0)
|
|
71
|
-
tty-cursor (~> 0.6.0)
|
|
72
|
-
tty-screen (~> 0.6.4)
|
|
73
|
-
wisper (~> 2.0.0)
|
|
74
|
-
tty-screen (0.6.5)
|
|
75
|
-
unicode-display_width (1.5.0)
|
|
76
|
-
unicode_utils (1.4.0)
|
|
77
|
-
wisper (2.0.0)
|
|
78
|
-
|
|
79
|
-
PLATFORMS
|
|
80
|
-
ruby
|
|
81
|
-
|
|
82
|
-
DEPENDENCIES
|
|
83
|
-
climate_control (~> 0.2)
|
|
84
|
-
license-acceptance!
|
|
85
|
-
mixlib-cli (~> 1.7)
|
|
86
|
-
pry (~> 0.12)
|
|
87
|
-
pry-byebug (~> 3.6)
|
|
88
|
-
pry-stack_explorer (~> 0.4)
|
|
89
|
-
rake (~> 10.0)
|
|
90
|
-
rspec (~> 3.0)
|
|
91
|
-
thor (~> 0.20)
|
|
92
|
-
|
|
93
|
-
BUNDLED WITH
|
|
94
|
-
1.17.3
|
data/Rakefile
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module LicenseAcceptance
|
|
2
|
-
class ArgAcceptance
|
|
3
|
-
|
|
4
|
-
def accepted?(argv)
|
|
5
|
-
look_for_value(argv, "accept")
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def silent?(argv)
|
|
9
|
-
look_for_value(argv, "accept-silent")
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def no_persist?(argv)
|
|
13
|
-
look_for_value(argv, "accept-no-persist")
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
def look_for_value(argv, sought)
|
|
19
|
-
if argv.include?("--chef-license=#{sought}")
|
|
20
|
-
return true
|
|
21
|
-
end
|
|
22
|
-
i = argv.index("--chef-license")
|
|
23
|
-
unless i.nil?
|
|
24
|
-
val = argv[i+1]
|
|
25
|
-
if val != nil && val.downcase == sought
|
|
26
|
-
return true
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
return false
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module LicenseAcceptance
|
|
2
|
-
class EnvAcceptance
|
|
3
|
-
|
|
4
|
-
def accepted?(env)
|
|
5
|
-
look_for_value(env, "accept")
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def silent?(env)
|
|
9
|
-
look_for_value(env, "accept-silent")
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def no_persist?(env)
|
|
13
|
-
look_for_value(env, "accept-no-persist")
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
def look_for_value(env, sought)
|
|
19
|
-
if env['CHEF_LICENSE'] && env['CHEF_LICENSE'].downcase == sought
|
|
20
|
-
return true
|
|
21
|
-
end
|
|
22
|
-
return false
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
end
|