ContributingΒΆ

Welcoming contributions from the community!


Minimum Supported Rust Version: 1.85.0

Currently Working Rust Version: 1.88.0

Folder StructureΒΆ

feluda/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.rs              # Entry point
β”‚   β”œβ”€β”€ cli.rs               # CLI argument handling
β”‚   β”œβ”€β”€ cache.rs             # Caching functionality for license data
β”‚   β”œβ”€β”€ config.rs            # Configuration management
β”‚   β”œβ”€β”€ debug.rs             # Debug and logging utilities
β”‚   β”œβ”€β”€ parser.rs            # Dependency parsing coordination
β”‚   β”œβ”€β”€ licenses.rs          # License analysis, compatibility, and OSI integration
β”‚   β”œβ”€β”€ reporter.rs          # Output formatting and reporting
β”‚   β”œβ”€β”€ table.rs             # TUI components
β”‚   β”œβ”€β”€ generate.rs          # License file generation
β”‚   β”œβ”€β”€ utils.rs             # Git repository utilities
β”‚   └── languages/           # Language-specific parsers
β”‚       β”œβ”€β”€ mod.rs           # Language detection and common traits
β”‚       β”œβ”€β”€ c.rs             # C project support
β”‚       β”œβ”€β”€ cpp.rs           # C++ project support
β”‚       β”œβ”€β”€ rust.rs          # Rust/Cargo support
β”‚       β”œβ”€β”€ node.rs          # Node.js/npm support
β”‚       β”œβ”€β”€ go.rs            # Go modules support
β”‚       β”œβ”€β”€ python.rs        # Python package support
β”‚       └── r.rs             # R package support
β”œβ”€β”€ examples/                # Example projects for testing
β”œβ”€β”€ config/
β”‚   └── license_compatibility.toml  # License compatibility matrix
β”œβ”€β”€ Cargo.toml               # Project metadata
β”œβ”€β”€ LICENSE                  # Project license
β”œβ”€β”€ README.md                # Project documentation
β”œβ”€β”€ justfile                 # Build automation
└── CONTRIBUTING.md

GuidelinesΒΆ

  • Code Style: Follow Rust’s standard coding conventions.

  • Testing: Ensure your changes are covered by unit tests.

  • Documentation: Update relevant documentation and comments.

  • Logging: Add appropriate debug logging for new functionality.

  • Error Handling: Use the FeludaError type for consistent error reporting.

Submitting ChangesΒΆ

  1. Create a new branch for your feature or bugfix:

    git checkout -b feat/my-new-feature
    
  2. Commit your changes with a meaningful commit message:

    git commit -m "Add support for XYZ feature"
    
  3. Push the branch to your fork:

    git push origin feat/my-new-feature
    
  4. Open a pull request on GitHub.

Reporting IssuesΒΆ

If you encounter a bug or have a feature request, please open an issue in the repository.