Skip to content

Isvane/mamoru

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Mamoru

Mamoru acts as a commit-msg hook that embeds a compiled dictionary of over 106,000 words to instantly catch and block typos before they enter your version control.

Crates.io Crates.io


Installation

cargo install mamoru

Usage

Navigate to any Git repository and initialize the hook. This automatically configures Mamoru inside .git/hooks/commit-msg with the necessary executable permissions:

mamoru init

# If existing git hooks exist, use --force to overwrite it
mamoru init --force

Once installed, Mamoru intercepts your git commit commands automatically. If a commit contains unrecognized words, the hook safely aborts the commit and suggests corrections:

$ git commit -m "feat: implment algorimth update"

Commit blocked! Typos found in commit message:

  • "implment" -> Did you mean: implement?
  • "algorimth" -> Did you mean: algorithm?

error: Please fix the spelling errors above.

Handling False Positives

If Mamoru flags a valid word (like a company name, internal jargon, or a niche acronym), you can ignore it by creating a .mamoruignore file in the root of your repository. Simply add one word per line:

// Inside .mamoruignore
mycompanyname
mycustomacronym

Bypassing the Hook

If you are in a rush and need to completely bypass the spellchecker for a single commit (without skipping all of your other git hooks via --no-verify), you can use the MAMORU_SKIP environment variable:

MAMORU_SKIP=1 git commit -m "feat: fix bugz XYZ"

Unintall

mamoru uninstall

🎈 Performance

Benchmarks gathered using hyperfine (testing full dictionary load and typo analysis).

$ hyperfine -N -i --warmup 10 --min-runs 10000 "./target/release/mamoru check test_commit.txt"

Time (mean ± σ):       2.5 ms ±   0.3 ms
Range (min … max):     2.2 ms …   5.8 ms

When no typo were found.

Time (mean ± σ):     534.6 µs ±  85.2 µs
Range (min … max):   439.1 µs … 1279.7 µs

Acknowledgments

Mamoru's built-in dictionary is compiled from a blend of standard natural language and specialized developer jargon, heavily drawing from:

  • Linux system wordlists (via /usr/share/dict) for robust, everyday English.
  • cspell repositories for modern programming, DevOps, and open-source.

License

This project is licensed under the MIT license.

About

Protect your commit messages from typos.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages