Skip to content

Complete support for monorepos / subdir key and non-GitHub locations #750

@thomashoneyman

Description

@thomashoneyman

The registry is designed to be free of dependency on GitHub directly, and to support multiple packages stored in one location. However, we've explicitly disabled this behavior for now:

Git _ -> do
-- TODO: Support non-GitHub packages. Remember subdir when doing so. (See #15)
Except.throw GitHubOnly
GitHub { owner, repo, subdir } -> do
-- TODO: Support subdir. In the meantime, we verify subdir is not present. (See #16)
when (isJust subdir) $ Except.throw NoSubdir
case pursPublishMethod of
-- This needs to be removed so that we can support non-GitHub packages (#15)
-- and monorepo packages (#16).
--
-- However, the PureScript compiler requires packages to be a Git repo
-- with a tag checked out. Until we can replace using the compiler's
-- 'publish' command for docs we have to use this hacky checkout.
LegacyPursPublish -> do

The reason we've disabled the behavior is for legacy support. There are two forms: legacy package sets and Pursuit.

Legacy Package Sets
We produce legacy package sets, which are packages.dhall files, for the legacy Spago package manager. If I remember correctly, this bakes in the assumption sources are available under src for each GitHub URL. I believe we will have to stop producing legacy package sets when we accept non-GitHub packages and support monorepos. That won't be possible to do until these are complete:

These two jobs will be very fast to do since it's just disabling behavior; while we wait until August 1, 2026 to disable this behavior we could turn to the other issue, which is Pursuit.

Pursuit (Docs)
The compiler itself expects a directory with a SemVer-appropriate Git tag checked out a clean workdir for purs publish (necessary to run to produce docs for Pursuit. I added a carveout for publishing with a purs.json file but there's potential we still have to do other things in the compiler unless we're bypassing purs publish altogether.

On the Pursuit side we have a number of exisitng issues about how Pursuit has no support for mono / polyrepos and bakes in plenty of assumptions about packages being on GitHub. For instance:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions