module ZendeskAppsSupport::Validations::Source

Constants

ENFORCED_LINTER_OPTIONS
LINTER_OPTIONS

Public Class Methods

call(package) click to toggle source
# File lib/zendesk_apps_support/validations/source.rb, line 51
def call(package)
  files = package.js_files
  app   = files.find { |file| file.relative_path == 'app.js' }
  eslint_config_path = "#{package.root}/.eslintrc.json"
  has_eslint_config = File.exists?(eslint_config_path)
  options = has_eslint_config ? JSON.parse(File.read(eslint_config_path)) : LINTER_OPTIONS

  if package_needs_app_js?(package)
    return [ ValidationError.new(:missing_source) ] unless app
  else
    return (package_has_code?(package) ? [ ValidationError.new(:no_code_for_ifo_notemplate) ] : [])
  end

  errors = eslint_errors(files, options)
  errors << eslint_errors(files, ENFORCED_LINTER_OPTIONS) if errors.empty? && has_eslint_config
  return app ? errors.flatten! : [ValidationError.new(:missing_source)]
end

Private Class Methods

eslint_error(file, options) click to toggle source
# File lib/zendesk_apps_support/validations/source.rb, line 81
def eslint_error(file, options)
  errors = Eslintrb.lint(file.read, options)
  [ESLintValidationError.new(file.relative_path, errors)] if errors.any?
end
eslint_errors(files, options) click to toggle source
# File lib/zendesk_apps_support/validations/source.rb, line 86
def eslint_errors(files, options)
  files.each_with_object([]) do |file, errors|
    error = eslint_error(file, options)
    errors << error unless error.nil?
  end
end
package_has_code?(package) click to toggle source
# File lib/zendesk_apps_support/validations/source.rb, line 71
def package_has_code?(package)
  !(package.js_files.empty? && package.template_files.empty? && package.app_css.empty?)
end
package_needs_app_js?(package) click to toggle source
# File lib/zendesk_apps_support/validations/source.rb, line 75
def package_needs_app_js?(package)
  return false if package.manifest_json['requirementsOnly']
  return false if package.iframe_only?
  true
end