for path <- :code.get_path(), Regex.match?(~r/needle_new-[\w\.\-]+\/ebin$/, List.to_string(path)) do Code.delete_path(path) end defmodule Needle.New.MixProject do use Mix.Project @version "0.1.3" @description """ An opinionated project generator for Phoenix. Provides `mix needle.new.*` tasks to bootstrap new Phoenix projects. """ @source_url "https://github.com/c4710n/needle" @elixir_requirement "~> 1.14" def project do [ app: :needle_new, version: @version, elixir: @elixir_requirement, start_permanent: Mix.env() == :prod, deps: deps(), description: @description, source_url: @source_url, homepage_url: @source_url, docs: docs(), package: package(), aliases: aliases() ] end def application do [ extra_applications: [:eex, :crypto] ] end def deps do [ {:ex_doc, "~> 0.31", only: :dev, runtime: false} ] end defp docs do [ source_url_pattern: "#{@source_url}/blob/v#{@version}/installer/%{path}#L%{line}" ] end defp package do [ licenses: ["Apache-2.0"], links: %{"GitHub" => @source_url}, files: ~w(lib templates mix.exs README.md) ] end defp aliases do [publish: ["hex.publish", "tag"], tag: &tag_release/1] end defp tag_release(_) do Mix.shell().info("Tagging release as v#{@version}") System.cmd("git", ["tag", "v#{@version}"]) System.cmd("git", ["push", "--tags"]) end end