Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

check-spelling: add dictionaries #1069

Merged
merged 1 commit into from
Jan 3, 2022

Conversation

jsoref
Copy link
Contributor

@jsoref jsoref commented Jan 2, 2022

1. Issue, if available:

2. Description of changes:

This pulls in the aws and go dictionaries.

Essentially, if a word is in one of these dictionaries, it will be treated as if it's in the dictionary and thus not flagged. You can see how this impacts expect to get a sense of how much/little coverage changes.

3. Does this change impact docs?

  • Yes, PR includes docs updates
  • Yes, issue opened: link to issue
  • No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@netlify
Copy link

netlify bot commented Jan 2, 2022

✔️ Deploy Preview for karpenter-docs-prod canceled.

🔨 Explore the source changes: 6c65df2

🔍 Inspect the deploy log: https://app.netlify.com/sites/karpenter-docs-prod/deploys/61d151fc12fb530008f2416a

@github-actions
Copy link
Contributor

github-actions bot commented Jan 2, 2022

@check-spelling-bot Report

🔴 Please review

See the files view or the action log for details.

Unrecognized words (56)
amazonaws
api
apps
Arns
Atoi
autoscaling
aws
cidr
cloudformation
Cmp
config
csv
deprovision
dns
Ebs
ecr
eks
entitlements
Errorf
Fatalf
filepath
Fpga
func
GOARCH
golang
GOPATH
hostname
html
http
iam
json
len
lifecycle
linux
metadata
Mutex
namespace
Nop
omitempty
plugin
png
regex
Sprintf
ssm
strconv
sts
testenv
TLS
uint
url
versioning
vpc
webhook
website
workflow
xml
Previously acknowledged words that are now absent deprovisioned Hostnames https urls
Available dictionaries could cover words not in the dictionary

cspell:cpp/cpp.txt (104293) covers 72 of them
cspell:aws/aws.txt (1485) covers 30 of them
cspell:golang/go.txt (7745) covers 18 of them
cspell:django/django.txt (2342) covers 17 of them
cspell:filetypes/filetypes.txt (337) covers 11 of them
cspell:html/html.txt (542) covers 9 of them
cspell:css/css.txt (993) covers 9 of them
cspell:java/java.txt (33524) covers 8 of them
cspell:fullstack/fullstack.txt (181) covers 7 of them
cspell:python/python.txt (364) covers 6 of them
cspell:lua/lua.txt (391) covers 6 of them
cspell:scala/scala.txt (2752) covers 5 of them
cspell:npm/npm.txt (671) covers 5 of them
cspell:csharp/csharp.txt (123) covers 3 of them
cspell:rust/rust.txt (112) covers 2 of them
cspell:ruby/ruby.txt (354) covers 2 of them
cspell:node/node.txt (9611) covers 2 of them
cspell:bash/bash-words.txt (22) covers 2 of them
cspell:php/php.txt (9785) covers 1 of them
cspell:dotnet/dotnet.txt (9824) covers 1 of them
cspell:ada/ada.txt (72) covers 1 of them

Consider adding them using:

      with:
        extra_dictionaries:
          cspell:cpp/cpp.txt
          cspell:aws/aws.txt
          cspell:golang/go.txt
          cspell:django/django.txt
          cspell:filetypes/filetypes.txt
          cspell:html/html.txt
          cspell:css/css.txt
          cspell:java/java.txt
          cspell:fullstack/fullstack.txt
          cspell:python/python.txt
          cspell:lua/lua.txt
          cspell:scala/scala.txt
          cspell:npm/npm.txt
          cspell:csharp/csharp.txt
          cspell:rust/rust.txt
          cspell:ruby/ruby.txt
          cspell:node/node.txt
          cspell:bash/bash-words.txt
          cspell:php/php.txt
          cspell:dotnet/dotnet.txt
          cspell:ada/ada.txt

To stop checking additional dictionaries, add:

      with:
        check_extra_dictionaries: ''
To accept these unrecognized words as correct (and remove the previously acknowledged and now absent words), run the following commands

... in a clone of the [email protected]:jsoref/karpenter.git repository
on the spell-check-dictionaries branch:

update_files() {
perl -e '
my @expect_files=qw('".github/actions/spelling/expect.txt"');
@ARGV=@expect_files;
my @stale=qw('"$patch_remove"');
my $re=join "|", @stale;
my $suffix=".".time();
my $previous="";
sub maybe_unlink { unlink($_[0]) if $_[0]; }
while (<>) {
if ($ARGV ne $old_argv) { maybe_unlink($previous); $previous="$ARGV$suffix"; rename($ARGV, $previous); open(ARGV_OUT, ">$ARGV"); select(ARGV_OUT); $old_argv = $ARGV; }
next if /^(?:$re)(?:(?:\r|\n)*$| .*)/; print;
}; maybe_unlink($previous);'
perl -e '
my $new_expect_file=".github/actions/spelling/expect.txt";
use File::Path qw(make_path);
use File::Basename qw(dirname);
make_path (dirname($new_expect_file));
open FILE, q{<}, $new_expect_file; chomp(my @words = <FILE>); close FILE;
my @add=qw('"$patch_add"');
my %items; @items{@words} = @words x (1); @items{@add} = @add x (1);
@words = sort {lc($a)."-".$a cmp lc($b)."-".$b} keys %items;
open FILE, q{>}, $new_expect_file; for my $word (@words) { print FILE "$word\n" if $word =~ /\w/; };
close FILE;
system("git", "add", $new_expect_file);
'
}

comment_json=$(mktemp)
curl -L -s -S \
-H "Content-Type: application/json" \
"https://api.github.com/repos/aws/karpenter/issues/comments/1003674626" > "$comment_json"
comment_body=$(mktemp)
jq -r ".body // empty" "$comment_json" > $comment_body
rm $comment_json

patch_remove=$(perl -ne 'next unless s{^</summary>(.*)</details>$}{$1}; print' < "$comment_body")

patch_add=$(perl -e '$/=undef; $_=<>; if (m{Unrecognized words[^<]*</summary>\n*```\n*([^<]*)```\n*</details>$}m) { print "$1" } elsif (m{Unrecognized words[^<]*\n\n((?:\w.*\n)+)\n}m) { print "$1" };' < "$comment_body")

update_files
rm $comment_body
git add -u
If the flagged items do not appear to be text

If items relate to a ...

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

  • binary file.

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

@jsoref
Copy link
Contributor Author

jsoref commented Jan 2, 2022

The current version of check-spelling does not like the changes to expect -- because it can't see the changes to the dictionary, so if check-spelling was mandatory, the changes to expect would have to be dropped and then they could be removed after merging.

In the somewhat near future, I hope to move the most of the config out of the workflow and into a normal file. Amongst the many benefits, it'd make updates like this mostly possible w/o the old engine screaming at me.

@ellistarn
Copy link
Contributor

In the somewhat near future, I hope to move the most of the config out of the workflow and into a normal file. Amongst the many benefits, it'd make updates like this mostly possible w/o the old engine screaming at me.

Doesn't Github actions use the workflow file in the given PR?

@ellistarn ellistarn merged commit 97383ba into aws:main Jan 3, 2022
@jsoref jsoref deleted the spell-check-dictionaries branch January 3, 2022 17:11
@jsoref
Copy link
Contributor Author

jsoref commented Jan 3, 2022

For a push it would, for a pull_request / pull_request_target, it does not. I know, it's confusing.

I've started working on migrating the config to JSON this weekend, which should smooth that problem out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants