defmodule ReqClient.MixProject do use Mix.Project @version "0.1.15" @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