-
Notifications
You must be signed in to change notification settings - Fork 111
Description
After #33 is implemented, the next step is to implement a minimal metadata registry. Here is one way to do that:
- Have repository https://github.com/fortran-lang/package-registry that would contain a simple JSON file of this form which is the package registry:
[{
"name": "stdlib",
"versions": [
{"version": "0.3.4", "url": "https://github.com/fortran-lang/stdlib/archive/0.3.4.tar.gz"},
{"version": "0.3.5", "url": "https://github.com/fortran-lang/stdlib/archive/0.3.5.tar.gz"},
]
}, {
"name": "bspline",
"versions": [
{"version": "6.0.0", "url": "https://github.com/jacobwilliams/bspline-fortran/archive/6.0.0.tar.gz"},
{"version": "5.4.2", "url": "https://github.com/jacobwilliams/bspline-fortran/archive/5.4.2.tar.gz"},
]
}]
-
We will then have scripts that take this JSON file and download the actual metadata for each package version. So for example, to obtain the metadata for the package
bspline
version5.4.2
, it would download the tarballhttps://github.com/jacobwilliams/bspline-fortran/archive/5.4.2.tar.gz
, unpack and it would read itsfpm.toml
, which would contain all the metadata such as short and long description, the list of dependencies, and other things. Then we can automatically create a website which would list all this metadata. This generated website would contain a generated filemetadata.json
, which thefpm
tool can then download to obtain a searchable data base of packages (fpm search
). -
To add a new package to registry, just a new simple entry must be made to the above JSON file by hand, say by issuing a PR against the repository.
-
Later we can automate things more, similarly to how conda-forge works (https://conda-forge.org/docs/maintainer/adding_pkgs.html), where to put a new package in, a PR is sent against https://github.com/conda-forge/staged-recipes/, where the CI checks initial quality and that the package builds, and then if it gets merged, the CI actually creates a new repository for the package etc. In our case, we could have a staging repository, and if a PR is merged, the CI would correctly update the above JSON file.
We can discuss if the JSON file should also contain all the metadata from fpm.toml
directly. The advantage of the above approach is that it is not redundant, the JSON only contains the minimal amount of information that can be edited and maintained by hand, and if you want more, you download the tarball and read its fpm.toml
, which will be done automatically in the step 2.
Overall, this minimal package registry only contains a minimal JSON file. The actual tarballs and metadata are hosted elsewhere. After this is well implemented and works, we can evolve it into a full package registry (#35).