# 🔑 licensesnip Tool to automatically add license headers to your source code. Customizable for any language. Licensesnip is written is Rust and is fast and reliable ⚡. ## 📦 Install ### With Cargo ```bash cargo install licensesnip ``` ## 📜 Usage In your project's root directory, add a file named `.licensesnip` and write your license header there. Licensesnip will automatically replace `%FILENAME%` with the file name and `%YEAR%` with the year. To add license headers to all your source code: ```bash licensesnip ``` Licensesnip ignores files in your .gitignore file by default. You can also add a file named .licensesnipignore and specify patterns the same way as in a .gitignore file. To remove license headers from all source code: ```bash licensesnip remove ``` To check if license headers are present in all of your source files: ```bash licensesnip check ``` You can also specify a specific path or file to modify: ```bash # Add licenses to src/main.rs licensesnip src/main.rs ``` ```bash # Remove licenses from src folder licensesnip remove src/ ``` ### Pre-commit hook You can use `licensesnip` with [pre-commit](https://pre-commit.com). Add it to your local `.pre-commit-config.yaml` as follows: ```yaml - repo: https://github.com/notken12/licensesnip rev: 19b1186 # choose your preferred tag or commit hash hooks: - id: licensesnip args: ["check"] # optionally modify the arguments for licensesnip (default arguments shown here) ``` ## ⚙️ Configuration Find your global Licensesnip config file: ```bash licensesnip config ``` Create/find the local config file for the current directory: ```bash licensesnip config -d ``` Example configuration: ```json { "use_gitignore": true, "file_types": { "js,mjs,ts,cjs,jsx,tsx": { "before_line": "// " }, "vue,html": { "before_block": "" }, "rs": { "before_line": "// " }, "c": { "enable": false } } } ``` To configure a language just specify how the comments for that language work. Supported properties are `before_line`, `after_line`, `before_block`, and `after_block`. To disable adding licenses to a filetype, set `enable` to false. ## ❤️ Contribution I haven't added builtin support for many languages yet. Please help out and add your favorite languages to `src/base-config.jsonc` and submit a pull request. Thank you!