TOML

Utilisé par Rust (Cargo.toml) et Python (pyproject.toml).

FerrFlow met à jour le champ version sous [package], [project] ou [tool.poetry].

[package]
name = "my-crate"
version = "1.2.3"   # ← mis à jour

JSON

Utilisé par Node.js (package.json).

FerrFlow met à jour le champ version de premier niveau.

{
  "name": "my-package",
  "version": "1.2.3"
}

XML

Utilisé par Java/Maven (pom.xml).

FerrFlow met à jour le premier élément rencontré.

<project>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.2.3</version>   <!-- mis à jour -->
</project>

Gradle

Utilisé par les projets Java/Kotlin Gradle (build.gradle, build.gradle.kts).

FerrFlow met à jour l'assignation version = "...".

version = "1.2.3"   // mis à jour

Texte brut

Utilisé pour les fichiers de version simples (VERSION, VERSION.txt).

FerrFlow remplace l'intégralité du contenu du fichier par le numéro de version.

1.2.3

Go modules

Utilisé par les projets Go (go.mod).

Les modules Go utilisent directement les tags git — FerrFlow ne modifie pas go.mod. La version est dérivée entièrement du tag git (v1.2.3 ou {name}@v1.2.3).

Helm

Utilisé par les charts Helm Kubernetes (Chart.yaml).

FerrFlow met à jour le champ version et, lorsqu'il est présent, maintient appVersion synchronisé.

apiVersion: v2
name: my-app
version: 1.2.3 # ← mis à jour
appVersion: '1.2.3' # ← mis à jour si présent

Cabal

Utilisé par les packages Haskell (*.cabal).

FerrFlow met à jour le champ version de premier niveau. Le champ cabal-version, qui déclare le format du fichier et non la version du package, n'est jamais modifié — pas plus qu'un version: indenté à l'intérieur d'une stanza.

cabal-version:      2.4   # ← laissé tel quel
name:               my-package
version:            1.2.3 # ← mis à jour

CMake

Utilisé par les projets C / C++ (CMakeLists.txt).

FerrFlow met à jour l'argument VERSION de l'appel project(), y compris lorsqu'il est réparti sur plusieurs lignes. cmake_minimum_required(VERSION …) — la version minimale de l'outil CMake — n'est pas touché.

cmake_minimum_required(VERSION 3.20)   # ← laissé tel quel

project(MyProject
    VERSION 1.2.3                      # ← mis à jour
    LANGUAGES CXX)

Plusieurs fichiers par package

Un package peut avoir autant d'entrées de fichiers versionnés que nécessaire :

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" },
      ],
    },
  ],
}

Les deux fichiers seront mis à jour avec la même version avant le commit git.