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.