upd-cli 0.0.26__tar.gz → 0.0.28__tar.gz
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.
- {upd_cli-0.0.26 → upd_cli-0.0.28}/CHANGELOG.md +21 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/Cargo.lock +1 -1
- {upd_cli-0.0.26 → upd_cli-0.0.28}/Cargo.toml +1 -1
- {upd_cli-0.0.26 → upd_cli-0.0.28}/PKG-INFO +3 -3
- {upd_cli-0.0.26 → upd_cli-0.0.28}/README.md +2 -2
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/align.rs +2 -10
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/config.rs +5 -7
- upd_cli-0.0.28/src/main.rs +3147 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/npm.rs +13 -2
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/pypi.rs +3 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/cargo_toml.rs +219 -72
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/csproj.rs +75 -11
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/gemfile.rs +40 -16
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/mod.rs +56 -16
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/package_json.rs +376 -39
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/pyproject.rs +474 -61
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/requirements.rs +35 -16
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/terraform.rs +41 -15
- upd_cli-0.0.28/src/version/mod.rs +105 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/version/pep440.rs +3 -0
- upd_cli-0.0.26/src/main.rs +0 -1868
- upd_cli-0.0.26/src/version/mod.rs +0 -55
- {upd_cli-0.0.26 → upd_cli-0.0.28}/.mise.toml +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/.pre-commit-config.yaml +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/.pre-commit-hooks.yaml +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/.rumdl.toml +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/LICENSE +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/Makefile +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/assets/logo-wide.svg +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/assets/logo.svg +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/pyproject.toml +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/python/upd_cli/__init__.py +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/python/upd_cli/__main__.py +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/python/upd_cli/py.typed +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/rust-toolchain.toml +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/audit.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/cache.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/cli.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/interactive.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/lib.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/lockfile.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/crates_io.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/github_releases.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/go_proxy.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/mock.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/mod.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/nuget.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/rubygems.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/terraform.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/registry/utils.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/github_actions.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/go_mod.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/mise.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/updater/pre_commit.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/src/version/semver_util.rs +0 -0
- {upd_cli-0.0.26 → upd_cli-0.0.28}/vership.toml +0 -0
|
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## [0.0.28](https://github.com/rvben/upd/compare/v0.0.27...v0.0.28) - 2026-04-17
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **updater**: recursive hidden-file discovery, precise line numbers, scoped npm ([5fcc5d8](https://github.com/rvben/upd/commit/5fcc5d818d349abd109ae7cac001972a6a9cadea))
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **package_json**: index dependencies when opening brace starts on its own line ([e40c3f1](https://github.com/rvben/upd/commit/e40c3f1bf736ef3ea0c565047d886ff7543d37c9))
|
|
21
|
+
- **update**: check mode exits 1 when only configured pins differ ([33a69f5](https://github.com/rvben/upd/commit/33a69f5a16ee03247a13c41bfabe1935d09bfa64))
|
|
22
|
+
- **updater**: classify configured pins as pins, not updates ([571a96b](https://github.com/rvben/upd/commit/571a96b9de72fe283c5114e594da72687a67efab))
|
|
23
|
+
|
|
24
|
+
## [0.0.27](https://github.com/rvben/upd/compare/v0.0.26...v0.0.27) - 2026-04-15
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- **align**: use pep440_rs for Python stable-version check ([7f132b3](https://github.com/rvben/upd/commit/7f132b351cdd9225a31df96d2a421c8c42926987))
|
|
29
|
+
- **version**: use PEP 440 release segments for precision matching ([fff041d](https://github.com/rvben/upd/commit/fff041d2d2e9508f117012a6bfc857ee57e5cd20))
|
|
30
|
+
|
|
10
31
|
## [0.0.26](https://github.com/rvben/upd/compare/v0.0.25...v0.0.26) - 2026-04-15
|
|
11
32
|
|
|
12
33
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: upd-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.28
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -164,7 +164,7 @@ upd align --check # Exit 1 if misalignments found (for CI)
|
|
|
164
164
|
|
|
165
165
|
# Check for security vulnerabilities
|
|
166
166
|
upd audit
|
|
167
|
-
upd audit --check # Exit 1 if vulnerabilities found (for CI)
|
|
167
|
+
upd audit --check # Exit 1 if vulnerabilities are found or the audit can't complete (for CI)
|
|
168
168
|
```
|
|
169
169
|
|
|
170
170
|
## Supported Files
|
|
@@ -305,7 +305,7 @@ Check your dependencies for known security vulnerabilities using the [OSV (Open
|
|
|
305
305
|
```bash
|
|
306
306
|
upd audit # Scan all dependency files
|
|
307
307
|
upd audit --dry-run # Same as audit (read-only operation)
|
|
308
|
-
upd audit --check # Exit 1 if vulnerabilities found
|
|
308
|
+
upd audit --check # Exit 1 if vulnerabilities are found or the audit can't complete
|
|
309
309
|
upd audit --lang python # Audit only Python packages
|
|
310
310
|
upd audit ./services # Audit specific directory
|
|
311
311
|
```
|
|
@@ -141,7 +141,7 @@ upd align --check # Exit 1 if misalignments found (for CI)
|
|
|
141
141
|
|
|
142
142
|
# Check for security vulnerabilities
|
|
143
143
|
upd audit
|
|
144
|
-
upd audit --check # Exit 1 if vulnerabilities found (for CI)
|
|
144
|
+
upd audit --check # Exit 1 if vulnerabilities are found or the audit can't complete (for CI)
|
|
145
145
|
```
|
|
146
146
|
|
|
147
147
|
## Supported Files
|
|
@@ -282,7 +282,7 @@ Check your dependencies for known security vulnerabilities using the [OSV (Open
|
|
|
282
282
|
```bash
|
|
283
283
|
upd audit # Scan all dependency files
|
|
284
284
|
upd audit --dry-run # Same as audit (read-only operation)
|
|
285
|
-
upd audit --check # Exit 1 if vulnerabilities found
|
|
285
|
+
upd audit --check # Exit 1 if vulnerabilities are found or the audit can't complete
|
|
286
286
|
upd audit --lang python # Audit only Python packages
|
|
287
287
|
upd audit ./services # Audit specific directory
|
|
288
288
|
```
|
|
@@ -8,6 +8,7 @@ use crate::updater::{
|
|
|
8
8
|
Lang, MiseUpdater, PackageJsonUpdater, ParsedDependency, PreCommitUpdater, PyProjectUpdater,
|
|
9
9
|
RequirementsUpdater, TerraformUpdater, Updater,
|
|
10
10
|
};
|
|
11
|
+
use crate::version::is_stable_pep440;
|
|
11
12
|
use anyhow::Result;
|
|
12
13
|
use std::collections::HashMap;
|
|
13
14
|
use std::path::{Path, PathBuf};
|
|
@@ -170,16 +171,7 @@ fn find_highest_version(occurrences: &[PackageOccurrence], lang: Lang) -> Option
|
|
|
170
171
|
/// Check if a version is stable (not a pre-release)
|
|
171
172
|
fn is_stable_version(version: &str, lang: Lang) -> bool {
|
|
172
173
|
match lang {
|
|
173
|
-
Lang::Python =>
|
|
174
|
-
// Python pre-release indicators: a, b, rc, alpha, beta, dev
|
|
175
|
-
let v = version.to_lowercase();
|
|
176
|
-
!v.contains("a")
|
|
177
|
-
&& !v.contains("b")
|
|
178
|
-
&& !v.contains("rc")
|
|
179
|
-
&& !v.contains("alpha")
|
|
180
|
-
&& !v.contains("beta")
|
|
181
|
-
&& !v.contains("dev")
|
|
182
|
-
}
|
|
174
|
+
Lang::Python => is_stable_pep440(version),
|
|
183
175
|
Lang::Node | Lang::Rust | Lang::Go | Lang::DotNet => {
|
|
184
176
|
// Semver pre-release indicator: hyphen followed by identifier
|
|
185
177
|
!version.contains('-')
|
|
@@ -482,7 +482,7 @@ parent-pkg = "1.0.0"
|
|
|
482
482
|
|
|
483
483
|
// Verify results:
|
|
484
484
|
// - requests should be ignored
|
|
485
|
-
// - flask should be pinned to 2.0.0
|
|
485
|
+
// - flask should be pinned to 2.0.0
|
|
486
486
|
// - django should be updated to 4.2.0
|
|
487
487
|
|
|
488
488
|
assert_eq!(result.ignored.len(), 1);
|
|
@@ -492,8 +492,7 @@ parent-pkg = "1.0.0"
|
|
|
492
492
|
assert_eq!(result.pinned[0].0, "flask");
|
|
493
493
|
assert_eq!(result.pinned[0].2, "2.0.0"); // New version is pinned version
|
|
494
494
|
|
|
495
|
-
|
|
496
|
-
assert_eq!(result.updated.len(), 2);
|
|
495
|
+
assert_eq!(result.updated.len(), 1);
|
|
497
496
|
|
|
498
497
|
// Verify contents by checking all updated packages
|
|
499
498
|
let updated_names: Vec<&str> = result
|
|
@@ -501,8 +500,8 @@ parent-pkg = "1.0.0"
|
|
|
501
500
|
.iter()
|
|
502
501
|
.map(|(n, _, _, _)| n.as_str())
|
|
503
502
|
.collect();
|
|
504
|
-
assert!(updated_names.contains(&"flask"));
|
|
505
503
|
assert!(updated_names.contains(&"django"));
|
|
504
|
+
assert!(!updated_names.contains(&"flask"));
|
|
506
505
|
}
|
|
507
506
|
|
|
508
507
|
/// Integration test: Config with all supported file types
|
|
@@ -527,7 +526,7 @@ parent-pkg = "1.0.0"
|
|
|
527
526
|
});
|
|
528
527
|
|
|
529
528
|
// Test Requirements
|
|
530
|
-
// RequirementsUpdater: pinned packages appear in
|
|
529
|
+
// RequirementsUpdater: pinned packages appear only in pinned
|
|
531
530
|
{
|
|
532
531
|
let mut file = NamedTempFile::new().unwrap();
|
|
533
532
|
writeln!(file, "ignored-pkg>=1.0.0").unwrap();
|
|
@@ -549,8 +548,7 @@ parent-pkg = "1.0.0"
|
|
|
549
548
|
|
|
550
549
|
assert_eq!(result.ignored.len(), 1);
|
|
551
550
|
assert_eq!(result.pinned.len(), 1);
|
|
552
|
-
|
|
553
|
-
assert_eq!(result.updated.len(), 2); // pinned-pkg + other-pkg
|
|
551
|
+
assert_eq!(result.updated.len(), 1); // other-pkg only
|
|
554
552
|
}
|
|
555
553
|
|
|
556
554
|
// Test package.json
|