summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2020-06-23 15:39:31 -0700
committerTim Smith <tsmith84@gmail.com>2020-06-23 15:39:31 -0700
commit6f6f107bc1c76e5f3b5c8f2c1dbde73859e8ad09 (patch)
treec0b812e5872f7d79aebfd50f9f26435482b3ec6d
parentae23ca40a68b58dbff20e20a47105c265ceb0ce2 (diff)
downloadohai-6f6f107bc1c76e5f3b5c8f2c1dbde73859e8ad09.tar.gz
Add cspell task
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--.gitignore5
-rw-r--r--Rakefile1
-rw-r--r--cspell.json38
-rw-r--r--tasks/spellcheck.rb34
4 files changed, 77 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index f830aca3..567cff4f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,7 @@ vendor
# yard
.yardoc
-doc/* \ No newline at end of file
+doc/*
+
+# our custom dictionary pulled from https://github.com/chef/chef_dictionary/
+chef_dictionary.txt \ No newline at end of file
diff --git a/Rakefile b/Rakefile
index 200737d3..93aff295 100644
--- a/Rakefile
+++ b/Rakefile
@@ -2,6 +2,7 @@ require "bundler/gem_tasks"
begin
require "rspec/core/rake_task"
+ require_relative "tasks/spellcheck"
RSpec::Core::RakeTask.new do |t|
t.pattern = "spec/**/*_spec.rb"
diff --git a/cspell.json b/cspell.json
new file mode 100644
index 00000000..97996bf9
--- /dev/null
+++ b/cspell.json
@@ -0,0 +1,38 @@
+// cSpell Settings
+{
+ // Version of the setting file. Always 0.1
+ "version": "0.1",
+ // language - current active spelling language
+ "language": "en",
+ "dictionaryDefinitions": [
+ {
+ "name": "chef",
+ "file": "./chef_dictionary.txt",
+ "description": "Custom Chef Dictionary"
+ }
+ ],
+ "dictionaries": ["chef"],
+ // flagWords - list of words to be always considered incorrect
+ // This is useful for offensive words and common spelling errors.
+ // For example "hte" should be "the"
+ "flagWords": [
+ "hte"
+ ],
+ "ignorePaths": [
+ "CHANGELOG.md",
+ "**/*.gemspec",
+ "**/Gemfile.lock",
+ "**/Gemfile",
+ ".expeditor/**/*",
+ "**/*.yml",
+ "**/*.toml",
+ "spec/data/**/*",
+ "spec/**"
+ ],
+ "ignoreRegExpList": [
+ // Ignore "'s" at the end of a word. If "Chef" is an accepted word, so is "Chef's".
+ "/'s\\b/",
+ // Ignore "'d" at the end of a word. If "dup" is an accepted word, so is "dup'd".
+ "/'d\\b/"
+ ]
+}
diff --git a/tasks/spellcheck.rb b/tasks/spellcheck.rb
new file mode 100644
index 00000000..002518d9
--- /dev/null
+++ b/tasks/spellcheck.rb
@@ -0,0 +1,34 @@
+#
+# Copyright:: Copyright (c) Chef Software Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace :spellcheck do
+ task :fetch_common do
+ sh "wget https://raw.githubusercontent.com/chef/chef_dictionary/master/chef.txt -O chef_dictionary.txt"
+ end
+
+ task run: :fetch_common do
+ sh 'cspell "**/*"'
+ end
+
+ desc "List the unique unrecognized words in the project."
+ task unknown_words: :fetch_common do
+ sh 'cspell "**/*" --wordsOnly --no-summary | sort | uniq'
+ end
+end
+
+desc "Run spellcheck on the project."
+task spellcheck: "spellcheck:run"