Skip to content

exoego/gradle-version-catalogs-cli

Repository files navigation

GitHub Repo stars GitHub GitHub go.mod Go version GitHub all releases GitHub CI Status GitHub Release Status codecov

gradle-version-catalogs-cli

Example)

// Before 
val awsSdkVersion = "2.3.4"
implementation("software.amazon.awssdk:sts:$awsSdkVersion")
implementation(group = "software.amazon.awssdk", name = "dynamodb", version = awsSdkVersion)
implementation("ch.qos.logback:logback-classic") // auto version
implementation("net.sf.json-lib:json-lib:2.3:jdk15") // classifier

This will be rewritten to:

// After
implementation(libs.software.amazon.awssdk.sts)
implementation(libs.software.amazon.awssdk.dynamodb)
implementation(libs.ch.qos.logback.logback.classic)
implementation(variantOf(libs.net.sf.json.lib.json.lib) { classifier = "jdk15" })

with the generated version catalogs libs.versions.toml:

[versions]
awsSdkVersion = "2.3.4"

[dependencies]
software-amazon-awssdk-dynamodb = { group = "software.amazon.awssdk", name = "dynamodb", version.ref = "awsSdkVersion" }
software-amazon-awssdk-sts = { group = "software.amazon.awssdk", name = "sts", version.ref = "awsSdkVersion" }
ch-qos-logback-logback-classic = { group = "ch.qos.logback", name = "logback-classic", version = "1.5.18" }
net-sf-json-lib-json-lib = { group = "net.sf.json-lib", name = "json-lib", version = "2.3" }

Note

In the above example, the latest version 1.5.18 is automatically selected for logback-classic since version must be specified in version catalog. If the command failed to decide latest version, it fallbacks to FIXME. This behavior is enabled by default and can be disabled via --auto-latest=false option. The autofilled version may be too new, so some manual intervention may be required.

Usage

  1. Download from https://github.com/exoego/gradle-version-catalogs-cli/releases
  2. Go to the repo where gradle is used
  3. Run the command below
./gradle-version-cataglos-cli generate

Commands

Generate

gradle-version-catalogs-cli generate [PATH]
  • Collects library versions in multiple build.gradle(.kts) and generates libs.versions.toml in PATH/gradle.
  • If no PATH is provided, the current working directory is used.
  • Some manual intervention may be required.

Development

go get
make test
make build
./gradle-version-catalogs-cli generate ../path/to/gradle/project