Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Caupain_-_présentation.pdf

 Caupain_-_présentation.pdf

Avatar for Valentin Rocher

Valentin Rocher

September 12, 2025
Tweet

Other Decks in Programming

Transcript

  1. What’s Caupain? • It’s an open source tool that generates

    dependency updates reports from a Gradle version catalog
  2. What’s Caupain? • It’s an open source tool that generates

    dependency updates reports from a Gradle version catalog • Available both as a Gradle Plugin and as a CLI tool for all major platforms
  3. What’s Caupain? • It’s an open source tool that generates

    dependency updates reports from a Gradle version catalog • Available both as a Gradle Plugin and as a CLI tool for all major platforms • It directly queries Maven repositories
  4. How does it work? Parse version catalog to get versions

    maven-metadata.xml Repository Repository maven-metadata.xml
  5. How does it work? Parse version catalog to get versions

    maven-metadata.xml Repository Repository maven-metadata.xml Repository maven-metadata.xml
  6. How does it work? Parse version catalog to get versions

    maven-metadata.xml Repository dependency-version.pom Repository maven-metadata.xml Repository maven-metadata.xml
  7. How does it work? Parse version catalog to get versions

    maven-metadata.xml Repository dependency-version.pom Repository maven-metadata.xml Repository maven-metadata.xml Forma tt er
  8. How did it start? • First dra ft was a

    snippet of code in an internal plugin because other solutions weren’t matching our needs
  9. How did it start? • First dra ft was a

    snippet of code in an internal plugin because other solutions weren’t matching our needs
  10. How did it start? • First dra ft was a

    snippet of code in an internal plugin because other solutions weren’t matching our needs • Talked about it with Martin Bonnin at Android Makers
  11. How did it start? • First dra ft was a

    snippet of code in an internal plugin because other solutions weren’t matching our needs • Talked about it with Martin Bonnin at Android Makers • A few beers later…The hype is here!
  12. What do we need? • It needs to be available

    as a CLI and as a plugin • It needs to work fl awlessly on all platforms
  13. What do we need? • It needs to be available

    as a CLI and as a plugin • It needs to work fl awlessly on all platforms • It has to be easily installable
  14. What do we need? • It needs to be available

    as a CLI and as a plugin • It needs to work fl awlessly on all platforms • It has to be easily installable Solution: use KMP !
  15. Library grocery list Serialization • KotlinX serialization and all its

    formats! • TOML: tomlkt • XML: xmlutil • JSON: kotlinx-serialization-json
  16. Library grocery list Serialization • KotlinX serialization and all its

    formats! • TOML: tomlkt • XML: xmlutil • JSON: kotlinx-serialization-json • Properties: properties-serializer
  17. Library grocery list Serialization • KotlinX serialization and all its

    formats! • TOML: tomlkt • XML: xmlutil • JSON: kotlinx-serialization-json • Properties: properties-serializer • ANTLR Kotlin for low-level parsing
  18. Library grocery list I/O • Ktor for network operations •

    Using native engines for each platform
  19. Library grocery list I/O • Ktor for network operations •

    Using native engines for each platform • Okio for all fi le-based operations
  20. Library grocery list CLI interactions • Clikt for writing command-lines

    interfaces • Easy option handling • Takes care of help pages and errors
  21. Library grocery list CLI interactions • Mordant for rendering styled

    text in the terminal • Progress bars • Text colors
  22. Library grocery list CLI interactions • Mordant for rendering styled

    text in the terminal • Progress bars • Text colors • Tables
  23. Make the code usable and readable • Checks via Github

    Actions • A lot of unit tests • Binary compatibility check
  24. Make the code usable and readable • Checks via Github

    Actions • A lot of unit tests • Binary compatibility check • Transitive dependency check via dependency-guard
  25. Make the code usable and readable • Checks via Github

    Actions • A lot of unit tests • Binary compatibility check • Transitive dependency check via dependency-guard • Style check (via Detekt)
  26. Make the code usable and readable • Checks via Github

    Actions • A lot of unit tests • Binary compatibility check • Transitive dependency check via dependency-guard • Style check (via Detekt) • Explicit API
  27. Easy ways to access it • MacOS: Brew via an

    external tap • Debian: APT repository • Uses Net fl ix Nebula Plugins for easy DEB build
  28. Easy ways to access it • MacOS: Brew via an

    external tap • Debian: APT repository • Uses Net fl ix Nebula Plugins for easy DEB build • Windows: Chocolatey
  29. Easy ways to access it • MacOS: Brew via an

    external tap • Debian: APT repository • Uses Net fl ix Nebula Plugins for easy DEB build • Windows: Chocolatey • Plugin: Gradle Plugin Portal
  30. Easy ways to access it • MacOS: Brew via an

    external tap • Debian: APT repository • Uses Net fl ix Nebula Plugins for easy DEB build • Windows: Chocolatey • Plugin: Gradle Plugin Portal • Core library: Maven Central
  31. Easy ways to access it • MacOS: Brew via an

    external tap • Debian: APT repository • Uses Net fl ix Nebula Plugins for easy DEB build • Windows: Chocolatey • Plugin: Gradle Plugin Portal • Core library: Maven Central • The rest is in releases !
  32. Open source is never done ! • We’re currently at

    version 1.5.1 • 120 stars, around 50 issues or PRs, people are using it and liking it !
  33. Open source is never done ! • We’re currently at

    version 1.5.1 • 120 stars, around 50 issues or PRs, people are using it and liking it ! • Mainly maintained by me, but you’re free to help !
  34. Open source is never done ! • We’re currently at

    version 1.5.1 • 120 stars, around 50 issues or PRs, people are using it and liking it ! • Mainly maintained by me, but you’re free to help ! • Idea is to keep maintaining it as long as people use it
  35. Open source is never done ! • We’re currently at

    version 1.5.1 • 120 stars, around 50 issues or PRs, people are using it and liking it ! • Mainly maintained by me, but you’re free to help ! • Idea is to keep maintaining it as long as people use it • Come look at it at h tt p://github.com/deezer/caupain !