Sha256: 3541d0fd0bae994eb1457bd7c2adc6782a3976f829be4add39f08e49712cd19f
Contents?: true
Size: 1.75 KB
Versions: 2
Compression:
Stored size: 1.75 KB
Contents
# frozen_string_literal: true module Danger # Plugin to make sure View file changes in a Pull Request will have accompanying screenshots in the PR description. # # @example Check if a PR changing views needs to have screenshots # # # If a PR has view changes, report a warning if there are no screenshots attached # view_changes_checker.check # # @see Automattic/dangermattic # @tags ios, android, swift, java, kotlin, screenshots # class ViewChangesChecker < Plugin VIEW_EXTENSIONS_IOS = /(View|Button)\.(swift|m)$|\.xib$|\.storyboard$/ VIEW_EXTENSIONS_ANDROID = /(?i)(View|Button)\.(java|kt|xml)$/ MEDIA_IN_PR_BODY_PATTERNS = [ %r{https?://\S*\.(gif|jpg|jpeg|png|svg)}, %r{https?://\S*\.(mp4|avi|mov|mkv)}, %r{https?://\S*github\S+/\S+/assets/}, %r{https?://\S*github\S+/storage/user/}, /!\[(.*?)\]\((.*?)\)/, /<img\s+[^>]*src\s*=\s*[^>]*>/, /<video\s+[^>]*src\s*=\s*[^>]*>/ ].freeze MESSAGE = 'View files have been modified, but no screenshot or video is included in the pull request. ' \ 'Consider adding some for clarity.' # Checks if view files have been modified and if a screenshot or video is included in the pull request body, # displaying a warning if view files have been modified but no screenshot or video is included. # # @return [void] def check(report_type: :warning) view_files_modified = git.modified_files.any? do |file| VIEW_EXTENSIONS_IOS =~ file || VIEW_EXTENSIONS_ANDROID =~ file end pr_has_media = MEDIA_IN_PR_BODY_PATTERNS.any? do |pattern| github.pr_body =~ pattern end reporter.report(message: MESSAGE, type: report_type) if view_files_modified && !pr_has_media end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
danger-dangermattic-1.2.2 | lib/dangermattic/plugins/view_changes_checker.rb |
danger-dangermattic-1.2.1 | lib/dangermattic/plugins/view_changes_checker.rb |