@ferrflow/win32-x64 2.13.1 → 2.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright 2024-present FerrFlow Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,381 @@
1
+ # FerrFlow
2
+
3
+ [![CI](https://github.com/FerrFlow-Org/FerrFlow/actions/workflows/ci.yml/badge.svg)](https://github.com/FerrFlow-Org/FerrFlow/actions/workflows/ci.yml)
4
+ [![Release](https://github.com/FerrFlow-Org/FerrFlow/actions/workflows/release.yml/badge.svg)](https://github.com/FerrFlow-Org/FerrFlow/actions/workflows/release.yml)
5
+ [![Latest release](https://img.shields.io/github/v/release/FerrFlow-Org/FerrFlow)](https://github.com/FerrFlow-Org/FerrFlow/releases/latest)
6
+ [![Coverage](https://codecov.io/gh/FerrFlow-Org/FerrFlow/graph/badge.svg)](https://codecov.io/gh/FerrFlow-Org/FerrFlow)
7
+ [![License](https://img.shields.io/github/license/FerrFlow-Org/FerrFlow)](LICENSE)
8
+ [![Socket Badge](https://badge.socket.dev/npm/package/ferrflow/latest)](https://badge.socket.dev/npm/package/ferrflow/latest)
9
+ [![Known Vulnerabilities](https://snyk.io/test/npm/ferrflow/badge.svg)](https://snyk.io/test/npm/ferrflow)
10
+
11
+ Universal semantic versioning for monorepos and classic repos.
12
+
13
+ FerrFlow reads your commit history, determines the right version bump, updates your version files, generates a changelog, and creates a tagged release — for any language, any repo layout.
14
+
15
+ ## Why FerrFlow?
16
+
17
+ Most versioning tools are tied to a specific ecosystem (semantic-release for JS, cargo-release for Rust) or require a Node.js runtime. FerrFlow is a single compiled binary with no runtime dependencies.
18
+
19
+ | Tool | Monorepo | Multi-language | Runtime |
20
+ |------|----------|---------------|---------|
21
+ | semantic-release | plugins | JS only | Node.js |
22
+ | changesets | manual | JS only | Node.js |
23
+ | knope | limited | partial | none |
24
+ | FerrFlow | native | yes | none |
25
+
26
+ ## Supported version files
27
+
28
+ | Format | File | Ecosystem |
29
+ |--------|------|-----------|
30
+ | TOML | `Cargo.toml` | Rust |
31
+ | TOML | `pyproject.toml` | Python |
32
+ | JSON | `package.json` | Node.js |
33
+ | XML | `pom.xml` | Java / Maven |
34
+
35
+ ## Installation
36
+
37
+ **Cargo**
38
+
39
+ ```bash
40
+ cargo install ferrflow
41
+ ```
42
+
43
+ **npm**
44
+
45
+ ```bash
46
+ npm install -D ferrflow
47
+ ```
48
+
49
+ **Docker**
50
+
51
+ ```bash
52
+ docker run ghcr.io/ferrflow/ferrflow:latest check
53
+ ```
54
+
55
+ **Pre-built binaries**
56
+
57
+ Download from [Releases](https://github.com/FerrFlow-Org/FerrFlow/releases).
58
+
59
+ ## Usage
60
+
61
+ ```bash
62
+ # Preview what would be bumped
63
+ ferrflow check
64
+
65
+ # Run a release
66
+ ferrflow release
67
+
68
+ # Dry run
69
+ ferrflow release --dry-run
70
+
71
+ # Pre-release
72
+ ferrflow release --channel beta
73
+
74
+ # Scaffold a config file
75
+ ferrflow init
76
+
77
+ # Scaffold a config file in a specific format
78
+ ferrflow init --format json5
79
+
80
+ # Use a specific config file
81
+ ferrflow check --config path/to/ferrflow.toml
82
+
83
+ # Or set via environment variable
84
+ FERRFLOW_CONFIG=path/to/ferrflow.toml ferrflow check
85
+
86
+ # Print current version
87
+ ferrflow version # single repo
88
+ ferrflow version api # monorepo, specific package
89
+
90
+ # Print last release tag
91
+ ferrflow tag
92
+ ferrflow tag api
93
+
94
+ # JSON output (for scripting)
95
+ ferrflow version --json
96
+ ferrflow tag --json
97
+
98
+ # Shell completions
99
+ ferrflow completions bash >> ~/.bash_completion
100
+ ferrflow completions zsh > ~/.zfunc/_ferrflow
101
+ ferrflow completions fish > ~/.config/fish/completions/ferrflow.fish
102
+ ```
103
+
104
+ Pre-generated completion scripts are also available as `ferrflow-completions.tar.gz` in each [GitHub release](https://github.com/FerrFlow-Org/FerrFlow/releases).
105
+
106
+ ## Configuration
107
+
108
+ FerrFlow looks for a config file at the root of your repository, in this order:
109
+
110
+ 1. `ferrflow.json`
111
+ 2. `ferrflow.json5`
112
+ 3. `ferrflow.toml`
113
+ 4. `.ferrflow` (dotfile, JSON format)
114
+
115
+ If multiple config files exist, FerrFlow exits with an error listing the conflicting files. Use `--config <path>` (or `FERRFLOW_CONFIG` env var) to specify which one to use. If no config file is found, FerrFlow auto-detects common version files in the current directory.
116
+
117
+ Run `ferrflow init` to scaffold a config file interactively. Use `--format` to skip the format prompt:
118
+
119
+ ```bash
120
+ ferrflow init # asks which format (default: json)
121
+ ferrflow init --format json5
122
+ ferrflow init --format toml
123
+ ferrflow init --format dotfile # generates .ferrflow
124
+ ```
125
+
126
+ ### JSON Schema
127
+
128
+ Add `$schema` to get autocompletion and validation in VS Code, WebStorm, and any JSON-aware editor:
129
+
130
+ ```json
131
+ {
132
+ "$schema": "https://ferrflow.com/schema/ferrflow.json"
133
+ }
134
+ ```
135
+
136
+ ### JSON (default)
137
+
138
+ ```json
139
+ {
140
+ "$schema": "https://ferrflow.com/schema/ferrflow.json",
141
+ "workspace": {
142
+ "remote": "origin",
143
+ "branch": "main"
144
+ },
145
+ "package": [
146
+ {
147
+ "name": "my-app",
148
+ "path": ".",
149
+ "changelog": "CHANGELOG.md",
150
+ "versioned_files": [
151
+ { "path": "package.json", "format": "json" }
152
+ ]
153
+ }
154
+ ]
155
+ }
156
+ ```
157
+
158
+ ### JSON5
159
+
160
+ ```json5
161
+ {
162
+ workspace: {
163
+ remote: "origin",
164
+ branch: "main",
165
+ },
166
+ package: [
167
+ {
168
+ name: "my-app",
169
+ path: ".",
170
+ changelog: "CHANGELOG.md",
171
+ versioned_files: [
172
+ { path: "package.json", format: "json" },
173
+ ],
174
+ },
175
+ ],
176
+ }
177
+ ```
178
+
179
+ ### TOML
180
+
181
+ ```toml
182
+ [workspace]
183
+ remote = "origin"
184
+ branch = "main"
185
+
186
+ [[package]]
187
+ name = "my-app"
188
+ path = "."
189
+ changelog = "CHANGELOG.md"
190
+
191
+ [[package.versioned_files]]
192
+ path = "Cargo.toml"
193
+ format = "toml"
194
+ ```
195
+
196
+ ### Monorepo
197
+
198
+ <details>
199
+ <summary>JSON</summary>
200
+
201
+ ```json
202
+ {
203
+ "package": [
204
+ {
205
+ "name": "api",
206
+ "path": "services/api",
207
+ "changelog": "services/api/CHANGELOG.md",
208
+ "shared_paths": ["services/shared/"],
209
+ "versioned_files": [
210
+ { "path": "services/api/Cargo.toml", "format": "toml" }
211
+ ]
212
+ },
213
+ {
214
+ "name": "frontend",
215
+ "path": "frontend",
216
+ "changelog": "frontend/CHANGELOG.md",
217
+ "versioned_files": [
218
+ { "path": "frontend/package.json", "format": "json" }
219
+ ]
220
+ }
221
+ ]
222
+ }
223
+ ```
224
+
225
+ </details>
226
+
227
+ <details>
228
+ <summary>TOML</summary>
229
+
230
+ ```toml
231
+ [[package]]
232
+ name = "api"
233
+ path = "services/api"
234
+ changelog = "services/api/CHANGELOG.md"
235
+ shared_paths = ["services/shared/"]
236
+
237
+ [[package.versioned_files]]
238
+ path = "services/api/Cargo.toml"
239
+ format = "toml"
240
+
241
+ [[package]]
242
+ name = "frontend"
243
+ path = "frontend"
244
+ changelog = "frontend/CHANGELOG.md"
245
+
246
+ [[package.versioned_files]]
247
+ path = "frontend/package.json"
248
+ format = "json"
249
+ ```
250
+
251
+ </details>
252
+
253
+ ## Versioning Strategies
254
+
255
+ Each package can use its own versioning strategy. Set a default at the workspace level and override per package:
256
+
257
+ ```toml
258
+ [workspace]
259
+ versioning = "semver" # default for all packages
260
+
261
+ [[package]]
262
+ name = "api"
263
+ path = "packages/api"
264
+ # inherits semver from workspace
265
+
266
+ [[package]]
267
+ name = "site"
268
+ path = "packages/site"
269
+ versioning = "calver" # override: date-based
270
+ ```
271
+
272
+ | Strategy | Format | Example | Description |
273
+ |----------|--------|---------|-------------|
274
+ | `semver` | `MAJOR.MINOR.PATCH` | `1.4.2` | Default, driven by conventional commits |
275
+ | `calver` | `YYYY.M.D` | `2025.3.28` | Date-based, ignores commit types |
276
+ | `calver-short` | `YY.M.D` | `25.3.28` | Compact date-based |
277
+ | `calver-seq` | `YYYY.M.SEQ` | `2025.3.3` | Date + daily sequence counter |
278
+ | `sequential` | `N` | `42` | Simple incrementing build number |
279
+ | `zerover` | `0.MINOR.PATCH` | `0.15.2` | Permanently unstable, never hits 1.0 |
280
+
281
+ ## Tag Template
282
+
283
+ By default, FerrFlow tags single-repo releases as `v1.2.3` and monorepo releases as `api@v1.2.3`. Customize with `tag_template` at the workspace or package level using `{name}` and `{version}` placeholders.
284
+
285
+ ```toml
286
+ [workspace]
287
+ tag_template = "v{version}" # all packages: v1.2.3
288
+
289
+ [[package]]
290
+ name = "api"
291
+ path = "packages/api"
292
+ tag_template = "{name}/v{version}" # override: api/v1.2.3
293
+ ```
294
+
295
+ | Layout | Default template | Example tag |
296
+ |--------|-----------------|-------------|
297
+ | Single repo | `v{version}` | `v1.2.3` |
298
+ | Monorepo | `{name}@v{version}` | `api@v1.2.3` |
299
+ | Custom | `release-{version}` | `release-1.2.3` |
300
+
301
+ ## Pre-release Channels
302
+
303
+ Publish pre-release versions (alpha, beta, rc, dev) using the `--channel` flag or branch-based configuration. Pre-release versions follow the format `MAJOR.MINOR.PATCH-CHANNEL.IDENTIFIER`.
304
+
305
+ ### CLI flag
306
+
307
+ ```bash
308
+ ferrflow release --channel beta # 2.0.0-beta.1
309
+ ferrflow check --channel rc # preview pre-release version
310
+ ```
311
+
312
+ ### Branch-based configuration
313
+
314
+ Map branches to channels automatically:
315
+
316
+ ```json
317
+ {
318
+ "workspace": {
319
+ "branches": [
320
+ { "name": "main", "channel": false },
321
+ { "name": "develop", "channel": "dev", "prereleaseIdentifier": "timestamp" },
322
+ { "name": "release/*", "channel": "rc" }
323
+ ]
324
+ }
325
+ }
326
+ ```
327
+
328
+ Branch names support glob patterns. The first match wins.
329
+
330
+ ### Identifier strategies
331
+
332
+ | Strategy | Example | Description |
333
+ |----------|---------|-------------|
334
+ | `increment` | `-beta.3` | Auto-incrementing counter (default) |
335
+ | `timestamp` | `-dev.20250402T1430` | UTC timestamp |
336
+ | `short-hash` | `-dev.a1b2c3d` | Git short hash |
337
+ | `timestamp-hash` | `-dev.20250402T1430-a1b2c3d` | Timestamp + hash |
338
+
339
+ ### Behavior
340
+
341
+ - Floating tags (e.g. `v1`, `v1.2`) are never moved by pre-release versions
342
+ - GitHub Releases are marked as pre-release
343
+ - Stable releases include all commits since the last stable tag (skipping pre-release tags)
344
+ - Hook environment includes `FERRFLOW_CHANNEL` and `FERRFLOW_IS_PRERELEASE`
345
+
346
+ ## Conventional Commits
347
+
348
+ FerrFlow follows the [Conventional Commits](https://www.conventionalcommits.org/) spec.
349
+
350
+ | Prefix | Bump |
351
+ |--------|------|
352
+ | `fix:`, `perf:`, `refactor:` | patch |
353
+ | `feat:` | minor |
354
+ | `feat!:`, `BREAKING CHANGE` | major |
355
+ | `chore:`, `docs:`, `ci:` | none |
356
+
357
+ ## CI usage
358
+
359
+ **GitLab CI**
360
+
361
+ ```yaml
362
+ release:
363
+ image: ghcr.io/ferrflow/ferrflow:latest
364
+ script:
365
+ - ferrflow release
366
+ rules:
367
+ - if: '$CI_COMMIT_BRANCH == "main"'
368
+ ```
369
+
370
+ **GitHub Actions**
371
+
372
+ ```yaml
373
+ - name: Release
374
+ run: ferrflow release
375
+ env:
376
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
377
+ ```
378
+
379
+ ## License
380
+
381
+ MIT
package/bin/ferrflow.exe CHANGED
Binary file
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "x64"
4
4
  ],
5
5
  "description": "FerrFlow Windows x64 binary",
6
- "license": "MPL-2.0",
6
+ "license": "MIT",
7
7
  "name": "@ferrflow/win32-x64",
8
8
  "os": [
9
9
  "win32"
@@ -12,5 +12,5 @@
12
12
  "type": "git",
13
13
  "url": "git+https://github.com/FerrFlow-Org/FerrFlow.git"
14
14
  },
15
- "version": "2.13.1"
15
+ "version": "2.15.5"
16
16
  }