Skip to content

Commit

Permalink
Merge pull request #470 from keploy/feat-add-vale-linting
Browse files Browse the repository at this point in the history
Add vale linting in github pipeline
  • Loading branch information
Hermione2408 authored Nov 11, 2024
2 parents 3b2b83b + 7f03a5d commit 6cc69a8
Show file tree
Hide file tree
Showing 40 changed files with 858 additions and 0 deletions.
27 changes: 27 additions & 0 deletions .github/workflows/vale-lint-action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Check Docusaurus docs with Vale linter

on: [pull_request]

jobs:
vale:
name: Vale doc linter
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]

# Set up Vale Action
- uses: errata-ai/[email protected]
with:
# Filter mode can be set to: added, diff_context, file, nofilter
filter_mode: nofilter
# Set the reporter to display the output: github-pr-check, github-pr-review, github-check
reporter: github-pr-check
# Fails the action if there are errors
fail_on_error: true
# Lint the files in the "versioned_docs/version-2.0.0/" directory
files: 'versioned_docs/version-2.0.0'
# Specify the Vale version
version: 3.0.3
env:
# GitHub token for authentication, automatically set by GitHub Actions
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
25 changes: 25 additions & 0 deletions .vale.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# vale.ini

StylesPath = vale_styles # Update this path to where your styles are stored.
MinAlertLevel = error # Set the minimum alert level to display (suggestion, warning, or error).
Vocab = Base

[*.md]
# Enable Markdown-specific styles.
BasedOnStyles = Vale, Google

# Customize specific rules based on your needs.
List.Capitalization = YES

# Override some rules:
Vale.Spelling = YES
Google.PassiveVoice = NO # Disable passive voice rule if unnecessary
Google.We = NO # Disable first-person plural flagging
Google.Will = NO # Allow "will" usage
Google.Exclamation = NO # Allow exclamation points
Google.Ellipses = NO # Allow ellipses in text
Google.Latin = NO # Allow "e.g." and "i.e." instead of "for example"

# Allow specific terms:
Vale.Terms=NO

54 changes: 54 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,60 @@ npm start

The command starts a local development server and opens a browser window.

## Running Vale Locally for Documentation Linting

To help maintain consistency in our documentation, we use Vale, a syntax-aware linter that checks for spelling, grammar, and style issues.

### Installation

**Step 1: Install Vale**

If you're on macOS, you can install Vale using Homebrew:

```bash
brew install vale
```

Alternatively, you can install Vale manually:

1. Download Vale: Visit the Vale Releases page and download the latest version for your operating system.

2. Install Vale:

- On macOS and Linux, extract the binary, move it to /usr/local/bin, and make it executable:

```bash
sudo mv vale /usr/local/bin/
sudo chmod +x /usr/local/bin/vale
```

- On Windows, follow the instructions in the downloaded .zip file.

**Step 2: Configure Vale**

1. Ensure you have the .vale.ini configuration file in the root directory.

2. Check that StylesPath in .vale.ini points to the vale_styles directory (where custom styles are stored):

```ini
StylesPath = vale_styles
MinAlertLevel = error
```

### Running Vale

1. Linting Documentation: To check all markdown files in versioned_docs/version-2.0.0/ for errors, run:

```bash
vale versioned_docs/version-2.0.0/**/*.md
```

2. Review Errors:

- Vale will output any issues directly in the terminal. Address these issues in the markdown files to maintain style consistency.

Note: Running Vale locally helps catch issues early, ensuring a smooth review process when you submit a pull request.

## Prettier

1. Fork the repository
Expand Down
9 changes: 9 additions & 0 deletions vale_styles/Google/AMPM.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
extends: existence
message: "Use 'AM' or 'PM' (preceded by a space)."
link: 'https://developers.google.com/style/word-list'
level: error
nonword: true
tokens:
- '\d{1,2}[AP]M'
- '\d{1,2} ?[ap]m'
- '\d{1,2} ?[aApP]\.[mM]\.'
64 changes: 64 additions & 0 deletions vale_styles/Google/Acronyms.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
extends: conditional
message: "Spell out '%s', if it's unfamiliar to the audience."
link: 'https://developers.google.com/style/abbreviations'
level: suggestion
ignorecase: false
# Ensures that the existence of 'first' implies the existence of 'second'.
first: '\b([A-Z]{3,5})\b'
second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)'
# ... with the exception of these:
exceptions:
- API
- ASP
- CLI
- CPU
- CSS
- CSV
- DEBUG
- DOM
- DPI
- FAQ
- GCC
- GDB
- GET
- GPU
- GTK
- GUI
- HTML
- HTTP
- HTTPS
- IDE
- JAR
- JSON
- JSX
- LESS
- LLDB
- NET
- NOTE
- NVDA
- OSS
- PATH
- PDF
- PHP
- POST
- RAM
- REPL
- RSA
- SCM
- SCSS
- SDK
- SQL
- SSH
- SSL
- SVG
- TBD
- TCP
- TODO
- URI
- URL
- USB
- UTF
- XML
- XSS
- YAML
- ZIP
8 changes: 8 additions & 0 deletions vale_styles/Google/Colons.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
extends: existence
message: "'%s' should be in lowercase."
link: 'https://developers.google.com/style/colons'
nonword: true
level: warning
scope: sentence
tokens:
- ':\s[A-Z]'
30 changes: 30 additions & 0 deletions vale_styles/Google/Contractions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
extends: substitution
message: "Feel free to use '%s' instead of '%s'."
link: 'https://developers.google.com/style/contractions'
level: suggestion
ignorecase: true
action:
name: replace
swap:
are not: aren't
cannot: can't
could not: couldn't
did not: didn't
do not: don't
does not: doesn't
has not: hasn't
have not: haven't
how is: how's
is not: isn't
it is: it's
should not: shouldn't
that is: that's
they are: they're
was not: wasn't
we are: we're
we have: we've
were not: weren't
what is: what's
when is: when's
where is: where's
will not: won't
9 changes: 9 additions & 0 deletions vale_styles/Google/DateFormat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
extends: existence
message: "Use 'July 31, 2016' format, not '%s'."
link: 'https://developers.google.com/style/dates-times'
ignorecase: true
level: error
nonword: true
tokens:
- '\d{1,2}(?:\.|/)\d{1,2}(?:\.|/)\d{4}'
- '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}'
9 changes: 9 additions & 0 deletions vale_styles/Google/Ellipses.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
extends: existence
message: "In general, don't use an ellipsis."
link: 'https://developers.google.com/style/ellipses'
nonword: true
level: warning
action:
name: remove
tokens:
- '\.\.\.'
12 changes: 12 additions & 0 deletions vale_styles/Google/EmDash.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
extends: existence
message: "Don't put a space before or after a dash."
link: 'https://developers.google.com/style/dashes'
nonword: true
level: error
action:
name: edit
params:
- remove
- ' '
tokens:
- '\s[—–]\s'
13 changes: 13 additions & 0 deletions vale_styles/Google/EnDash.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
extends: existence
message: "Use an em dash ('—') instead of '–'."
link: 'https://developers.google.com/style/dashes'
nonword: true
level: error
action:
name: edit
params:
- replace
- '-'
- ''
tokens:
- ''
7 changes: 7 additions & 0 deletions vale_styles/Google/Exclamation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extends: existence
message: "Don't use exclamation points in text."
link: 'https://developers.google.com/style/exclamation-points'
nonword: true
level: error
tokens:
- '\w!(?:\s|$)'
13 changes: 13 additions & 0 deletions vale_styles/Google/FirstPerson.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
extends: existence
message: "Avoid first-person pronouns such as '%s'."
link: 'https://developers.google.com/style/pronouns#personal-pronouns'
ignorecase: true
level: warning
nonword: true
tokens:
- (?:^|\s)I\s
- (?:^|\s)I,\s
- \bI'm\b
- \bme\b
- \bmy\b
- \bmine\b
9 changes: 9 additions & 0 deletions vale_styles/Google/Gender.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
extends: existence
message: "Don't use '%s' as a gender-neutral pronoun."
link: 'https://developers.google.com/style/pronouns#gender-neutral-pronouns'
level: error
ignorecase: true
tokens:
- he/she
- s/he
- \(s\)he
45 changes: 45 additions & 0 deletions vale_styles/Google/GenderBias.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
extends: substitution
message: "Consider using '%s' instead of '%s'."
link: 'https://developers.google.com/style/inclusive-documentation'
ignorecase: true
level: error
swap:
(?:alumna|alumnus): graduate
(?:alumnae|alumni): graduates
air(?:m[ae]n|wom[ae]n): pilot(s)
anchor(?:m[ae]n|wom[ae]n): anchor(s)
authoress: author
camera(?:m[ae]n|wom[ae]n): camera operator(s)
chair(?:m[ae]n|wom[ae]n): chair(s)
congress(?:m[ae]n|wom[ae]n): member(s) of congress
door(?:m[ae]|wom[ae]n): concierge(s)
draft(?:m[ae]n|wom[ae]n): drafter(s)
fire(?:m[ae]n|wom[ae]n): firefighter(s)
fisher(?:m[ae]n|wom[ae]n): fisher(s)
fresh(?:m[ae]n|wom[ae]n): first-year student(s)
garbage(?:m[ae]n|wom[ae]n): waste collector(s)
lady lawyer: lawyer
ladylike: courteous
landlord: building manager
mail(?:m[ae]n|wom[ae]n): mail carriers
man and wife: husband and wife
man enough: strong enough
mankind: human kind
manmade: manufactured
manpower: personnel
men and girls: men and women
middle(?:m[ae]n|wom[ae]n): intermediary
news(?:m[ae]n|wom[ae]n): journalist(s)
ombuds(?:man|woman): ombuds
oneupmanship: upstaging
poetess: poet
police(?:m[ae]n|wom[ae]n): police officer(s)
repair(?:m[ae]n|wom[ae]n): technician(s)
sales(?:m[ae]n|wom[ae]n): salesperson or sales people
service(?:m[ae]n|wom[ae]n): soldier(s)
steward(?:ess)?: flight attendant
tribes(?:m[ae]n|wom[ae]n): tribe member(s)
waitress: waiter
woman doctor: doctor
woman scientist[s]?: scientist(s)
work(?:m[ae]n|wom[ae]n): worker(s)
13 changes: 13 additions & 0 deletions vale_styles/Google/HeadingPunctuation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
extends: existence
message: "Don't put a period at the end of a heading."
link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings'
nonword: true
level: warning
scope: heading
action:
name: edit
params:
- remove
- '.'
tokens:
- '[a-z0-9][.]\s*$'
29 changes: 29 additions & 0 deletions vale_styles/Google/Headings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
extends: capitalization
message: "'%s' should use sentence-style capitalization."
link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings'
level: warning
scope: heading
match: $sentence
indicators:
- ':'
exceptions:
- Azure
- CLI
- Code
- Cosmos
- Docker
- Emmet
- gRPC
- I
- Kubernetes
- Linux
- macOS
- Marketplace
- MongoDB
- REPL
- Studio
- TypeScript
- URLs
- Visual
- VS
- Windows
Loading

0 comments on commit 6cc69a8

Please sign in to comment.