def client_info(defaults)
info = {client_id: defaults[:client_id] || opts[:client_id]}
info[:client_secret] = opts[:secret] if opts[:secret]
del_attrs = Util.arglist(opts[:del_attrs], [])
CLIENT_SCHEMA.each_with_object(info) do |(k, p), info|
next if del_attrs.include?(k)
default = Util.strlist(defaults[k])
if opts.key?(k)
info[k] = opts[k].nil? || opts[k].empty? ? default : opts[k]
else
info[k] = opts[:interact] ?
info[k] = askd("#{k.to_s.gsub('_', ' ')} (#{p})", default): default
end
if (k == :autoapprove || k == :allowpublic) && (info[k] == 'true' || info[k] == 'false')
info[k] = !!(info[k] == 'true')
else
info[k] = Util.arglist(info[k]) if p == 'list'
info.delete(k) unless info[k]
end
if opts.key?(k) && k == :allowedproviders && (info[k].join('') == 'all' || info[k].join('') == 'null' || info[k].join('') == 'nil')
info[:allowedproviders] = nil
end
end
end