diff options
-rw-r--r-- | .expeditor/verify.pipeline.yml | 3 | ||||
-rw-r--r-- | tasks/spellcheck.rb | 20 |
2 files changed, 18 insertions, 5 deletions
diff --git a/.expeditor/verify.pipeline.yml b/.expeditor/verify.pipeline.yml index 60142e9928..987980aa3a 100644 --- a/.expeditor/verify.pipeline.yml +++ b/.expeditor/verify.pipeline.yml @@ -573,9 +573,8 @@ steps: - label: "Spellcheck" commands: - - ruby -rjson -e "JSON.parse(File.read('cspell.json'))" 2>/dev/null || (echo "Failed to parse config file 'cspell.json', skipping spellcheck" && exit 1) - npm install -g cspell - - cspell "**/*" + - rake -f tasks/spellcheck.rb spellcheck soft_fail: true expeditor: executor: diff --git a/tasks/spellcheck.rb b/tasks/spellcheck.rb index 002518d9ee..5b185c1ed6 100644 --- a/tasks/spellcheck.rb +++ b/tasks/spellcheck.rb @@ -17,17 +17,31 @@ namespace :spellcheck do task :fetch_common do - sh "wget https://raw.githubusercontent.com/chef/chef_dictionary/master/chef.txt -O chef_dictionary.txt" + sh "wget -q https://raw.githubusercontent.com/chef/chef_dictionary/master/chef.txt -O chef_dictionary.txt" end - task run: :fetch_common do + task run: [:config_check, :fetch_common] do sh 'cspell "**/*"' end desc "List the unique unrecognized words in the project." - task unknown_words: :fetch_common do + task unknown_words: [:config_check, :fetch_common] do sh 'cspell "**/*" --wordsOnly --no-summary | sort | uniq' end + + task :config_check do + require 'json' + + config_file = 'cspell.json' + + unless File.readable?(config_file) + abort "Spellcheck config file '#{config_file}' not found, skipping spellcheck" + end + + unless (JSON.parse(File.read(config_file)) rescue false) + abort "Failed to parse config file '#{config_file}', skipping spellcheck" + end + end end desc "Run spellcheck on the project." |