SvEx.Plugin.MixChanges (SvEx v0.4.2)

Reads what a raw working project changed in mix.exs (SDD R1, D10).

Structural, not textual: a line diff cannot tell a new dependency from a reflowed one, and D10 restricts a plugin's deps: to target-facing dependencies, so each construct is read from the AST rather than from the shape of the file.

Every parse is delegated to SvEx.Source.MixExs, so the capture side and the apply side cannot disagree about what a deps list looks like. They did: measured, the reader matched two of the four shapes mix accepts and the writer matched one, and each reported success on the shapes it could not handle.

Renamed from SvEx.Plugin.Deps. The question widened from "which dependencies?" to "which dependencies, aliases and project keys?", and a module called Deps answering all three would be a name that lies.

Summary

Functions

What meta_source declares that baseline_source does not.

Types

t()

@type t() :: %{deps: [binary()], aliases: keyword(), project: keyword()}

Functions

added(baseline_source, meta_source)

@spec added(binary(), binary()) :: t()

What meta_source declares that baseline_source does not.

Aliases and project keys whose VALUE changed are reported alongside new keys: a plugin that rewrites setup: is contributing that rewrite, and it has no representation if only additions count.