# 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