Explicit filesystem and Mix context for the target project.
@type t() :: %Pi.Project.Context{ app: atom() | nil, build_path: Path.t(), mix_env: String.t(), mix_file: Path.t(), root: Path.t(), source: :explicit | :target_env | :cwd }
@spec command(t(), String.t(), [String.t()], keyword()) :: {String.t(), non_neg_integer()}
@spec current(keyword()) :: t()
@spec mix_project?(t()) :: boolean()
@spec relative(t(), Path.t()) :: Path.t()
@spec resolve(t(), Path.t()) :: Path.t()