class ZendeskAppsTools::Settings
Public Instance Methods
find_settings_file(path)
click to toggle source
# File lib/zendesk_apps_tools/settings.rb, line 29 def find_settings_file(path) ['./settings.yml', './settings.json'].reduce([]) do | memo, try_file | memo << File.join(path, try_file) memo << File.join(path, try_file) end.find do |settings_file| File.exist?(settings_file) end end
get_settings_from_file(filepath, parameters, domain = nil)
click to toggle source
# File lib/zendesk_apps_tools/settings.rb, line 38 def get_settings_from_file(filepath, parameters, domain = nil) return {} if parameters.nil? return nil unless File.exist? filepath begin settings_file = File.read(filepath) if filepath =~ /\.json$/ || settings_file =~ /\A\s*{/ settings_data = JSON.load(settings_file) else settings_data = YAML.load(settings_file) end settings_data = settings_data[domain] if settings_data[domain] settings_data.each do |index, setting| if setting.is_a?(Hash) || setting.is_a?(Array) settings_data[index] = JSON.dump(setting) end end rescue => err puts "\e[0;31mFailed to load #{filepath}\e[0m\n" puts "\e[0;31m#{err.message}\e[0m\n" return nil end parameters.inject({}) do |settings, param| input = settings_data[param['name']] if !input && param['default'] input = param['default'] end if !input && param['required'] puts "\e[0;31m'#{param['name']}' is required but not specified in the config file.\e[0m\n" input = nil end if param['type'] == 'checkbox' input = convert_to_boolean_for_checkbox(input) end settings[param['name']] = input if input != '' settings end end
get_settings_from_user_input(user_input, parameters)
click to toggle source
# File lib/zendesk_apps_tools/settings.rb, line 6 def get_settings_from_user_input(user_input, parameters) return {} if parameters.nil? parameters.inject({}) do |settings, param| if param['default'] input = user_input.get_value_from_stdin("Enter a value for parameter '#{param['name']}' or press 'Return' to use the default value '#{param['default']}':\n", allow_empty: true) input = param['default'] if input.empty? elsif param['required'] input = user_input.get_value_from_stdin("Enter a value for required parameter '#{param['name']}':\n") else input = user_input.get_value_from_stdin("Enter a value for optional parameter '#{param['name']}' or press 'Return' to skip:\n", allow_empty: true) input = nil if input.empty? end if param['type'] == 'checkbox' input = convert_to_boolean_for_checkbox(input) end settings[param['name']] = input if input != '' settings end end
Private Instance Methods
convert_to_boolean_for_checkbox(input)
click to toggle source
# File lib/zendesk_apps_tools/settings.rb, line 87 def convert_to_boolean_for_checkbox(input) unless [TrueClass, FalseClass].include?(input.class) return (input =~ /^(true|t|yes|y|1)$/i) ? true : false end input end