Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/licanhua/clang-format-launcher
clang-format with a simple configuration
https://github.com/licanhua/clang-format-launcher
clang-format launcher npmjs-packages
Last synced: about 1 month ago
JSON representation
clang-format with a simple configuration
- Host: GitHub
- URL: https://github.com/licanhua/clang-format-launcher
- Owner: licanhua
- Created: 2021-12-04T08:27:52.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-01-06T20:06:39.000Z (almost 3 years ago)
- Last Synced: 2024-09-13T14:22:29.969Z (2 months ago)
- Topics: clang-format, launcher, npmjs-packages
- Language: TypeScript
- Homepage:
- Size: 46.9 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# clang-format-launcher
clang-format-launcher is a clang-format wrapper which is used to launch the clang-format with predefined rules.
This tool is designed for complex project, which `glob` pattern is not enough.It provides features:
1. Complex filter rule: `includeEndsWith`, `excludePathContains`, `excludePathEndsWith`, `excludePathStartsWith` and `style`.
2. Simple command line. `npx clang-format-launcher -verify ` to verify the format, and `npx clang-format-launcher` to auto fix the format. It's easy to be used in the pipeline
3. Only source code is formatted. It automatically skipped buid output and node_modules which are not checked in to the repo.Here is the idea:
1. It first runs `git ls-tree` to get the file list which is checked in.
2. Apply `includeEndsWith`, `excludePathContains`, `excludePathEndsWith`, `excludePathStartsWith` to filter the files.
3. Do clang-format check or format based on the existence of `-verify` flag.# How to use it
## Step 1
- use clang-format npmjs binary:
```
npm i --save-dev clang-format clang-format-launcher
```- use your own clang-format binary:
```
npm i --save-dev clang-format-launcher
```then in your config, set clangFormatBinPath
```
"clangFormatBinPath" : "clang-format"
```or
```
"clangFormatBinPath" : "${fullpath}/clang-format"
```## Step 2 prepare clang.format.json or package.json
put clang.format.json or package.json in the `current` folder.
clang.format.json example:
```
{
"includeEndsWith": [".h",".cpp"],
"excludePathContains": ["/ios/", "/nodejs/", "/android/"],
"excludePathEndsWith": [".g.h",".g.cpp"],
"excludePathStartsWith": [],
"style": "--style=file"
}
```package.json example:
```
{
"clang-format-launcher": {
"includeEndsWith": [".h",".cpp"],
"excludePathContains": ["/ios/", "/nodejs/", "/android/"],
"excludePathEndsWith": [".g.h",".g.cpp"],
"excludePathStartsWith": [],
"style": "--style=file"
}
}
```# Usage
## Run scripts in package.json
`npm run format` and `npm run verify`
```
"scripts": {
...
"format": "clang-format-launcher --verbose",
"verify": "clang-format-launcher -verify --vebose"
},
````npm run format --verbose`
## Run with npx
`npx clang-format-launcher`
`npx clang-format-launcher -verify`
`npx clang-format-launcher --verbose`
## Command details
```
clang-format-launcher is a clang-format wrapper.
It uses 'git ls-tree' to speed up the file lookup and reduce the noise, then filters the files by the rule which is defined in clang.format.json or package.json.
It looks cwd/package.json, cwd/clang.format.json and finally fallback to node_modules/clang-format-launcher/clang.format.json.
Usage:
npx clang-format-launcher [options] [other options]
Options:
-raw
-verifynpx clang-format-launcher [other options]
equal to 'npx clang-format --style=file -Werror -i [other options] [Files after filter]'npx clang-format-launcher -verify [other options]
equal to 'npx clang-format --style=file -Werror --dry-run [other options] [Files after filter]'npx clang-format-launcher -raw [other options]
equal to 'npx clang-format [other options]npx clang-format-launcher --verbose
npx clang-format-launcher --help
clang.format.json example:
{
"includeEndsWith": [".h",".cpp"],
"excludePathContains": ["/ios/", "/nodejs/", "/android/"],
"excludePathEndsWith": [".g.h",".g.cpp"],
"excludePathStartsWith": [],
"style": "--style=file",
"clangFormatBinPath": ""
}package.json example:
{
"clang-format-launcher": {
"includeEndsWith": [".h",".cpp"],
"excludePathContains": ["/ios/", "/nodejs/", "/android/"],
"excludePathEndsWith": [".g.h",".g.cpp"],
"excludePathStartsWith": [],
"style": "--style=file",
"clangFormatBinPath": "clang-format"
}
}```