purescript / registry-dev

Development work related to the PureScript Registry
https://github.com/purescript/registry
97 stars 80 forks source link

Implement `registry-version-check` script #426

Open thomashoneyman opened 2 years ago

thomashoneyman commented 2 years ago

The packaging team regularly makes manual package sets releases. Manual releases are required, for example, when a package such as Halogen is upgraded. Invariably the new Halogen version will break other packages in the set, and so the Halogen release is not added at first. Over time the dependents upgrade to the new Halogen, at which point Halogen and its dependents can all be updated in one go to produce a new package set.

The packaging team needs to be able to tell what package versions have been uploaded to the registry and are more recent than the version of those packages in the package set. For example, if Halogen 6 is in the package set and Halogen 7 has been released (but could not be added automatically because it breaks downstream packages), then we need to be able to tell that there's a Halogen 7 release waiting to go into the package set.

To accomplish this, we need to add a new script to the registry. This script, most likely named Registry.Scripts.VersionCheck, should:

  1. Read in the contents of the most recent package set (this can be read from the package-sets repository for now, but it will use the registry in the future)
  2. Read in the contents of the metadata directory in the registry
  3. Find all packages with a latest version higher than its version in the package set
  4. Log those package versions to the console for review
thomashoneyman commented 2 years ago

Some improvements for the future we might want to break out into other issues:

  1. It would be nice for this script to be usable to find packages that never got added to the package sets at all (for example, Halogen 7 came out, then a package based on it came out before Halogen 7 made it into the package sets). Otherwise, packages that didn't get added to the set and then don't have a release for some time risk never being added.
  2. It would be nice for this script to make a rudimentary attempt to batch packages together, perhaps based on version bounds, so that the packaging team is more likely to be able to put a valid batch into the package set. For example, it might be able to tell that the Halogen packages can all be added together. Or it might do the opposite, and represent that it is unlikely that a package can be added to the set based on its version bounds. This can help us prioritize.