Thanks for your interest in contributing to shint! This document provides guidelines and conventions for contributing.
-
Clone the repo:
git clone https://github.com/hvignolo87/shint.git cd shint -
Make sure you have the dependencies installed:
brew install bash carapace fzf
-
Source the script for testing:
source shint.bash
Open a GitHub issue with:
- Your bash version (
echo $BASH_VERSION) - Your OS and terminal emulator
- Steps to reproduce the bug
- Expected vs actual behavior
Open a GitHub issue describing:
- The problem you're trying to solve
- Your proposed solution (if any)
- Example use cases
- Fork the repository and create your branch from
main. - Make your changes following the conventions below.
- Test your changes manually across different commands (git, dbt, docker, etc.).
- Commit your changes using a descriptive commit message (see conventions below).
- Open a PR with a clear title and description of what you changed and why.
Format: {username}/{description}
Examples:
johndoe/fix-quote-tokenizationjanedoe/add-pipe-support
Always branch from main.
This project follows Conventional Commits.
<type>: <description>
[optional body]
- fix: A bug fix
- feat: A new feature
- docs: Documentation only changes
- refactor: A code change that neither fixes a bug nor adds a feature
- chore: Changes to build process or auxiliary tools
fix: handle quoted tokens with spaces correctly
feat: add pipe-aware tokenization
Split command line by |, &&, ||, ; and complete only
the last segment.
docs: add configuration examples to README
- Use the imperative, present tense: "change" not "changed" nor "changes"
- Don't capitalize the first letter
- No period at the end
- Pure bash (no external languages)
- Functions prefixed with
_shint_ - Variables prefixed with
SHINT_(config) or_SHINT_(internal) - Keep it minimal — the entire tool should stay under a few hundred lines
- Comments only where the intent isn't obvious from the code
There's no automated test suite yet (contributions welcome!). Before submitting a PR, manually verify:
- Basic completion:
git push --[Tab]shows flags with descriptions - Dynamic values:
git checkout [Tab]shows branches - Smart advancement:
dbt run[Tab]shows flags, not subcommand matches - Single result:
git pus[Tab]auto-completes togit push - Cancel: Open picker, press Esc — line should remain unchanged
- Unsupported commands: Non-carapace commands should degrade gracefully
By contributing, you agree that your contributions will be licensed under the MIT License.