@metalagman/semverctl-linux-x64 0.0.6 โ 0.0.8
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 +21 -0
- package/README.md +165 -0
- package/bin/semverctl +0 -0
- package/package.json +5 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alexey Samoylov
|
|
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,165 @@
|
|
|
1
|
+
# semverctl
|
|
2
|
+
|
|
3
|
+
[](https://goreportcard.com/report/github.com/metalagman/semverctl)
|
|
4
|
+
[](https://github.com/metalagman/semverctl/actions/workflows/lint.yml)
|
|
5
|
+
[](https://github.com/metalagman/semverctl/actions/workflows/test.yml)
|
|
6
|
+
[](https://codecov.io/github/metalagman/semverctl)
|
|
7
|
+
[](https://github.com/metalagman/semverctl/releases)
|
|
8
|
+
[](https://www.npmjs.com/package/@metalagman/semverctl)
|
|
9
|
+
[](https://pypi.org/project/semverctl/)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
|
|
12
|
+
CLI for bumping and setting SemVer values in JSON/YAML files
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- โจ **Semantic Versioning** - Strict SemVer 2.0.0 compliance with prerelease and build metadata support
|
|
17
|
+
- ๐ **Multiple Formats** - JSON and YAML file support
|
|
18
|
+
- ๐ฏ **Path Navigation** - Dot-notation paths for nested version fields (e.g., `.app.version`)
|
|
19
|
+
- ๐ข **Numeric Bumping** - Bump individual numeric fields for object-style versions
|
|
20
|
+
- ๐งช **Dry-Run Mode** - Preview changes with unified diff output
|
|
21
|
+
- ๐ **Cross-Platform** - Linux, macOS, and Windows support (CGO-free)
|
|
22
|
+
- โก **Zero Dependencies** - Pure Go implementation with no runtime dependencies
|
|
23
|
+
- ๐ฆ **Multiple Distribution Channels** - Go install, npm, uv/PyPI, and GitHub Releases
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
### Go
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
go install github.com/metalagman/semverctl/cmd/semverctl@latest
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### npm (Node.js)
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx @metalagman/semverctl version
|
|
37
|
+
|
|
38
|
+
# Or install globally
|
|
39
|
+
npm install -g @metalagman/semverctl
|
|
40
|
+
semverctl version
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### uv/Pip (Python)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
uvx semverctl version
|
|
47
|
+
|
|
48
|
+
# Or install
|
|
49
|
+
uv pip install semverctl
|
|
50
|
+
semverctl version
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Pre-built Binaries
|
|
54
|
+
|
|
55
|
+
Download pre-built binaries from [GitHub Releases](https://github.com/metalagman/semverctl/releases):
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Linux/macOS
|
|
59
|
+
curl -L https://github.com/metalagman/semverctl/releases/latest/download/semverctl-linux-amd64 -o semverctl
|
|
60
|
+
chmod +x semverctl
|
|
61
|
+
sudo mv semverctl /usr/local/bin/
|
|
62
|
+
|
|
63
|
+
# Verify checksum (recommended)
|
|
64
|
+
curl -L https://github.com/metalagman/semverctl/releases/latest/download/checksums.txt -o checksums.txt
|
|
65
|
+
sha256sum -c checksums.txt
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Usage
|
|
69
|
+
|
|
70
|
+
### Bump Version
|
|
71
|
+
|
|
72
|
+
Bump the semantic version at the specified path in JSON or YAML files:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Bump patch version in package.json (default target)
|
|
76
|
+
semverctl bump
|
|
77
|
+
|
|
78
|
+
# Bump specific version component in package.json
|
|
79
|
+
semverctl bump --minor
|
|
80
|
+
semverctl bump --major
|
|
81
|
+
semverctl bump --patch
|
|
82
|
+
|
|
83
|
+
# Bump version in a specific file at a custom path
|
|
84
|
+
semverctl bump --file config.yaml --path .app.version
|
|
85
|
+
|
|
86
|
+
# Bump all matching files in current directory tree
|
|
87
|
+
semverctl bump --glob "**/*.json"
|
|
88
|
+
|
|
89
|
+
# Preview changes without modifying files
|
|
90
|
+
semverctl bump --dry-run
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Set Version
|
|
94
|
+
|
|
95
|
+
Set an explicit version value:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Set version to 1.2.3 in package.json (default target)
|
|
99
|
+
semverctl set 1.2.3
|
|
100
|
+
|
|
101
|
+
# Set version in a specific file at a custom path
|
|
102
|
+
semverctl set 2.0.0 --file config.yaml --path .app.version
|
|
103
|
+
|
|
104
|
+
# Set version in all matching files under current directory
|
|
105
|
+
semverctl set 2.0.0 --glob "**/*.json"
|
|
106
|
+
|
|
107
|
+
# Preview changes
|
|
108
|
+
semverctl set 1.0.0 --dry-run
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Numeric Bump
|
|
112
|
+
|
|
113
|
+
For object-style version fields (e.g., `{ "Major": 1, "Minor": 2, "Patch": 3 }`),
|
|
114
|
+
you can bump numeric scalar values:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
semverctl bump --numeric --path .version.Patch --file config.json
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This increments the numeric value at the specified path by 1.
|
|
121
|
+
|
|
122
|
+
## Path Syntax
|
|
123
|
+
|
|
124
|
+
Paths use dot notation to navigate nested structures:
|
|
125
|
+
|
|
126
|
+
- `.version` - Top-level version field
|
|
127
|
+
- `.app.version` - Nested version field
|
|
128
|
+
- `.package.version` - Deeply nested field
|
|
129
|
+
|
|
130
|
+
The leading dot is optional: `version` and `.version` are equivalent.
|
|
131
|
+
|
|
132
|
+
## File Formats
|
|
133
|
+
|
|
134
|
+
Supported formats:
|
|
135
|
+
|
|
136
|
+
- **JSON** (`.json`)
|
|
137
|
+
- **YAML** (`.yaml`, `.yml`)
|
|
138
|
+
|
|
139
|
+
## Strict SemVer
|
|
140
|
+
|
|
141
|
+
semverctl follows the [Semantic Versioning 2.0.0](https://semver.org/) specification:
|
|
142
|
+
|
|
143
|
+
- Versions must be in format `MAJOR.MINOR.PATCH`
|
|
144
|
+
- Prerelease and build metadata are supported: `1.0.0-alpha+build.123`
|
|
145
|
+
- Leading zeros are not allowed in numeric components
|
|
146
|
+
- When bumping, prerelease and build metadata are cleared
|
|
147
|
+
|
|
148
|
+
## Dry-Run Mode
|
|
149
|
+
|
|
150
|
+
Use `--dry-run` to preview changes without modifying files:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
semverctl bump --dry-run package.json
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
This outputs a unified diff showing what would change.
|
|
157
|
+
|
|
158
|
+
## Exit Codes
|
|
159
|
+
|
|
160
|
+
- `0` - Success
|
|
161
|
+
- `1` - Error (invalid arguments, file not found, parse error, etc.)
|
|
162
|
+
|
|
163
|
+
## License
|
|
164
|
+
|
|
165
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
package/bin/semverctl
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -7,11 +7,14 @@
|
|
|
7
7
|
],
|
|
8
8
|
"description": "@metalagman/semverctl binary for linux/amd64",
|
|
9
9
|
"files": [
|
|
10
|
-
"bin"
|
|
10
|
+
"bin",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE"
|
|
11
13
|
],
|
|
14
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
12
15
|
"name": "@metalagman/semverctl-linux-x64",
|
|
13
16
|
"os": [
|
|
14
17
|
"linux"
|
|
15
18
|
],
|
|
16
|
-
"version": "0.0.
|
|
19
|
+
"version": "0.0.8"
|
|
17
20
|
}
|