Contribution Guidelines

We welcome contributions to ani-cli! Whether you're fixing a bug, adding a feature, or improving documentation, your help is appreciated.

Getting Started

  1. Fork the repository: Create your own copy of the ani-cli repository on GitHub.
  2. Clone your fork:

    git clone https://github.com/YOUR_USERNAME/ani-cli.git
    cd ani-cli

  3. Create a new branch:

    git checkout -b your-feature-name

Code Quality & Testing

Before submitting a pull request, please ensure your changes meet our quality standards.

  • Linting: We use shellcheck and shfmt to maintain code quality. Please run these tools on your changes. Our GitHub Actions CI will run these checks automatically.
    • shellcheck -s sh -o all -e 2250 ani-cli
    • shfmt -i 4 -ci -d ani-cli
  • No Extra Dependencies: Avoid adding new dependencies unless absolutely necessary.
  • No awk: This project has a strict policy against using awk to maintain simplicity and portability.

Pull Request Process

When you are ready to submit your changes, open a Pull Request with a clear title and description.

  • Use a Semantic Title: Your PR title should follow the Conventional Commits specification (e.g., feat: Add new player support, fix: Correctly parse episode list).
  • Reference Issues: If your PR fixes an existing issue, link it in the description (e.g., Fixes #123).
  • Update Documentation: If you add or change a feature, please update the relevant documentation (README, help text, man page).
  • Bump the Version: Increment the version_number variable in the ani-cli script according to Semantic Versioning.

PR Checklist

Your pull request should be tested against the checklist found in our pull request template. This includes testing:

  • Basic playback
  • All major command-line flags (-c, -d, -s, -q, -v, etc.)
  • Dub and sub modes
  • Various edge cases like anime with non-whole episode numbers.

Issues

  • Use the provided issue templates (Bug report or Feature request).
  • When requesting a feature, check if it has been previously rejected.
  • Provide as much detail as possible, including your OS, ani-cli version, and screenshots if applicable.