Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bogdanp/racksnaps

Daily snapshots of the Racket Package Catalog.
https://github.com/bogdanp/racksnaps

package-management racket

Last synced: about 2 months ago
JSON representation

Daily snapshots of the Racket Package Catalog.

Awesome Lists containing this project

README

        

# racksnaps

[![CI](https://github.com/Bogdanp/racksnaps/actions/workflows/push.yml/badge.svg)](https://github.com/Bogdanp/racksnaps/actions/workflows/push.yml)

This code builds daily snapshots of the official [Racket Package
Catalog]. The intent is to allow application developers to depend on
specific, unchanging sets of packages until they're ready to update
their apps.

The snapshots are currently available at https://racksnaps.defn.io/snapshots/ .

To develop against the snapshot from November 16th, 2022, you might
run the following command:

raco pkg config --set catalogs \
https://download.racket-lang.org/releases/8.7/catalog/ \
https://racksnaps.defn.io/snapshots/2022/11/16/catalog/ \
https://pkgs.racket-lang.org \
https://planet-compats.racket-lang.org

When building a web app in CI you might limit the catalog list to just
the release catalog (for packages in the main distribution) and the
snapshot:

raco pkg config --set catalogs \
https://download.racket-lang.org/releases/8.7/catalog/ \
https://racksnaps.defn.io/snapshots/2022/11/16/catalog/

## How it Works

Every day at 12am UTC, the service queries all the packages on
pkgs.racket-lang.org for metadata and source locations. It then
creates a source package archive for each package whose sources are
still valid.

Snapshots are never modified once they succeed and a content
addressing scheme is used for the individual packages to avoid using
up too much disk space over time.

The `snapshot.rkt` program creates the snapshots.

## Testing Changes

The code relies on [Docker] so you'll need a system that supports it.

To run a full build, you can invoke

./test.sh

in the root of the repository.

To run a build for a subset of packages, you can invoke `test.sh` with
whichever packages you want to build:

./test.sh component component-lib component-doc

## License

racksnaps is licensed under the 3-Clause BSD license.

[Racket Package Catalog]: https://pkgs.racket-lang.org/
[Docker]: https://www.docker.com/