file_types
file_types
Filter files in a run templates by their type. Special file types and MIME types are supported[1]:
| File type | Exlanation |
|---|---|
text |
Any file that contains text. Symlinks are not followed. |
binary |
Any file that contains non-text bytes. Symlinks are not followed. |
executable |
Any file that has executable bits set. Symlinks are not followed. |
not executable |
Any file without executable bits in file mode. Symlinks included. |
symlink |
A symlink file. |
not symlink |
Any non-symlink file. |
text/html |
An HTML file. |
text/xml |
An XML file. |
text/javascript |
A Javascript file. |
text/x-php |
A PHP file. |
text/x-lua |
A Lua file. |
text/x-perl |
A Perl file. |
text/x-python |
A Python file. |
text/x-shellscript |
Shell script file. |
text/x-sh |
Also shell script file. |
application/json |
JSON file. |
Important
The following types are applied using AND logic:
- text
- binary
- executable
- not executable
- symlink
- not symlink
The mime types are applied using OR logic. So, you can have both
text/x-luaandtext/x-sh, but you can’t specify bothsymlinkandnot symlink.
Examples
Apply some different linters on text and binary files.
# lefthook.yml
pre-commit:
commands:
lint-code:
run: yarn lint {staged_files}
file_types: text
check-hex-codes:
run: yarn check-hex {staged_files}
file_types: binary
Skip symlinks.
# lefthook.yml
pre-commit:
commands:
lint:
run: yarn lint --fix {staged_files}
file_types:
- not symlink
Lint executable scripts.
# lefthook.yml
pre-commit:
commands:
lint:
run: yarn lint --fix {staged_files}
file_types:
- executable
- text
Check typos in scripts.
# lefthook.yml
pre-commit:
jobs:
- run: typos -w {staged_files}
file_types:
- text/x-perl
- text/x-python
- text/x-php
- text/x-lua
- text/x-sh
All supported MIME types can be found here: supported_mimes.md ↩︎