mirror of
https://github.com/jlengrand/OpenGraphKt.git
synced 2026-03-10 08:31:23 +00:00
167 lines
3.8 KiB
Markdown
167 lines
3.8 KiB
Markdown
# Contributing to OpenGraphKt
|
|
|
|
Thank you for your interest in contributing to OpenGraphKt! This document provides guidelines and instructions for contributing to the project.
|
|
|
|
## Development Setup
|
|
|
|
### Prerequisites
|
|
|
|
- Java 24 (JVM toolchain)
|
|
- Gradle 8.14.3+ (wrapper included)
|
|
- Git
|
|
|
|
### Getting Started
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/jlengrand/OpenGraphKt.git
|
|
cd OpenGraphKt
|
|
```
|
|
|
|
2. Build the project:
|
|
```bash
|
|
./gradlew build
|
|
```
|
|
|
|
3. Run tests:
|
|
```bash
|
|
./gradlew test
|
|
```
|
|
|
|
4. Check code coverage:
|
|
```bash
|
|
./gradlew koverXmlReport
|
|
./gradlew koverVerify # Enforces 70% minimum coverage
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
- `opengraphkt/` - Core library module (published to Maven Central)
|
|
- `demo/` - Local file parsing examples
|
|
- `demo-remote/` - Remote URL parsing examples using published artifact
|
|
- `scrape-test/` - Testing/scraping utilities
|
|
|
|
## Making Changes
|
|
|
|
### Code Style
|
|
|
|
- Follow Kotlin coding conventions
|
|
- Use meaningful variable and function names
|
|
- Add KDoc comments for public APIs
|
|
|
|
### Testing
|
|
|
|
- Write tests for all new functionality
|
|
- Maintain minimum 70% code coverage (enforced by Kover)
|
|
- Run tests locally before submitting PR: `./gradlew test`
|
|
|
|
### Commits
|
|
|
|
- Write clear, concise commit messages
|
|
- Reference issue numbers when applicable
|
|
- Keep commits focused and atomic
|
|
|
|
## Submitting Changes
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch: `git checkout -b feature/your-feature-name`
|
|
3. Make your changes
|
|
4. Run tests and ensure coverage: `./gradlew test koverVerify`
|
|
5. Commit your changes
|
|
6. Push to your fork
|
|
7. Submit a Pull Request
|
|
|
|
## Publishing New Versions
|
|
|
|
This section is for maintainers only.
|
|
|
|
### Version Numbering
|
|
|
|
OpenGraphKt follows [Semantic Versioning](https://semver.org/):
|
|
- **MAJOR** version for incompatible API changes
|
|
- **MINOR** version for backwards-compatible functionality additions
|
|
- **PATCH** version for backwards-compatible bug fixes
|
|
|
|
### Pre-Release Checklist
|
|
|
|
1. **Update version number** in `opengraphkt/build.gradle.kts`:
|
|
```kotlin
|
|
version = "0.1.3-SNAPSHOT" // Change to "0.1.3" for release
|
|
```
|
|
|
|
2. **Update demo-remote dependency** in `demo-remote/build.gradle.kts`:
|
|
```kotlin
|
|
dependencies {
|
|
implementation("fr.lengrand:opengraphkt:0.1.3") // Match release version
|
|
}
|
|
```
|
|
|
|
3. **Run full test suite**:
|
|
```bash
|
|
./gradlew clean build test koverVerify
|
|
```
|
|
|
|
4. **Test demo applications**:
|
|
```bash
|
|
./gradlew :demo:run
|
|
./gradlew :demo-remote:run
|
|
```
|
|
|
|
### Publishing to Maven Central
|
|
|
|
The project uses the `com.vanniktech.maven.publish` plugin for publishing.
|
|
|
|
1. **Configure credentials** (first time only):
|
|
- Set up Sonatype Central Portal account
|
|
- Configure GPG signing keys
|
|
- Add credentials to `~/.gradle/gradle.properties`:
|
|
```properties
|
|
mavenCentralUsername=your-username
|
|
mavenCentralPassword=your-password
|
|
signing.keyId=your-key-id
|
|
signing.password=your-key-password
|
|
signing.secretKeyRingFile=/path/to/secring.gpg
|
|
```
|
|
|
|
2. **Publish to local Maven for testing**:
|
|
```bash
|
|
./gradlew publishToMavenLocal
|
|
```
|
|
|
|
3. **Publish to Maven Central**:
|
|
```bash
|
|
./gradlew publishAllPublicationsToMavenCentral
|
|
```
|
|
|
|
4. **Create Git tag and push**:
|
|
```bash
|
|
git tag v0.1.3
|
|
git push origin v0.1.3
|
|
```
|
|
|
|
5. **Create GitHub release**:
|
|
- Go to GitHub repository → Releases
|
|
- Create new release from the tag
|
|
- Add release notes describing changes
|
|
|
|
### Post-Release Steps
|
|
|
|
1. **Bump version to next SNAPSHOT** in `opengraphkt/build.gradle.kts`:
|
|
```kotlin
|
|
version = "0.1.4-SNAPSHOT"
|
|
```
|
|
|
|
2. **Commit version bump**:
|
|
```bash
|
|
git commit -am "Bump version to 0.1.4-SNAPSHOT"
|
|
git push
|
|
```
|
|
|
|
## Questions?
|
|
|
|
If you have questions or need help, please:
|
|
- Open an issue on GitHub
|
|
- Check existing issues and discussions
|
|
|
|
Thank you for contributing to OpenGraphKt!
|