A human-friendly DSL for ATProto Lexicons
27
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add mlf publish command + mlf-publish crate #16

open opened by stavola.xyz targeting main from feat/publishing

New pure-logic crate mlf-publish with four modules:

  • breaking: detect removed fields, changed types, optionalβ†’required transitions, and removed defs between the remote record and the local one. Matches indigo/lexlint's rules.
  • validate: meta-schema check (is this a structurally-valid com.atproto.lexicon.schema record?) and scope check (is every local NSID under [package].name?). Both return Vec.
  • manifest: build the lol.mlf.package record with sorted published/resolvedDependencies arrays + publishedAt/tool provenance. The record's own CID (computed by the PDS on putRecord) is the durable identifier for this publish event.
  • plan: compute the minimal action set (Put/Update/Delete) from local vs remote CID maps, ignoring remote records outside the package's scope.

MlfConfig gains a [publish] section: enabled (default true), dns plugin name (required when publishing), manifest toggle (default true), and a breaking_changes policy (deny/warn/allow, default deny).

mlf-cli grows a publish command that wires everything together: loads workspace + remote state (from R3), runs validators, computes the plan, optionally stops on --dry-run, reconciles DNS via the configured plugin (creating missing TXT records, refusing to overwrite mismatched ones without --force), authenticates against the PDS, and applies the actions. --non-interactive fails rather than prompting; --force overrides breaking-change aborts and DNS mismatches. Ephemeral --pds- / --dns-- overrides let CI publish in one shot without a login step.

Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:tahmjtpwnkuhopngqe5q7jp2/sh.tangled.repo.pull/3mjqnd22zbu22
Diff #0

No differences found between the selected revisions.

History

1 round 0 comments
sign up or login to add to the discussion
stavola.xyz submitted #0
patch application failed: error: No valid patches in input (allow with "--allow-empty")
expand 0 comments