donder-release-cli 1.5.4 → 2.0.0-beta.0

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.
Files changed (2) hide show
  1. package/README.md +87 -29
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  <br />
8
8
 
9
+ > Upgrading from v1? See the [migration guide](docs/MIGRATION_V2.md).
10
+
9
11
  ## Installation
10
12
 
11
13
  #### With Cargo
@@ -22,13 +24,15 @@ npm install -g donder-release-cli
22
24
 
23
25
  ## Quick start
24
26
 
25
- Initialize a configuration file in your project:
27
+ Set up a configuration file in your project:
26
28
 
27
29
  ```bash
28
- donder-release --init
29
- ```
30
+ # Interactive wizard
31
+ donder-release --setup
30
32
 
31
- This creates a `donder-release.yaml` file with commented examples for all options.
33
+ # Or write a default config without prompts
34
+ donder-release --skip-interactive
35
+ ```
32
36
 
33
37
  Preview a release without publishing:
34
38
 
@@ -45,18 +49,34 @@ donder-release
45
49
  ## CLI options
46
50
 
47
51
  ```
48
- -i, --init Initialize configuration file
49
- -c, --config <FILE> Configuration file path [default: donder-release.yaml]
50
- -p, --packages Comma-separated list of monorepo packages to release
51
- --pre-id <ID> Pre-release identifier (e.g. alpha, beta, rc)
52
- --dry-run Preview a pending release without publishing
53
- -v, --version Output CLI version
52
+ -s, --setup Interactive configuration setup wizard
53
+ --skip-interactive Write default configuration file without prompts
54
+ -c, --config <FILE> Configuration file path [default: donder-release.yaml]
55
+ -p, --packages Comma-separated list of monorepo packages to release
56
+ --pre-id <ID> Pre-release identifier (e.g. alpha, beta, rc)
57
+ --dry-run Preview a pending release without publishing
58
+ -v, --version Output CLI version
54
59
  ```
55
60
 
56
61
  ## Configuration
57
62
 
58
63
  All configuration is done in `donder-release.yaml`.
59
64
 
65
+ ### versioning
66
+
67
+ Versioning scheme for your project. Defaults to `semver`.
68
+
69
+ ```yaml
70
+ # Semantic versioning (default)
71
+ versioning: semver
72
+
73
+ # Calendar versioning
74
+ versioning: calver
75
+ calver_format: YYYY.MM.MICRO
76
+ ```
77
+
78
+ See [CalVer](#calendar-versioning-calver) for details.
79
+
60
80
  ### release_message
61
81
 
62
82
  The commit message for the release commit. Use `%s` as a placeholder for the version.
@@ -118,6 +138,8 @@ For example, a release of `1.2.0-beta.3` sets:
118
138
  - `MARKETING_VERSION = 1.2.0`
119
139
  - `CURRENT_PROJECT_VERSION = 2.3`
120
140
 
141
+ In CalVer mode, `CURRENT_PROJECT_VERSION` is always incremented from the current value in the file.
142
+
121
143
  #### Build metadata
122
144
 
123
145
  Append an auto-incrementing build number to the version:
@@ -139,7 +161,7 @@ changelog_file: CHANGELOG.md
139
161
 
140
162
  ### clean_pre_releases
141
163
 
142
- Delete pre-release tags and GitHub releases when a stable release is published:
164
+ Delete pre-release tags and GitHub releases when a stable release is published (semver only):
143
165
 
144
166
  ```yaml
145
167
  clean_pre_releases: true
@@ -161,9 +183,48 @@ Release specific packages:
161
183
  donder-release --packages api,web
162
184
  ```
163
185
 
186
+ #### Per-package versioning
187
+
188
+ In monorepos, each package can use its own versioning scheme:
189
+
190
+ ```yaml
191
+ versioning: semver
192
+ bump_files:
193
+ - { target: npm, path: packages/api, package: true }
194
+ - { target: npm, path: packages/app, package: true, versioning: calver, calver_format: YYYY.MM.MICRO }
195
+ ```
196
+
197
+ Packages without a versioning override inherit the global setting.
198
+
199
+ ## Calendar versioning (CalVer)
200
+
201
+ Date-based versioning for projects where releases are time-driven (mobile apps, services, infrastructure).
202
+
203
+ ```yaml
204
+ versioning: calver
205
+ calver_format: YYYY.MM.MICRO
206
+ ```
207
+
208
+ Supported format segments:
209
+
210
+ | Segment | Description | Example |
211
+ |---|---|---|
212
+ | `YYYY` | Full year | 2026 |
213
+ | `YY` | Short year | 26 |
214
+ | `0Y` | Zero-padded year | 06 |
215
+ | `MM` | Short month | 1-12 |
216
+ | `0M` | Zero-padded month | 01-12 |
217
+ | `WW` | Week number | 1-52 |
218
+ | `0W` | Zero-padded week | 01-52 |
219
+ | `MICRO` | Auto-incrementing counter | 0, 1, 2... |
220
+
221
+ The format must have exactly 3 dot-separated segments, one of which must be `MICRO`. MICRO resets to 0 when the calendar segment changes (e.g. new month).
222
+
223
+ Pre-releases are not supported with CalVer. Breaking changes are tracked in the changelog but do not affect the version number.
224
+
164
225
  ## Pre-releases
165
226
 
166
- Create pre-release versions with the `--pre-id` flag:
227
+ Create pre-release versions with the `--pre-id` flag (semver only):
167
228
 
168
229
  ```bash
169
230
  donder-release --pre-id alpha # 1.0.1-alpha.0
@@ -175,13 +236,13 @@ Subsequent pre-releases auto-increment: `1.0.1-alpha.0` -> `1.0.1-alpha.1`.
175
236
 
176
237
  ## Environment variables
177
238
 
178
- | Variable | Description | Default |
179
- | --------------------- | ------------------------------------------------------ | ----------------------------------- |
180
- | `GH_TOKEN` | GitHub personal access token (required for publishing) | |
181
- | `GIT_AUTHOR_NAME` | Git author name | `sbayw-bot` |
182
- | `GIT_AUTHOR_EMAIL` | Git author email | `<sbayw-bot current primary email>` |
183
- | `GIT_COMMITTER_NAME` | Git committer name | Falls back to `GIT_AUTHOR_NAME` |
184
- | `GIT_COMMITTER_EMAIL` | Git committer email | Falls back to `GIT_AUTHOR_EMAIL` |
239
+ | Variable | Description | Default |
240
+ |---|---|---|
241
+ | `GH_TOKEN` | GitHub personal access token (required for publishing) | |
242
+ | `GIT_AUTHOR_NAME` | Git author name | `sbayw-bot` |
243
+ | `GIT_AUTHOR_EMAIL` | Git author email | `<sbayw-bot current primary email>` |
244
+ | `GIT_COMMITTER_NAME` | Git committer name | Falls back to `GIT_AUTHOR_NAME` |
245
+ | `GIT_COMMITTER_EMAIL` | Git committer email | Falls back to `GIT_AUTHOR_EMAIL` |
185
246
 
186
247
  Environment variables can be set in a `donder-release.env` file in your project root.
187
248
 
@@ -247,15 +308,12 @@ donder-release follows the [Conventional Commits 1.0.0](https://www.conventional
247
308
  [optional footer(s)]
248
309
  ```
249
310
 
250
- Version bumps are determined by commit type:
251
-
252
- | Commit | Version bump |
253
- | ------------------------- | ---------------------- |
254
- | `fix: ...` | Patch (1.0.0 -> 1.0.1) |
255
- | `feat: ...` | Minor (1.0.0 -> 1.1.0) |
256
- | `BREAKING CHANGE:` footer | Major (1.0.0 -> 2.0.0) |
311
+ Version bumps are determined by commit type (semver only):
257
312
 
258
- #### TODO
313
+ | Commit | Version bump |
314
+ |---|---|
315
+ | `fix: ...` | Patch (1.0.0 -> 1.0.1) |
316
+ | `feat: ...` | Minor (1.0.0 -> 1.1.0) |
317
+ | `feat!: ...` or `BREAKING CHANGE:` footer | Major (1.0.0 -> 2.0.0) |
259
318
 
260
- - Footer links support
261
- - Add support to other git providers(?)
319
+ In CalVer mode, all releasable commits increment the MICRO counter regardless of type.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "donder-release-cli",
3
- "version": "1.5.4",
3
+ "version": "2.0.0-beta.0",
4
4
  "description": "Quickly create releases on Github from the command line or CI using conventional commits.",
5
5
  "repository": {
6
6
  "type": "git",