Gamend.Repo.MigrationPaths (gamend_core v1.0.1192)

Copy Markdown View Source

Resolves every migration directory that belongs to a gamend deployment.

A host application (the umbrella's gamend_host, or a downstream game) runs core migrations plus its own, and core can be present either as an umbrella app or as a dependency. Anything that walks migrations — the host.* mix tasks, Gamend.Release, the admin runtime page — must consider the same set, so the list lives here rather than being copied per caller.

Mix and releases locate that set differently, so all/1 picks one strategy or the other rather than merging them: under Mix the directories are paths in the project tree, in a release they live inside each application's own lib/<app>-<vsn>/priv. Returning both would hand Ecto the same migration file under two names, and duplicate versions are a hard error.

Summary

Functions

Existing migration directories, absolute and de-duplicated.

The paths as --migrations-path <dir> arguments for the Ecto mix tasks.

Functions

all(opts \\ [])

@spec all(keyword()) :: [String.t()]

Existing migration directories, absolute and de-duplicated.

Pass ensure_host: true (the mix tasks do) to create the host's own priv/repo/migrations first, so Ecto does not fail on a missing path in a project that has not written a migration yet.

as_args(opts \\ [])

@spec as_args(keyword()) :: [String.t()]

The paths as --migrations-path <dir> arguments for the Ecto mix tasks.