Current section
Files
Jump to
Current section
Files
req_client
mix.exs
mix.exs
defmodule ReqClient.MixProject do
use Mix.Project
@version "0.1.9"
@source_url "https://github.com/cao7113/req_client"
def project do
[
app: :req_client,
version: @version,
elixir: "~> 1.19",
start_permanent: Mix.env() == :prod,
# deps: deps()
deps: env_deps(Mix.env()),
description: "Req client",
escript: escript(),
# for hex package
source_url: @source_url,
homepage_url: @source_url,
package: package()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
# now used as a library only, no applcation started!
# mod: {ReqClient.Application, []}
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
# {:ehelper, "~> 0.2", optional: true},
{:git_ops, "~> 2.0", only: [:dev], runtime: false},
{:igniter, "~> 0.7", only: [:dev, :test]},
{:plug, "~> 1.0", optional: true, only: :test},
{:mint, "~> 1.7", local_linking: true},
{:mint_web_socket, "~> 1.0"},
{:finch, "~> 0.20", local_linking: true},
{:req, "~> 0.5", local_linking: true},
{:ex_doc, ">= 0.0.0", only: :dev, runtime: false}
]
end
# hex package metadata as
# https://hex.pm/docs/publish#adding-metadata-to-code-classinlinemixexscode
def package do
[
# name: "req_client",
links: %{
"GitHub" => @source_url,
"Docs" => "https://hexdocs.pm/req_client"
},
files: ["lib", "mix.exs", "mix.lock", "README.md"],
licenses: ["Apache-2.0"],
maintainers: ["cao7113"]
]
end
# Escript config: https://hexdocs.pm/mix/Mix.Tasks.Escript.Build.html
def escript() do
[
main_module: ReqClient.CLI,
app: nil,
name: :req_client,
path: escript_path(Mix.env()),
comment: "cli with escript"
]
end
# def escript_path(:dev), do: "_build/req_client"
def escript_path(_), do: nil
## Support deps local-linking, generated by task: mix h.local.link at 2025-12-21 00:07:38.984093Z
# def env_deps(:prod), do: deps() |> prune_local_linking()
def env_deps(_), do: deps_with_linking_path()
def raw_deps, do: deps()
def deps_with_linking_path(deps \\ deps()) do
# Mix.Local.append_archives()
# :code.get_path() |> Enum.sort();
Mix.DepLink
|> Code.ensure_loaded()
|> case do
{:module, _} ->
deps
|> Mix.DepLink.deps_with_local_linking()
{:error, reason} ->
if Mix.env() in [:dev] do
Mix.shell().info(
"No Mix.DepLink : #{reason |> inspect}, run: mix archive.install hex ehelper"
)
end
deps |> prune_local_linking()
end
end
def prune_local_linking(deps \\ deps()) do
deps
|> Enum.map(fn
{app, v, opts} when is_list(opts) ->
{app, v, opts |> Keyword.delete(:local_linking)}
{app, opts} when is_list(opts) ->
{app, opts |> Keyword.delete(:local_linking)}
item ->
item
end)
end
end