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