Packages

Provides `mix needle.new.*` tasks to bootstrap new Phoenix projects.

Current section

Files

Jump to
needle_new mix.exs
Raw

mix.exs

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