lib/cloudstrap/config.rb in cloudstrap-0.34.1.pre vs lib/cloudstrap/config.rb in cloudstrap-0.34.5.pre

- old
+ new

@@ -89,18 +89,40 @@ alias hdp_package_url hdp_bootstrap_package_url Contract None => String def properties_seed_url - lookup :properties_seed_url + required :properties_seed_url end Contract None => String def bootstrap_properties_seed_url properties_seed_url end private + + Contract None => ::Pastel::Delegator + def pastel + @pastel ||= Pastel.new + end + + Contract RespondTo[:to_s] => nil + def abort_on_missing(key) + STDERR.puts pastel.red <<EOS + +#{pastel.bold key} is required, but is not configured. + +You can resolve this by adding it to #{pastel.bold file}, or by +setting #{pastel.bold('BOOTSTRAP_' + key.to_s.upcase)} in the environment. +EOS + abort + end + + Contract RespondTo[:to_s] => String + def required(key) + lookup(key, '').tap { |value| abort_on_missing key if value.empty? } + end StringToString = Func[Maybe[String] => Maybe[String]] Contract RespondTo[:to_s], Maybe[Or[String, StringToString]] => Maybe[String] def memoize(key, value = nil)