View Source Uniform.App (Uniform v0.6.0)

A struct representing an app to be ejected. See the type definition for more details.

where-it-s-availabile

Where it's availabile

An app struct is available in the Blueprint in these callbacks and macros:

Use the app to make decisions about what to eject or how files should be modified.

checking-for-dependencies

Checking for dependencies

In the callbacks and macros above, you can use depends_on? to determine whether an app depends on a mix or lib dependency.

depends_on?(app, :mix, :norm)

See depends_on?/3 for more information.

Link to this section Summary

Types

t()

An App struct, representing a discrete, self-contained app to be ejected.

Functions

Indicates if an app requires a given dependency.

Link to this section Types

@type t() :: %Uniform.App{
  destination: Path.t(),
  extra: keyword(),
  internal: term(),
  name: %{
    module: module(),
    hyphen: String.t(),
    underscore: String.t(),
    camel: String.t()
  }
}

An App struct, representing a discrete, self-contained app to be ejected.

example

Example

Note that the extra key contains everything you put in extra in uniform.exs for the given app. It also contains anything returned by Uniform.Blueprint.extra/1. (uniform.exs has precedence for conflicting keys.)

#Uniform.App<
  extra: [
    company: :fake_co,
    logo_file: "path/to/some_logo.png",
    some_data: "from uniform.exs"
  ],
  name: %{
    camel: "Tweeter",
    hyphen: "tweeter",
    module: Tweeter,
    underscore: "tweeter"
  },
  ...
>

Link to this section Functions

Link to this function

depends_on?(app, category, dep_name)

View Source
@spec depends_on?(app :: t(), category :: :lib | :mix, dep_name :: atom()) ::
  boolean()

Indicates if an app requires a given dependency.

Pass in the app, the dependency type (either :lib or :mix), and the name of the dependency (like :tesla or :my_lib_directory) and the function will return true if the dependency will be ejected along with the app.

examples

Examples

depends_on?(app, :mix, :some_included_mix_dep)
depends_on?(app, :mix, :not_included_dep)
depends_on?(app, :lib, :some_included_lib)

examples-in-context

Examples in Context

base_files do
  if depends_on?(app, :mix, :some_hex_dependency) do
    file "file_needed_by_some_hex_dependency"
  end
end

modify ~r/^test/.+_(test).exs/, fn file, app ->
  if depends_on?(app, :lib, :my_data_lib) do
    file
  else
    String.replace(
      file,
      "use Oban.Testing, repo: MyDataLib.Repo",
      "use Oban.Testing, repo: OtherDataLib.Repo"
    )
  end
end