TOML
Used by Rust (Cargo.toml) and Python (pyproject.toml).
FerrFlow updates the version field under [package], [project], or [tool.poetry].
[package]
name = "my-crate"
version = "1.2.3" # ← updated
JSON
Used by Node.js (package.json).
FerrFlow updates the top-level version field.
{
"name": "my-package",
"version": "1.2.3"
}
XML
Used by Java/Maven (pom.xml).
FerrFlow updates the first element it encounters.
<project>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.2.3</version> <!-- updated -->
</project>
Gradle
Used by Java/Kotlin Gradle projects (build.gradle, build.gradle.kts).
FerrFlow updates the version = "..." assignment.
version = "1.2.3" // updated
Plain text
Used for simple version files (VERSION, VERSION.txt).
FerrFlow replaces the entire file content with the version number.
1.2.3
Go modules
Used by Go projects (go.mod).
Go modules use git tags directly — FerrFlow does not modify go.mod. The version is derived entirely from the git tag (v1.2.3 or {name}@v1.2.3).
Multiple files per package
A package can have as many versioned file entries as needed:
JSON
{
"package": {
"versionedFiles": [
{ "path": "Cargo.toml", "format": "toml" },
{ "path": "npm/package.json", "format": "json" }
]
}
}
TOML
[[package.versioned_files]] path = "Cargo.toml" format = "toml"
[[package.versioned_files]] path = "npm/package.json" format = "json"
JSON5
{
package: {
versionedFiles: [
{ path: "Cargo.toml", format: "toml" },
{ path: "npm/package.json", format: "json" },
],
},
}
YAML
package:
versionedFiles:
- path: Cargo.toml
format: toml
- path: npm/package.json
format: json
Both files will be updated to the same version before the git commit.