diff options
Diffstat (limited to 'danger/prettier/Dangerfile')
-rw-r--r-- | danger/prettier/Dangerfile | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/danger/prettier/Dangerfile b/danger/prettier/Dangerfile new file mode 100644 index 00000000000..86f9f6af475 --- /dev/null +++ b/danger/prettier/Dangerfile @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +def get_prettier_files(files) + files.select do |file| + file.end_with?('.js', '.scss', '.vue') + end +end + +prettier_candidates = get_prettier_files(git.added_files + git.modified_files) + +return if prettier_candidates.empty? + +unpretty = `node_modules/prettier/bin-prettier.js --list-different #{prettier_candidates.join(" ")}` + .split(/$/) + .map(&:strip) + .reject(&:empty?) + +return if unpretty.empty? + +warn 'This merge request changed frontend files without pretty printing them.' + +markdown(<<~MARKDOWN) + ## Pretty print Frontend files + + The following files should have been pretty printed with `prettier`: + + * #{unpretty.map { |path| "`#{path}`" }.join("\n* ")} + + Please run + + ``` + node_modules/.bin/prettier --write \\ + #{unpretty.map { |path| " '#{path}'" }.join(" \\\n")} + ``` + + Also consider auto-formatting [on-save]. + + [on-save]: https://docs.gitlab.com/ee/development/new_fe_guide/style/prettier.html +MARKDOWN |