PHPackages                             isaac/composer-semver-cli - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. isaac/composer-semver-cli

Abandoned → [iodigital-com/composer-semver-cli](/?search=iodigital-com%2Fcomposer-semver-cli)Project[CLI &amp; Console](/categories/cli)

isaac/composer-semver-cli
=========================

CLI wrapper for the composer/semver package

v1.5.0(1y ago)330MITPHPPHP ^8.1CI passing

Since Nov 1Pushed 1y ago7 watchersCompare

[ Source](https://github.com/iodigital-com/composer-semver-cli)[ Packagist](https://packagist.org/packages/isaac/composer-semver-cli)[ RSS](/packages/isaac-composer-semver-cli/feed)WikiDiscussions develop Synced today

READMEChangelog (9)Dependencies (6)Versions (13)Used By (0)

Composer SemVer CLI
===================

[](#composer-semver-cli)

A CLI wrapper around the [composer/semver](https://github.com/composer/semver) package. Command namespaces are added for representing most methods of the [`Composer\Semver\Comparator`](https://github.com/composer/semver#comparator), [`Composer\Semver\Semver`](https://github.com/composer/semver#semver) and `Composer\Semver\VersionParser` classes.

Installation
------------

[](#installation)

Add the package as a requirement to your project:

```
$ composer require iodigital-com/composer-semver-cli

```

This will install the `composer-semver` script to the `vendor/bin` folder of the project.

Or as a global requirement:

```
$ composer global require iodigital-com/composer-semver-cli

```

This will install the `composer-semver` script to the `$HOME/.composer/vendor/bin` folder.

Usage
-----

[](#usage)

The following commands are provided:

- `comparator:qt`: indicates whether `version1` is greater than `version2` according to Composer SemVer
- `comparator:gte`: indicates whether `version1` is greater than or equal to `version2` according to Composer SemVer
- `comparator:lt`: indicates whether `version1` is less than `version2` according to Composer SemVer
- `comparator:lte`: indicates whether `version1` is less than or equal to `version2` according to Composer SemVer
- `comparator:eq`: indicates whether `version1` is equal to `version2` according to Composer SemVer
- `comparator:neq`: indicates whether `version1` is not equal to `version2` according to Composer SemVer
- `semver:satisfies`: check if a Composer SemVer constraint satisfies a version
- `semver:satisfied-by`: list which of the supplied versions are satisfied by a Composer SemVer constraint
- `semver:sort`: sort versions according to Composer SemVer
- `semver:rsort`: reverse sort versions according to Composer SemVer
- `version-parser:parse-stability`: return stability of the supplied version

Examples
--------

[](#examples)

Check whether a version is greater than another version:

```
$ composer-semver -v comparator:gt '1.25.0-alpha1' 'v1.24.0-p1'
version '1.25.0-alpha1' is greater than version 'v1.24.0-p1' according to Composer SemVer

```

Sort versions:

```
$ composer-semver semver:sort '1.25.0' 'v1.25.0-p2' '1.25.0-rc3' 'v1.25-dev'
v1.25-dev
1.25.0-rc3
1.25.0
v1.25.0-p2

```

Check if a version is satisfied by a Composer SemVer constraint:

```
$ composer-semver semver:satisfies -v '^1.25.0-p1' 'v1.25-p2'
Composer SemVer constraint '^1.25.0-p1' satisfies version 'v1.25-p2'

```

Check which versions are satisfied by a Composer SemVer constraint:

```
$ composer-semver semver:satisfied-by '^1.25.0-p1' '1.25.0' 'v1.25.0-p2' '1.25.0-rc3' 'v1.25-dev'
v1.25.0-p2

```

Return stability of a version:

```
$ composer-semver version-parser:parse-stability '1.25.0-rc3'
RC

```

Applications
------------

[](#applications)

This tool allows for Composer SemVer calculations where using the Composer tool itself would be impractical.

For instance, to prepare for a PHP upgrade, it is nice to know upfront if the new version introduces any incompatibilities with the `require.php` property of the packages in the `vendor` folder. This can be done using the `check-platform-reqs` Composer command; however, this the Composer command is actually run in the context of the new PHP version. When this is not possible, the following command can be used to generate a list of packages that are incompatible with a specific PHP version (in this case 8.3.0):

```
$ for f in vendor/*/*/composer.json ; do if jq -e '.require.php' $f > /dev/null && ! composer-semver semver:satisfies "$(jq -r '.require.php' $f)" '8.3.0' ; then echo $f ; fi ; done

```

Note that this makes use of the [jq](https://stedolan.github.io/jq/) command.

As another application, you might want to check how Composer sees the git tags of your application. For instance, you can sort them according to Composer SemVer:

```
$ composer-semver semver:sort $(git tag -l)

```

Or check which tags satisfy a Composer SemVer constraint:

```
$ composer-semver semver:satisfied-by "^1.2" $(git tag -l)

```

Or you might want to know how many stable versions have been released:

```
$ for VERSION in $(git tag -l) ; do composer-semver version-parser:parse-stability ${VERSION} ; done | grep -c "stable"

```

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance46

Moderate activity, may be stable

Popularity10

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~201 days

Recently: every ~68 days

Total

9

Last Release

404d ago

PHP version history (2 changes)v1.0.0PHP ^7.2 || ^8.0

v1.3.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/80809e7caf8341b1bac3d759e2b159a38b9bdab2deee5b0d4d66de6c83b992d1?d=identicon)[IntractoSupport](/maintainers/IntractoSupport)

![](https://www.gravatar.com/avatar/9e723dd83f374215e85b05fa260826f267bcef0dfb1026246ca1d845ae4f3a39?d=identicon)[JeroenNoten](/maintainers/JeroenNoten)

![](https://www.gravatar.com/avatar/6f1ed5a230a1b7a889ad5bb727fc43f070e2d57ad9f857625226096cbfcc80c7?d=identicon)[aadmathijssen](/maintainers/aadmathijssen)

![](https://www.gravatar.com/avatar/5270be3fd791a1045f0d928c0ca5d801d2c9dac77b83338a8ac877b94c6f7934?d=identicon)[mischabraam](/maintainers/mischabraam)

---

Top Contributors

[![aadmathijssen](https://avatars.githubusercontent.com/u/3796971?v=4)](https://github.com/aadmathijssen "aadmathijssen (66 commits)")

---

Tags

composercliconsolesemver

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/isaac-composer-semver-cli/health.svg)

```
[![Health](https://phpackages.com/badges/isaac-composer-semver-cli/health.svg)](https://phpackages.com/packages/isaac-composer-semver-cli)
```

###  Alternatives

[nunomaduro/collision

Cli error handling for console/command-line PHP applications.

4.6k331.8M8.5k](/packages/nunomaduro-collision)[nunomaduro/termwind

It's like Tailwind CSS, but for the console.

2.5k239.8M285](/packages/nunomaduro-termwind)[helhum/typo3-console

A reliable and powerful command line interface for TYPO3 CMS

2939.0M191](/packages/helhum-typo3-console)[buggregator/trap

A simple and powerful tool for debugging PHP applications.

2591.7M40](/packages/buggregator-trap)[laminas/laminas-cli

Command-line interface for Laminas projects

563.7M54](/packages/laminas-laminas-cli)[tightenco/takeout

Manage your dev dependencies with simple one-off Docker containers.

1.6k20.9k](/packages/tightenco-takeout)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
