mirror of
https://github.com/pnpm/pnpm.git
synced 2026-05-30 19:46:44 -04:00
Lands the pieces of the npm registry protocol that pnpm-registry was missing, and switches the TypeScript test harness off verdaccio onto pnpm-registry. `@pnpm/registry-mock` (the npm package) is untouched. ### Server-side additions (`registry/crates/pnpm-registry`) - `PUT /-/user/org.couchdb.user:<name>` — adduser / login, returns a Bearer token. In-memory user + token stores. - `PUT /:pkg` — publish (scoped + unscoped). Base64-decodes `_attachments`, merges into the existing packument, writes manifest + tarball atomically. 100 MiB body limit. - `GET /-/package/:pkg/dist-tags` + `PUT/DELETE /-/package/:pkg/dist-tags/:tag` — rewrites the on-disk packument so tag changes survive a restart. - `Authorization: Bearer` and `Authorization: Basic` both identify the caller. - Per-package access policy (wax glob patterns). Defaults mirror `@pnpm/registry-mock`'s `config.yaml`: `@private/*` and `@pnpm.e2e/needs-auth` require auth; everything else is anonymous read, authenticated write. Enforced on every packument / version-manifest / tarball GET and every write endpoint. ### TypeScript-test migration - `__utils__/jest-config/with-registry/globalSetup.js` keeps `prepare()` from `@pnpm/registry-mock` (still needed for the tempy storage path written into the runtime-config yaml — `getIntegrity` reads it from there) but spawns `pnpm-registry` instead of verdaccio. `addUser`, `addDistTag`, `getIntegrity`, `REGISTRY_MOCK_*` from registry-mock work as-is — they're plain npm-wire-protocol HTTP calls. - Binary lookup follows pacquet's pattern: `PNPM_REGISTRY_BIN` env override, then `target/release/pnpm-registry`, then `target/debug/pnpm-registry`. - CI test job (`.github/workflows/test.yml`) installs the Rust toolchain via the existing `./.github/actions/rustup` composite action and builds `pnpm-registry --release` before tests run. Per-platform — Linux and Windows in the matrix each build their own.
85 lines
2.0 KiB
YAML
85 lines
2.0 KiB
YAML
name: Rustup
|
|
|
|
description: Install Rust with minimal profile and additional components
|
|
|
|
inputs:
|
|
# See https://rust-lang.github.io/rustup/concepts/components.html
|
|
clippy:
|
|
default: false
|
|
required: false
|
|
fmt:
|
|
default: false
|
|
required: false
|
|
docs:
|
|
default: false
|
|
required: false
|
|
restore-cache:
|
|
default: true
|
|
required: false
|
|
save-cache:
|
|
default: false
|
|
required: false
|
|
shared-key:
|
|
default: 'warm'
|
|
required: false
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Print Inputs
|
|
shell: bash
|
|
env:
|
|
CLIPPY: ${{ inputs.clippy }}
|
|
FMT: ${{ inputs.fmt }}
|
|
DOCS: ${{ inputs.docs }}
|
|
RESTORE_CACHE: ${{ inputs.restore-cache }}
|
|
SAVE_CACHE: ${{ inputs.save-cache }}
|
|
run: |
|
|
echo "clippy: $CLIPPY"
|
|
echo "fmt: $FMT"
|
|
echo "docs: $DOCS"
|
|
echo "restore-cache: $RESTORE_CACHE"
|
|
echo "save-cache: $SAVE_CACHE"
|
|
|
|
- name: Remove `profile` line on MacOS
|
|
shell: bash
|
|
if: runner.os == 'macOS'
|
|
run: sed -i '' '/profile/d' rust-toolchain.toml
|
|
|
|
- name: Remove `profile` line on non-MacOS
|
|
shell: bash
|
|
if: runner.os != 'macOS'
|
|
run: sed -i '/profile/d' rust-toolchain.toml
|
|
|
|
- name: Set minimal
|
|
shell: bash
|
|
run: rustup set profile minimal
|
|
|
|
- name: Add Clippy
|
|
shell: bash
|
|
if: ${{ inputs.clippy == 'true' }}
|
|
run: rustup component add clippy
|
|
|
|
- name: Add Rustfmt
|
|
shell: bash
|
|
if: ${{ inputs.fmt == 'true' }}
|
|
run: rustup component add rustfmt
|
|
|
|
- name: Add docs
|
|
shell: bash
|
|
if: ${{ inputs.docs == 'true' }}
|
|
run: rustup component add rust-docs
|
|
|
|
- name: Install
|
|
shell: bash
|
|
run: |
|
|
rustup show
|
|
git restore .
|
|
|
|
- name: Cache on ${{ github.ref_name }}
|
|
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
|
|
if: ${{ inputs.restore-cache == 'true' }}
|
|
with:
|
|
shared-key: ${{ inputs.shared-key }}
|
|
save-if: ${{ inputs.save-cache == 'true' }}
|