{"id":16223758,"url":"https://github.com/alilleybrinker/semver-explain","last_synced_at":"2025-06-19T20:40:41.282Z","repository":{"id":45182707,"uuid":"429031464","full_name":"alilleybrinker/semver-explain","owner":"alilleybrinker","description":"Explain semver requirements by converting them into less than, greater than, and/or equal to form.","archived":false,"fork":false,"pushed_at":"2024-01-26T21:36:43.000Z","size":20,"stargazers_count":31,"open_issues_count":7,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-13T15:10:52.514Z","etag":null,"topics":["cli","semver"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/semver-explain","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alilleybrinker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-17T12:10:14.000Z","updated_at":"2024-02-06T13:31:01.000Z","dependencies_parsed_at":"2022-07-25T04:17:00.466Z","dependency_job_id":null,"html_url":"https://github.com/alilleybrinker/semver-explain","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/alilleybrinker/semver-explain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alilleybrinker%2Fsemver-explain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alilleybrinker%2Fsemver-explain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alilleybrinker%2Fsemver-explain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alilleybrinker%2Fsemver-explain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alilleybrinker","download_url":"https://codeload.github.com/alilleybrinker/semver-explain/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alilleybrinker%2Fsemver-explain/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260827462,"owners_count":23068971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","semver"],"created_at":"2024-10-10T12:20:00.196Z","updated_at":"2025-06-19T20:40:36.273Z","avatar_url":"https://github.com/alilleybrinker.png","language":"Rust","readme":"# `semver-explain`\n\n__Convert SemVer requirements to their most-obvious equivalents.__\n\n`semver-explain` is a CLI tool to explain Semantic Versioning requirements by converting them to a form with only less-than, greater-than and/or equal-to comparators, where the major, minor, and patch versions are all specified.\n\nThe exact interpretation of SemVer requirements' meaning [comes from Cargo][cargo_semver]. In particular, it does not handle [hyphen ranges or x-ranges][node_semver] from the `node-semver` library for JavaScript.\n\n## Why?\n\nIt's easy to forget the exact meaning of SemVer comparators like `~`, `^`, and `*`. Rather than looking up documentation to confirm what's meant by a requirement, you can plug it into `semver-explain` and get a set of more-obvious equivalent requirements!\n\n## Examples\n\n```sh\n$ semver-explain \"^1.4.0\"\n\u003e=1.4.0, \u003c2.0.0\n$ semver-explain \"~0.5.3\"\n\u003e=0.5.3, \u003c0.6.0\n$ semver-explain \"5.6.*\"\n\u003e=5.6.0, \u003c5.7.0\n```\n\n## Installation\n\n`semver-explain` is written in Rust, so you'll need to [install Rust][install_rust] first.\n\n```sh\n# To install from Crates.io\n$ cargo install semver-explain\n# To install from source (after cloning or downloading)\n$ cargo install --path \"\u003cpath to download\u003e\"\n```\n\n## How to Use\n\nJust give it a SemVer requirement as a string! The CLI is purposefully simple.\n\n```\nsemver-explain 0.2.0\n\nUSAGE:\n    semver-explain \u003cVERSION_REQ\u003e\n\nFLAGS:\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nARGS:\n    \u003cVERSION_REQ\u003e    semantic versioning requirement to explain\n```\n\n## License\n\n`semver-explain` is MIT licensed. The full license text can be found in `LICENSE.md`.\n\n## Thanks\n\nThis tool uses the excellent Rust [`semver`][semver] library, without which it would have been much more tedious to build.\n\n[cargo_semver]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html \"Link to Cargo's explanation of semver requirements\"\n[node_semver]: https://github.com/npm/node-semver#advanced-range-syntax \"Link to node-semver's range syntax\"\n[install_rust]: https://www.rust-lang.org/tools/install \"Link to Rust installation instructions.\"\n[semver]: https://crates.io/crates/semver \"Link to the semver crate\"\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falilleybrinker%2Fsemver-explain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falilleybrinker%2Fsemver-explain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falilleybrinker%2Fsemver-explain/lists"}