First argument to defrecord doesn't need to be an orddict.

defmodule Record do
  # Main entry point for records definition.
  def defrecord(name, values, opts) do
    block    = Orddict.get(opts, :do)
    as       = Orddict.get(opts, :as, true)
    extensor = Orddict.get(opts, :extensor, Record::Extensor)

    quote do
      defmodule unquote(name) do
        require ::Record
        Record.getters_and_setters(unquote(values), 1, [], unquote(extensor))
        Record.initializers(unquote(values))
        unquote(block)
      end

      require unquote(name), as: unquote(as)
    end
  end

  # Define initializers methods. For a declaration like:
  #
  #     defrecord FileInfo, atime: nil, mtime: nil
  #
  # It will define three methods:
  #
  #     def new() do
  #       new([])
  #     end
  #
  #     def new([]) do
  #       { FileInfo, nil, nil }
  #     end
  #
  #     def new(opts) do
  #       { FileInfo, Orddict.get(opts, :atime), Orddict.get(opts, :mtime) }
  #     end
  #
  defmacro initializers(values) do
    defaults = Enum.map values, elem(_, 2)

    # For each value, define a piece of code that will receive
    # an ordered dict of options (opts) and it will try to fetch
    # the given key from the ordered dict, falling back to the
    # default value if one does not exist.
    selective = Enum.map values, fn({k,v}) {
      quote { ::Orddict.get(opts, unquote(k), unquote(v)) }
    }

    quote do
      def new(), do: new([])
      def new([]), do: { __MODULE__, unquote_splicing(defaults) }
      def new(opts), do: { __MODULE__, unquote_splicing(selective) }
    end
  end

  # Implement getters and setters for each attribute.
  # For a declaration like:
  #
  #     defrecord FileInfo, atime: nil, mtime: nil
  #
  # It will define four methods:
  #
  #     def :atime.(record) do
  #       element(2, record)
  #     end
  #
  #     def :atime.(record, value) do
  #       setelement(2, value, record)
  #     end
  #
  #     def :mtime.(record) do
  #       element(3, record)
  #     end
  #
  #     def :mtime.(record, value) do
  #       setelement(3, value, record)
  #     end
  #
  # `element` and `setelement` will simply get and set values
  # from the record tuple. Notice that `:atime.(record)` is just
  # a dynamic way to say `atime(record)`. We need to use this
  # syntax as `unquote(key)(record)` wouldn't be valid (as Elixir
  # allows you to parenthesis just on specific cases as `foo()`
  # and `foo.bar()`)
  defmacro getters_and_setters([{ key, default }|t], i, acc, extensor) do
    i = i + 1

    contents = quote do
      def unquote(key).(record) do
        element(unquote(i), record)
      end

      def unquote(key).(value, record) do
        setelement(unquote(i), record, value)
      end
    end

    typed = extensor.extension_for(key, default, i)
    getters_and_setters(t, i, [contents, typed | acc], extensor)
  end

  defmacro getters_and_setters([], _i, acc, _), do: acc
end

# Provides default extensions for a regular record.
# It adds append_, prepend_ and merge_ helpers for lists
# and increment_ for numbers.
defmodule Record::Extensor do
  def extension_for(key, default, i) when is_list(default) do
    bin_key = atom_to_binary(key, :utf8)
    append  = :"append_#{bin_key}"
    prepend = :"prepend_#{bin_key}"
    merge   = :"merge_#{bin_key}"

    quote do
      def unquote(append).(value, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, List.append(current, value))
      end

      def unquote(prepend).(value, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, List.append(value, current))
      end

      def unquote(merge).(value, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, Orddict.merge(current, value))
      end
    end
  end

  def extension_for(key, default, i) when is_number(default) do
    bin_key   = atom_to_binary(key, :utf8)
    increment = :"increment_#{bin_key}"

    quote do
      def unquote(increment).(value // 1, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, current + value)
      end
    end
  end

  def extension_for(_, _, _), do: nil
end

defmodule Record do
  # Main entry point for records definition.
  def defrecord(name, values, opts) do
    as       = Orddict.get(opts, :as, true)
    extensor = Orddict.get(opts, :extensor, Record::Extensor)

    quote do
      defmodule unquote(name) do
        require ::Record
        Record.getters_and_setters(unquote(values), 1, [], unquote(extensor))
        Record.initializers(unquote(values))
      end

      require unquote(name), as: unquote(as)
    end
  end

  # Define initializers methods. For a declaration like:
  #
  #     defrecord FileInfo, atime: nil, mtime: nil
  #
  # It will define three methods:
  #
  #     def new() do
  #       new([])
  #     end
  #
  #     def new([]) do
  #       { FileInfo, nil, nil }
  #     end
  #
  #     def new(opts) do
  #       { FileInfo, Orddict.get(opts, :atime), Orddict.get(opts, :mtime) }
  #     end
  #
  defmacro initializers(values) do
    # Get default values from the dictionary.
    defaults = Orddict.values(values)

    # For each value, define a piece of code that will receive
    # an ordered dict of options (opts) and it will try to fetch
    # the given key from the ordered dict, falling back to the
    # default value if one does not exist.
    selective = Enum.map values, fn({k,v}) {
      quote { ::Orddict.get(opts, unquote(k), unquote(v)) }
    }

    quote do
      def new(), do: new([])
      def new([]), do: { __MODULE__, unquote_splicing(defaults) }
      def new(opts), do: { __MODULE__, unquote_splicing(selective) }
    end
  end

  # Implement getters and setters for each attribute.
  # For a declaration like:
  #
  #     defrecord FileInfo, atime: nil, mtime: nil
  #
  # It will define four methods:
  #
  #     def :atime.(record) do
  #       element(2, record)
  #     end
  #
  #     def :atime.(record, value) do
  #       setelement(2, value, record)
  #     end
  #
  #     def :mtime.(record) do
  #       element(3, record)
  #     end
  #
  #     def :mtime.(record, value) do
  #       setelement(3, value, record)
  #     end
  #
  # `element` and `setelement` will simply get and set values
  # from the record tuple. Notice that `:atime.(record)` is just
  # a dynamic way to say `atime(record)`. We need to use this
  # syntax as `unquote(key)(record)` wouldn't be valid (as Elixir
  # allows you to parenthesis just on specific cases as `foo()`
  # and `foo.bar()`)
  defmacro getters_and_setters([{ key, default }|t], i, acc, extensor) do
    i = i + 1

    contents = quote do
      def unquote(key).(record) do
        element(unquote(i), record)
      end

      def unquote(key).(value, record) do
        setelement(unquote(i), record, value)
      end
    end

    typed = extensor.extension_for(key, default, i)
    getters_and_setters(t, i, [contents, typed | acc], extensor)
  end

  defmacro getters_and_setters([], _i, acc, _), do: acc
end

# Provides default extensions for a regular record.
# It adds append_, prepend_ and merge_ helpers for lists
# and increment_ for numbers.
defmodule Record::Extensor do
  def extension_for(key, default, i) when is_list(default) do
    bin_key = atom_to_binary(key, :utf8)
    append  = :"append_#{bin_key}"
    prepend = :"prepend_#{bin_key}"
    merge   = :"merge_#{bin_key}"

    quote do
      def unquote(append).(value, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, List.append(current, value))
      end

      def unquote(prepend).(value, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, List.append(value, current))
      end

      def unquote(merge).(value, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, Orddict.merge(current, value))
      end
    end
  end

  def extension_for(key, default, i) when is_number(default) do
    bin_key   = atom_to_binary(key, :utf8)
    increment = :"increment_#{bin_key}"

    quote do
      def unquote(increment).(value // 1, record) do
        current = element(unquote(i), record)
        setelement(unquote(i), record, current + value)
      end
    end
  end

  def extension_for(_, _, _), do: nil
end


Add phoenix to :dev dependencies

Add phoenix to :dev dependencies

ExDoc runs in the :dev environment, and the `Appsignal.Phoenix` modules
are not defined when Phoenix isn't loaded. This caused the documentation
for these modules to be missing from the documentation.

unless Code.ensure_loaded?(Appsignal.Agent) do
  {_, _} = Code.eval_file("agent.ex")
end

defmodule Mix.Tasks.Compile.Appsignal do
  use Mix.Task

  def run(_args) do
    {_, _} = Code.eval_file("mix_helpers.exs")

    case Mix.Appsignal.Helper.verify_system_architecture() do
      {:ok, arch} ->
        :ok = Mix.Appsignal.Helper.ensure_downloaded(arch)
        :ok = Mix.Appsignal.Helper.compile
      {:error, {:unsupported, arch}} ->
        Mix.Shell.IO.error(
          "Unsupported target platform #{arch}, AppSignal integration " <>
          "disabled!\nPlease check " <>
          "http://docs.appsignal.com/support/operating-systems.html"
        )
        :ok
    end
  end
end

defmodule Appsignal.Mixfile do
  use Mix.Project
  @agent_version Appsignal.Agent.version

  def project do
    [app: :appsignal,
     version: "1.2.0",
     name: "AppSignal",
     description: description(),
     package: package(),
     source_url: "https://github.com/appsignal/appsignal-elixir",
     homepage_url: "https://appsignal.com",
     test_paths: test_paths(Mix.env),
     elixir: "~> 1.0",
     compilers: compilers(Mix.env),
     elixirc_paths: elixirc_paths(Mix.env),
     deps: deps(),
     docs: [logo: "logo.png"],
     agent_version: @agent_version
    ]
  end

  defp description do
    "Collects error and performance data from your Elixir applications and sends it to AppSignal"
  end

  defp package do
    %{files: ["lib", "c_src/*.[ch]", "mix.exs", "mix_helpers.exs",
              "*.md", "LICENSE", "Makefile", "agent.ex"],
      maintainers: ["Arjan Scherpenisse", "Jeff Kreeftmeijer", "Tom de Bruijn"],
      licenses: ["MIT"],
      links: %{"GitHub" => "https://github.com/appsignal/appsignal-elixir"}}
  end

  def application do
    [mod: {Appsignal, []},
     applications: [:logger, :decorator, :httpoison]]
  end

  defp compilers(:test_phoenix), do: [:phoenix] ++ compilers(:prod)
  defp compilers(_), do: [:appsignal] ++ Mix.compilers

  defp test_paths(:test_phoenix), do: ["test/appsignal", "test/mix", "test/phoenix"]
  defp test_paths(_), do: ["test/appsignal", "test/mix"]

  defp elixirc_paths(env) do
    case test?(env) do
      true -> ["lib", "test/support"]
      false -> ["lib"]
    end
  end

  defp test?(:test), do: true
  defp test?(:test_phoenix), do: true
  defp test?(:test_no_nif), do: true
  defp test?(_), do: false

  defp deps do
    [
      {:httpoison, "~> 0.11"},
      {:decorator, "~> 1.0"},
      {:phoenix, ">= 1.2.0", optional: true, only: [:prod, :test_phoenix, :dev]},
      {:mock, "~> 0.2.1", only: [:test, :test_phoenix, :test_no_nif]},
      {:bypass, "~> 0.5", only: [:test, :test_phoenix, :test_no_nif]},
      {:ex_doc, "~> 0.12", only: :dev, runtime: false}
    ]
  end
end

unless Code.ensure_loaded?(Appsignal.Agent) do
  {_, _} = Code.eval_file("agent.ex")
end

defmodule Mix.Tasks.Compile.Appsignal do
  use Mix.Task

  def run(_args) do
    {_, _} = Code.eval_file("mix_helpers.exs")

    case Mix.Appsignal.Helper.verify_system_architecture() do
      {:ok, arch} ->
        :ok = Mix.Appsignal.Helper.ensure_downloaded(arch)
        :ok = Mix.Appsignal.Helper.compile
      {:error, {:unsupported, arch}} ->
        Mix.Shell.IO.error(
          "Unsupported target platform #{arch}, AppSignal integration " <>
          "disabled!\nPlease check " <>
          "http://docs.appsignal.com/support/operating-systems.html"
        )
        :ok
    end
  end
end

defmodule Appsignal.Mixfile do
  use Mix.Project
  @agent_version Appsignal.Agent.version

  def project do
    [app: :appsignal,
     version: "1.2.0",
     name: "AppSignal",
     description: description(),
     package: package(),
     source_url: "https://github.com/appsignal/appsignal-elixir",
     homepage_url: "https://appsignal.com",
     test_paths: test_paths(Mix.env),
     elixir: "~> 1.0",
     compilers: compilers(Mix.env),
     elixirc_paths: elixirc_paths(Mix.env),
     deps: deps(),
     docs: [logo: "logo.png"],
     agent_version: @agent_version
    ]
  end

  defp description do
    "Collects error and performance data from your Elixir applications and sends it to AppSignal"
  end

  defp package do
    %{files: ["lib", "c_src/*.[ch]", "mix.exs", "mix_helpers.exs",
              "*.md", "LICENSE", "Makefile", "agent.ex"],
      maintainers: ["Arjan Scherpenisse", "Jeff Kreeftmeijer", "Tom de Bruijn"],
      licenses: ["MIT"],
      links: %{"GitHub" => "https://github.com/appsignal/appsignal-elixir"}}
  end

  def application do
    [mod: {Appsignal, []},
     applications: [:logger, :decorator, :httpoison]]
  end

  defp compilers(:test_phoenix), do: [:phoenix] ++ compilers(:prod)
  defp compilers(_), do: [:appsignal] ++ Mix.compilers

  defp test_paths(:test_phoenix), do: ["test/appsignal", "test/mix", "test/phoenix"]
  defp test_paths(_), do: ["test/appsignal", "test/mix"]

  defp elixirc_paths(env) do
    case test?(env) do
      true -> ["lib", "test/support"]
      false -> ["lib"]
    end
  end

  defp test?(:test), do: true
  defp test?(:test_phoenix), do: true
  defp test?(:test_no_nif), do: true
  defp test?(_), do: false

  defp deps do
    [
      {:httpoison, "~> 0.11"},
      {:decorator, "~> 1.0"},
      {:phoenix, ">= 1.2.0", optional: true, only: [:prod, :test_phoenix]},
      {:mock, "~> 0.2.1", only: [:test, :test_phoenix, :test_no_nif]},
      {:bypass, "~> 0.5", only: [:test, :test_phoenix, :test_no_nif]},
      {:ex_doc, "~> 0.12", only: :dev, runtime: false}
    ]
  end
end


Setting postgrex as an optional dependency

defmodule GuardianDb.Mixfile do
  use Mix.Project

  @version "0.4.0"

  def project do
    [app: :guardian_db,
     version: @version,
     description: "DB tracking for token validity",
     elixir: "~> 1.1",
     elixirc_paths: _elixirc_paths(Mix.env),
     package: package,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     preferred_cli_env: [guardian_db: :test],
     deps: deps]
  end

  def application do
    [applications: _applications(Mix.env)]
  end

  defp _applications(:test), do: [:postgrex, :ecto, :logger]
  defp _applications(_), do: [:logger]

  defp _elixirc_paths(:test), do: ["lib", "test/support"]
  defp _elixirc_paths(_), do: ["lib"]

  defp deps do
    [{:guardian, "~>0.9.0"},
     {:ecto, ">= 0.11.0"},
     {:postgrex, ">= 0.9.1", optional: true},
     {:ex_doc, "~> 0.8", only: :docs},
     {:earmark, ">= 0.0.0", only: :docs}]
  end

  defp package do
    [
      maintainers: ["Daniel Neighman"],
      licenses: ["MIT"],
      links: %{github: "https://github.com/hassox/guardian_db"},
      files: ~w(lib) ++ ~w(CHANGELOG.md LICENSE mix.exs README.md)
    ]
  end
end

defmodule GuardianDb.Mixfile do
  use Mix.Project

  @version "0.4.0"

  def project do
    [app: :guardian_db,
     version: @version,
     description: "DB tracking for token validity",
     elixir: "~> 1.1",
     elixirc_paths: _elixirc_paths(Mix.env),
     package: package,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     preferred_cli_env: [guardian_db: :test],
     deps: deps]
  end

  def application do
    [applications: _applications(Mix.env)]
  end

  defp _applications(:test), do: [:postgrex, :ecto, :logger]
  defp _applications(_), do: [:logger]

  defp _elixirc_paths(:test), do: ["lib", "test/support"]
  defp _elixirc_paths(_), do: ["lib"]

  defp deps do
    [{:guardian, "~>0.9.0"},
     {:ecto, ">= 0.11.0"},
     {:postgrex, ">= 0.9.1"},
     {:ex_doc, "~> 0.8", only: :docs},
     {:earmark, ">= 0.0.0", only: :docs}]
  end

  defp package do
    [
      maintainers: ["Daniel Neighman"],
      licenses: ["MIT"],
      links: %{github: "https://github.com/hassox/guardian_db"},
      files: ~w(lib) ++ ~w(CHANGELOG.md LICENSE mix.exs README.md)
    ]
  end
end


Version 1.3.5

Version 1.3.5

defmodule Distillery.Mixfile do
  use Mix.Project

  def project do
    [app: :distillery,
     version: "1.3.5",
     elixir: "~> 1.3",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps(),
     description: description(),
     package: package(),
     docs: docs(),
     aliases: aliases(),
     test_coverage: [tool: ExCoveralls]]
  end

  def application, do: [applications: []]

  defp deps do
    [{:ex_doc, "~> 0.13", only: [:dev]},
     {:excoveralls, "~> 0.6", only: [:dev, :test]},
     {:credo, "~> 0.6", only: [:dev]},
     {:dialyze, "~> 0.2", only: [:dev]}]
  end

  defp description do
    """
    Build releases of your Mix projects with ease!
    """
  end
  defp package do
    [ files: ["lib", "priv", "mix.exs", "README.md", "LICENSE.md"],
      maintainers: ["Paul Schoenfelder"],
      licenses: ["MIT"],
      links: %{"Github": "https://github.com/bitwalker/distillery"}]
  end
  defp aliases do
    ["compile-check": "do compile, credo --strict"]
  end
  defp docs do
    [main: "getting-started",
     extras: [
       "docs/Getting Started.md",
       "docs/CLI.md",
       "docs/Configuration.md",
       "docs/Runtime Configuration.md",
       "docs/Walkthrough.md",
       "docs/Use With Phoenix.md",
       "docs/Phoenix Walkthrough.md",
       "docs/Running Migrations.md",
       "docs/Upgrades and Downgrades.md",
       "docs/Use With systemd.md",
       "docs/Common Issues.md",
       "docs/Umbrella Projects.md",
       "docs/Overlays.md",
       "docs/Plugins.md",
       "docs/Boot Hooks.md",
       "docs/Custom Commands.md",
       "docs/Shell Script API.md",
       "docs/Terminology.md"
     ]]
  end
end

defmodule Distillery.Mixfile do
  use Mix.Project

  def project do
    [app: :distillery,
     version: "1.3.4",
     elixir: "~> 1.3",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps(),
     description: description(),
     package: package(),
     docs: docs(),
     aliases: aliases(),
     test_coverage: [tool: ExCoveralls]]
  end

  def application, do: [applications: []]

  defp deps do
    [{:ex_doc, "~> 0.13", only: [:dev]},
     {:excoveralls, "~> 0.6", only: [:dev, :test]},
     {:credo, "~> 0.6", only: [:dev]},
     {:dialyze, "~> 0.2", only: [:dev]}]
  end

  defp description do
    """
    Build releases of your Mix projects with ease!
    """
  end
  defp package do
    [ files: ["lib", "priv", "mix.exs", "README.md", "LICENSE.md"],
      maintainers: ["Paul Schoenfelder"],
      licenses: ["MIT"],
      links: %{"Github": "https://github.com/bitwalker/distillery"}]
  end
  defp aliases do
    ["compile-check": "do compile, credo --strict"]
  end
  defp docs do
    [main: "getting-started",
     extras: [
       "docs/Getting Started.md",
       "docs/CLI.md",
       "docs/Configuration.md",
       "docs/Runtime Configuration.md",
       "docs/Walkthrough.md",
       "docs/Use With Phoenix.md",
       "docs/Phoenix Walkthrough.md",
       "docs/Running Migrations.md",
       "docs/Upgrades and Downgrades.md",
       "docs/Use With systemd.md",
       "docs/Common Issues.md",
       "docs/Umbrella Projects.md",
       "docs/Overlays.md",
       "docs/Plugins.md",
       "docs/Boot Hooks.md",
       "docs/Custom Commands.md",
       "docs/Shell Script API.md",
       "docs/Terminology.md"
     ]]
  end
end


Add Alexander

Add Alexander

defmodule SlimFast.Mixfile do
  use Mix.Project

  @version "0.4.1"

  def project do
    [app: :slim_fast,
     build_embedded: Mix.env == :prod,
     deps: [],
     description: """
     An Elixir library for rendering slim templates.
     """,
     elixir: "~> 1.0",
     package: package,
     source_url: "https://github.com/doomspork/slim_fast",
     start_permanent: Mix.env == :prod,
     version: @version]
  end

  def package do
    [contributors: ["Sean Callan", "Alexander Stanko"],
     files: ["lib", "mix.exs", "README*", "LICENSE*"],
     licenses: ["MIT"],
     links: %{github: "https://github.com/doomspork/slim_fast"}]
  end
end

defmodule SlimFast.Mixfile do
  use Mix.Project

  @version "0.4.1"

  def project do
    [app: :slim_fast,
     build_embedded: Mix.env == :prod,
     deps: [],
     description: """
     An Elixir library for rendering slim templates.
     """,
     elixir: "~> 1.0",
     package: package,
     source_url: "https://github.com/doomspork/slim_fast",
     start_permanent: Mix.env == :prod,
     version: @version]
  end

  def package do
    [contributors: ["Sean Callan"],
     files: ["lib", "mix.exs", "README*", "LICENSE*"],
     licenses: ["MIT"],
     links: %{github: "https://github.com/doomspork/slim_fast"}]
  end
end


add dependencies to test to have them in CI

defmodule DeepPainting.Mixfile do
  use Mix.Project

  def project do
    [apps_path: "apps",
     apps: [:painting, :gallery, :studio],
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps()]
  end

  # Dependencies can be Hex packages:
  #
  #   {:my_dep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:my_dep, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
  #
  # Type "mix help deps" for more examples and options.
  #
  # Dependencies listed here are available only for this project
  # and cannot be accessed from applications inside the apps folder
  defp deps do
    [
      {:mix_test_watch, "~> 0.3", only: [:dev, :test], runtime: false},
      {:credo, "~> 0.5", only: [:dev, :test], runtime: false},
      {:dialyxir, "~> 0.5", only: [:dev, :test], runtime: false}
    ]
  end
end

defmodule DeepPainting.Mixfile do
  use Mix.Project

  def project do
    [apps_path: "apps",
     apps: [:painting, :gallery, :studio],
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps()]
  end

  # Dependencies can be Hex packages:
  #
  #   {:my_dep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:my_dep, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
  #
  # Type "mix help deps" for more examples and options.
  #
  # Dependencies listed here are available only for this project
  # and cannot be accessed from applications inside the apps folder
  defp deps do
    [
      {:mix_test_watch, "~> 0.3", only: :dev, runtime: false},
      {:credo, "~> 0.5", only: [:dev, :test], runtime: false},
      {:dialyxir, "~> 0.5", only: :dev, runtime: false}
    ]
  end
end


Require ex_doc dependency only for ":docs". (#101)

So that Hex packages earmark_parser, makeup, makeup_elixir, and nimble_parsec aren't pulled in to users of this library.

defmodule PaperTrail.Mixfile do
  use Mix.Project

  def project do
    [
      app: :paper_trail,
      version: "0.8.7",
      elixir: "~> 1.10",
      description: description(),
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      elixirc_paths: elixirc_paths(Mix.env()),
      package: package(),
      deps: deps()
    ]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    [
      applications: [:logger, :ecto, :runtime_tools]
    ]
  end

  defp deps do
    [
      {:ecto, ">= 3.4.0"},
      {:ecto_sql, ">= 3.4.0"},
      {:ex_doc, ">= 0.21.3", only: :docs},
      {:postgrex, ">= 0.0.0", only: [:dev, :test]},
      {:jason, ">= 1.2.0", only: [:dev, :test]}
    ]
  end

  defp description do
    """
    Track and record all the changes in your database. Revert back to anytime in history.
    """
  end

  defp package do
    [
      name: :paper_trail,
      files: ["lib", "mix.exs", "README*", "LICENSE*"],
      maintainers: ["Izel Nakri"],
      licenses: ["MIT License"],
      links: %{
        "GitHub" => "https://github.com/izelnakri/paper_trail",
        "Docs" => "https://hexdocs.pm/paper_trail/PaperTrail.html"
      }
    ]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]
end

defmodule PaperTrail.Mixfile do
  use Mix.Project

  def project do
    [
      app: :paper_trail,
      version: "0.8.7",
      elixir: "~> 1.10",
      description: description(),
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      elixirc_paths: elixirc_paths(Mix.env()),
      package: package(),
      deps: deps()
    ]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    [
      applications: [:logger, :ecto, :runtime_tools]
    ]
  end

  defp deps do
    [
      {:ecto, ">= 3.4.0"},
      {:ecto_sql, ">= 3.4.0"},
      {:ex_doc, ">= 0.21.3"},
      {:postgrex, ">= 0.0.0", only: [:dev, :test]},
      {:jason, ">= 1.2.0", only: [:dev, :test]}
    ]
  end

  defp description do
    """
    Track and record all the changes in your database. Revert back to anytime in history.
    """
  end

  defp package do
    [
      name: :paper_trail,
      files: ["lib", "mix.exs", "README*", "LICENSE*"],
      maintainers: ["Izel Nakri"],
      licenses: ["MIT License"],
      links: %{
        "GitHub" => "https://github.com/izelnakri/paper_trail",
        "Docs" => "https://hexdocs.pm/paper_trail/PaperTrail.html"
      }
    ]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]
end


Added maintainer

Added maintainer

defmodule Elixlsx.Mixfile do
  use Mix.Project

  def project do
    [app: :elixlsx,
     version: "0.0.1",
     elixir: "~> 1.1",
     package: package,
     description: "a writer for XLSX spreadsheet files",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  def application do
    []
  end

  defp deps do
    [
      {:excheck, "~> 0.3", only: :test},
      {:triq, github: "krestenkrab/triq", only: :test},
      {:credo, "~> 0.1.9", only: [:dev, :test]}
    ]
  end

  defp package do
    [
      maintainers: ["Nikolai Weh <niko.weh@gmail.com>"],
      licenses: ["MIT"],
      links: %{"GitHub" => "https://github.com/xou/elixlsx"}
    ]
  end
end

defmodule Elixlsx.Mixfile do
  use Mix.Project

  def project do
    [app: :elixlsx,
     version: "0.0.1",
     elixir: "~> 1.1",
     package: package,
     description: "a writer for XLSX spreadsheet files",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  def application do
    []
  end

  defp deps do
    [
      {:excheck, "~> 0.3", only: :test},
      {:triq, github: "krestenkrab/triq", only: :test},
      {:credo, "~> 0.1.9", only: [:dev, :test]}
    ]
  end

  defp package do
    [
      maintainers: [],
      licenses: ["MIT"],
      links: %{"GitHub" => "https://github.com/xou/elixlsx"}
    ]
  end
end


pull deps from hex

pull deps from hex

defmodule NervesSystemLinkit.Mixfile do
  use Mix.Project

  @version Path.join(__DIR__, "VERSION")
    |> File.read!
    |> String.strip

  def project do
    [app: :nerves_system_linkit,
     version: @version,
     elixir: "~> 1.2",
     compilers: Mix.compilers ++ [:nerves_system],
     description: description,
     package: package,
     deps: deps]
  end

  def application do
    []
  end

  defp deps do
    [{:nerves_system, "~> 0.1.4"},
     {:nerves_system_br, "~> 0.7.0"},
     {:nerves_toolchain_mipsel_unknown_linux_musl, "~> 0.7.0"}]
  end

  defp description do
    """
    Nerves System - LinkIt Smart
    """
  end

  defp package do
    [maintainers: ["Frank Hunleth", "Justin Schneck"],
     files: ["rootfs-additions", "LICENSE", "mix.exs", "nerves_defconfig",
       "nerves.exs", "README.md", "VERSION", "rootfs-additions", "Config.in",
       "external.mk", "package", "post-createfs.sh", "fwup.conf", "linux-4.4",
       "busybox.config", "linux-backports.defconfig"],
     licenses: ["Apache 2.0"],
     links: %{"Github" => "https://github.com/nerves-project/nerves_system_linkit"}]
  end
end

defmodule NervesSystemLinkit.Mixfile do
  use Mix.Project

  @version Path.join(__DIR__, "VERSION")
    |> File.read!
    |> String.strip

  def project do
    [app: :nerves_system_linkit,
     version: @version,
     elixir: "~> 1.2",
     compilers: Mix.compilers ++ [:nerves_system],
     description: description,
     package: package,
     deps: deps]
  end

  def application do
    []
  end

  defp deps do
    [{:nerves_system, "~> 0.1.4"},
      #{:nerves_system_br, "~> 0.6.1"},
      {:nerves_system_br, github: "nerves-project/nerves_system_br", tag: "a21bd9c6b3a907b8cbfdbe43194bf5cd33312607"},
      {:nerves_toolchain_mipsel_unknown_linux_musl,
         github: "nerves-project/toolchains",
         sparse: "nerves_toolchain_mipsel_unknown_linux_musl"},
      {:nerves_toolchain_ctng,
         github: "nerves-project/toolchains",
         sparse: "nerves_toolchain_ctng",
         override: true}
     ]
  end

  defp description do
    """
    Nerves System - LinkIt Smart
    """
  end

  defp package do
    [maintainers: ["Frank Hunleth", "Justin Schneck"],
     files: ["rootfs-additions", "LICENSE", "mix.exs", "nerves_defconfig",
       "nerves.exs", "README.md", "VERSION", "rootfs-additions", "Config.in",
       "external.mk", "package", "post-createfs.sh", "fwup.conf", "linux-4.4",
       "busybox.config", "linux-backports.defconfig"],
     licenses: ["Apache 2.0"],
     links: %{"Github" => "https://github.com/nerves-project/nerves_system_linkit"}]
  end
end


enable the overseer api app

enable the overseer api app

defmodule OpenAperture.Deployer.Mixfile do
  use Mix.Project

  def project do
    [app: :openaperture_deployer,
     version: "0.0.1",
     elixir: "~> 1.0",
     deps: deps]
  end

  def application do
    [
      applications: [
        :logger,
        :amqp,
        :fleet_api,
        :openaperture_messaging,
        :openaperture_manager_api,
        :openaperture_overseer_api
      ],
      mod: {OpenAperture.Deployer, []}
    ]
  end

  defp deps do
    [
      {:ex_doc, github: "elixir-lang/ex_doc", only: [:test]},
      {:markdown, github: "devinus/markdown", only: [:test]},

      {:openaperture_messaging, git: "https://github.com/OpenAperture/messaging.git",ref: "e3247e4fbcc097a3156e3b95ad2115408693ca12", override: true},
      {:openaperture_manager_api, git: "https://github.com/OpenAperture/manager_api.git",ref: "32986942e702dc4b32ab9118362cda992949fa6c", override: true},
      {:openaperture_fleet, git: "https://github.com/OpenAperture/fleet.git", ref: "7aa864eeb3876b476c89d58c56364cbb0fa2fb08", override: true},
      {:openaperture_workflow_orchestrator_api, git: "https://github.com/OpenAperture/workflow_orchestrator_api.git", ref: "488832b216a1a139a6c58d788083cf5054b3dbe8", override: true},
      {:openaperture_overseer_api, git: "https://github.com/OpenAperture/overseer_api.git", ref: "515a4ad10c2a078dc0faee501d6109335f53b3e6", override: true},
      {:timex, "~> 0.12.9"},
      {:fleet_api, "~> 0.0.4"},

      #test dependencies
      {:exvcr, github: "parroty/exvcr", only: :test},
      {:meck, "0.8.2", only: :test}
    ]
  end
end

defmodule OpenAperture.Deployer.Mixfile do
  use Mix.Project

  def project do
    [app: :openaperture_deployer,
     version: "0.0.1",
     elixir: "~> 1.0",
     deps: deps]
  end

  def application do
    [
      applications: [
        :logger,
        :amqp,
        :fleet_api,
        :openaperture_messaging
      ],
      mod: {OpenAperture.Deployer, []}
    ]
  end

  defp deps do
    [
      {:ex_doc, github: "elixir-lang/ex_doc", only: [:test]},
      {:markdown, github: "devinus/markdown", only: [:test]},

      {:openaperture_messaging, git: "https://github.com/OpenAperture/messaging.git",ref: "e3247e4fbcc097a3156e3b95ad2115408693ca12", override: true},
      {:openaperture_manager_api, git: "https://github.com/OpenAperture/manager_api.git",ref: "32986942e702dc4b32ab9118362cda992949fa6c", override: true},
      {:openaperture_fleet, git: "https://github.com/OpenAperture/fleet.git", ref: "7aa864eeb3876b476c89d58c56364cbb0fa2fb08", override: true},
      {:openaperture_workflow_orchestrator_api, git: "https://github.com/OpenAperture/workflow_orchestrator_api.git", ref: "488832b216a1a139a6c58d788083cf5054b3dbe8", override: true},
      {:openaperture_overseer_api, git: "https://github.com/OpenAperture/overseer_api.git", ref: "515a4ad10c2a078dc0faee501d6109335f53b3e6", override: true},
      {:timex, "~> 0.12.9"},
      {:fleet_api, "~> 0.0.4"},

      #test dependencies
      {:exvcr, github: "parroty/exvcr", only: :test},
      {:meck, "0.8.2", only: :test}
    ]
  end
end


before i forget

before i forget

defmodule LoadedBike.Mixfile do
  use Mix.Project

  def project do
    [
      app:             :loaded_bike,
      version:         "0.0.1",
      elixir:          "~> 1.2",
      elixirc_paths:   elixirc_paths(Mix.env),
      compilers:       [:phoenix, :gettext] ++ Mix.compilers,
      build_embedded:  Mix.env == :prod,
      start_permanent: Mix.env == :prod,
      aliases:         aliases(),
      deps:            deps()
    ]
  end

  # Configuration for the OTP application.
  #
  # Type `mix help compile.app` for more information.
  def application do
    [mod: {LoadedBike, []},
     applications: [
      :phoenix,
      :phoenix_pubsub,
      :phoenix_html,
      :cowboy,
      :logger,
      :gettext,
      :phoenix_ecto,
      :postgrex,
      :comeonin,
      :arc,
      :arc_ecto,
      :breadcrumble,
      :earmark,
      :guardian,
      :html_sanitize_ex,
      :kerosene,
      :mochiweb,
      :phoenix_haml,
      :elixir_make,
      :edeliver,
      :rollbax,
      :sweet_xml,
      :ecto_enum,
      :secure_random,
      :bamboo,
      :bamboo_postageapp,
      :slugger,
      :drab,
      :phoenix_bootstrap_form
    ]]
  end

  # Specifies which paths to compile per environment.
  defp elixirc_paths(:test), do: ["lib", "test/support", "test/factories"]
  defp elixirc_paths(_),     do: ["lib"]

  # Specifies your project dependencies.
  #
  # Type `mix help deps` for examples and options.
  defp deps do
    [
      {:phoenix,                "~> 1.3.0", override: true},
      {:phoenix_pubsub,         "~> 1.0"},
      {:phoenix_ecto,           "~> 3.0"},
      {:postgrex,               ">= 0.0.0"},
      {:gettext,                "~> 0.11"},
      {:cowboy,                 "~> 1.0"},

      {:phoenix_haml,           "0.2.3"},
      {:comeonin,               "~> 3.0"},
      {:guardian,               "~> 0.14"},
      {:arc,                    "~> 0.7.0", override: true},
      {:arc_ecto,               "~> 0.5.0"},
      {:earmark,                "~> 1.2.0"},
      {:html_sanitize_ex,       "~> 1.1.0"},
      {:breadcrumble,           "~> 1.0.0"},
      {:kerosene,               "~> 0.6.1"},
      {:mochiweb,               "~> 2.15.0", override: true}, #dependency hell
      {:edeliver,               "~> 1.4.4"},
      {:distillery,             "~> 1.0"},
      {:rollbax,                "~> 0.6"},
      {:sweet_xml,              "~> 0.6.5"},
      {:ecto_enum,              "~> 1.0"},
      {:secure_random,          "~> 0.5"},
      {:bamboo,                 "~> 0.8"},
      {:bamboo_postageapp,      "~> 0.0.1"},
      {:slugger,                "~> 0.2"},
      {:drab,                   "0.5.4"},
      {:phoenix_bootstrap_form, "0.0.3"},

      # -- dev -----------------------------------------------------------------
      {:phoenix_live_reload,  "~> 1.0", only: :dev},

      # -- test ----------------------------------------------------------------
      {:ex_machina,           "~> 1.0", only: :test},
      # {:floki,              "~> 0.17.0", only: :test} # part of drab now
    ]
  end

  # Aliases are shortcuts or tasks specific to the current project.
  # For example, to create, migrate and run the seeds file at once:
  #
  #     $ mix ecto.setup
  #
  # See the documentation for `Mix` for more info on aliases.
  defp aliases do
    ["ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
     "ecto.reset": ["ecto.drop", "ecto.setup"],
     "test": ["ecto.create --quiet", "ecto.migrate", "test"]]
  end
end

defmodule LoadedBike.Mixfile do
  use Mix.Project

  def project do
    [
      app:             :loaded_bike,
      version:         "0.0.1",
      elixir:          "~> 1.2",
      elixirc_paths:   elixirc_paths(Mix.env),
      compilers:       [:phoenix, :gettext] ++ Mix.compilers,
      build_embedded:  Mix.env == :prod,
      start_permanent: Mix.env == :prod,
      aliases:         aliases(),
      deps:            deps()
    ]
  end

  # Configuration for the OTP application.
  #
  # Type `mix help compile.app` for more information.
  def application do
    [mod: {LoadedBike, []},
     applications: [
      :phoenix,
      :phoenix_pubsub,
      :phoenix_html,
      :cowboy,
      :logger,
      :gettext,
      :phoenix_ecto,
      :postgrex,
      :comeonin,
      :arc,
      :arc_ecto,
      :breadcrumble,
      :earmark,
      :guardian,
      :html_sanitize_ex,
      :kerosene,
      :mochiweb,
      :phoenix_haml,
      :elixir_make,
      :edeliver,
      :rollbax,
      :sweet_xml,
      :ecto_enum,
      :secure_random,
      :bamboo,
      :bamboo_postageapp,
      :slugger,
      :drab
    ]]
  end

  # Specifies which paths to compile per environment.
  defp elixirc_paths(:test), do: ["lib", "test/support", "test/factories"]
  defp elixirc_paths(_),     do: ["lib"]

  # Specifies your project dependencies.
  #
  # Type `mix help deps` for examples and options.
  defp deps do
    [
      {:phoenix,                "~> 1.3.0", override: true},
      {:phoenix_pubsub,         "~> 1.0"},
      {:phoenix_ecto,           "~> 3.0"},
      {:postgrex,               ">= 0.0.0"},
      {:gettext,                "~> 0.11"},
      {:cowboy,                 "~> 1.0"},

      {:phoenix_haml,           "0.2.3"},
      {:comeonin,               "~> 3.0"},
      {:guardian,               "~> 0.14"},
      {:arc,                    "~> 0.7.0", override: true},
      {:arc_ecto,               "~> 0.5.0"},
      {:earmark,                "~> 1.2.0"},
      {:html_sanitize_ex,       "~> 1.1.0"},
      {:breadcrumble,           "~> 1.0.0"},
      {:kerosene,               "~> 0.6.1"},
      {:mochiweb,               "~> 2.15.0", override: true}, #dependency hell
      {:edeliver,               "~> 1.4.4"},
      {:distillery,             "~> 1.0"},
      {:rollbax,                "~> 0.6"},
      {:sweet_xml,              "~> 0.6.5"},
      {:ecto_enum,              "~> 1.0"},
      {:secure_random,          "~> 0.5"},
      {:bamboo,                 "~> 0.8"},
      {:bamboo_postageapp,      "~> 0.0.1"},
      {:slugger,                "~> 0.2"},
      {:drab,                   "0.5.4"},
      {:phoenix_bootstrap_form, "0.0.3"},

      # -- dev -----------------------------------------------------------------
      {:phoenix_live_reload,  "~> 1.0", only: :dev},

      # -- test ----------------------------------------------------------------
      {:ex_machina,           "~> 1.0", only: :test},
      # {:floki,              "~> 0.17.0", only: :test} # part of drab now
    ]
  end

  # Aliases are shortcuts or tasks specific to the current project.
  # For example, to create, migrate and run the seeds file at once:
  #
  #     $ mix ecto.setup
  #
  # See the documentation for `Mix` for more info on aliases.
  defp aliases do
    ["ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
     "ecto.reset": ["ecto.drop", "ecto.setup"],
     "test": ["ecto.create --quiet", "ecto.migrate", "test"]]
  end
end


Bump version

Bump version

defmodule Closex.Mixfile do
  use Mix.Project

  def project do
    [
      app: :closex,
      version: "0.8.0",
      build_path: "_build",
      config_path: "config/config.exs",
      deps_path: "deps",
      lockfile: "mix.lock",
      elixirc_paths: elixirc_paths(Mix.env()),
      elixir: "~> 1.6",
      description: description(),
      package: package(),
      deps: deps(),
      test_coverage: [tool: ExCoveralls],
      preferred_cli_env: [
        coveralls: :test,
        "coveralls.detail": :test,
        "coveralls.post": :test,
        "coveralls.html": :test
      ],
      start_permanent: Mix.env() == :prod
    ]
  end

  def application do
    [mod: {Closex.Application, []}]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]

  defp deps do
    [
      {:poison, "~> 3.1.0"},
      {:httpoison, "~> 0.13.0"},
      {:cachex, "~> 2.1.0"},
      {:exvcr, "~> 0.8", only: :test, optional: true},
      {:ex_doc, ">= 0.0.0", only: :dev, optional: true},
      {:excoveralls, "~> 0.4", only: :test, optional: true},
      {:dialyxir, ">= 0.0.0", runtime: false},
      {:mix_test_watch, "~> 0.3", only: :dev, runtime: false}
    ]
  end

  defp description() do
    "Close.io HTTP client for Elixir"
  end

  defp package() do
    [
      files: ["lib", "mix.exs", "README.md"],
      maintainers: [
        "Sam Davies",
        "Darren Oakley",
        "Morgan Sadr-Hashemi",
        "Adam Lancaster",
        "Ed Saunders"
      ],
      licenses: ["MIT"],
      source_url: "https://github.com/nested-tech/closex",
      homepage_url: "https://github.com/nested-tech/closex",
      links: %{
        "Nested" => "https://nested.com",
        "Close.io" => "https://close.io",
        "GitHub" => "https://github.com/nested-tech/closex"
      }
    ]
  end
end

defmodule Closex.Mixfile do
  use Mix.Project

  def project do
    [
      app: :closex,
      version: "0.7.0",
      build_path: "_build",
      config_path: "config/config.exs",
      deps_path: "deps",
      lockfile: "mix.lock",
      elixirc_paths: elixirc_paths(Mix.env()),
      elixir: "~> 1.6",
      description: description(),
      package: package(),
      deps: deps(),
      test_coverage: [tool: ExCoveralls],
      preferred_cli_env: [
        coveralls: :test,
        "coveralls.detail": :test,
        "coveralls.post": :test,
        "coveralls.html": :test
      ],
      start_permanent: Mix.env() == :prod
    ]
  end

  def application do
    [mod: {Closex.Application, []}]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]

  defp deps do
    [
      {:poison, "~> 3.1.0"},
      {:httpoison, "~> 0.13.0"},
      {:cachex, "~> 2.1.0"},
      {:exvcr, "~> 0.8", only: :test, optional: true},
      {:ex_doc, ">= 0.0.0", only: :dev, optional: true},
      {:excoveralls, "~> 0.4", only: :test, optional: true},
      {:dialyxir, ">= 0.0.0", runtime: false},
      {:mix_test_watch, "~> 0.3", only: :dev, runtime: false}
    ]
  end

  defp description() do
    "Close.io HTTP client for Elixir"
  end

  defp package() do
    [
      files: ["lib", "mix.exs", "README.md"],
      maintainers: [
        "Sam Davies",
        "Darren Oakley",
        "Morgan Sadr-Hashemi",
        "Adam Lancaster",
        "Ed Saunders"
      ],
      licenses: ["MIT"],
      source_url: "https://github.com/nested-tech/closex",
      homepage_url: "https://github.com/nested-tech/closex",
      links: %{
        "Nested" => "https://nested.com",
        "Close.io" => "https://close.io",
        "GitHub" => "https://github.com/nested-tech/closex"
      }
    ]
  end
end


Add ExConf to applications

Add ExConf to applications

defmodule Phoenix.Mixfile do
  use Mix.Project

  def project do
    [ app: :phoenix,
      version: "0.0.1",
      elixir: "~> 0.12.4",
      deps: deps(Mix.env) ]
  end

  def application do
    [
      mod: { Phoenix, [] },
      applications: [:cowboy, :plug, :ex_conf]
    ]
  end

  defp deps(:prod) do
    [
      {:cowboy, github: "extend/cowboy"},
      {:plug, github: "elixir-lang/plug"},
      {:inflex, github: "nurugger07/inflex"},
      {:ex_conf, github: "phoenixframework/ex_conf"}
    ]
  end

  defp deps(_) do
    deps(:prod) ++
      [ { :ex_doc, github: "elixir-lang/ex_doc" } ]
  end
end

defmodule Phoenix.Mixfile do
  use Mix.Project

  def project do
    [ app: :phoenix,
      version: "0.0.1",
      elixir: "~> 0.12.4",
      deps: deps(Mix.env) ]
  end

  def application do
    [
      mod: { Phoenix, [] },
      applications: [:cowboy, :plug]
    ]
  end

  defp deps(:prod) do
    [
      {:cowboy, github: "extend/cowboy"},
      {:plug, github: "elixir-lang/plug"},
      {:inflex, github: "nurugger07/inflex"},
      {:ex_conf, github: "phoenixframework/ex_conf"}
    ]
  end

  defp deps(_) do
    deps(:prod) ++
      [ { :ex_doc, github: "elixir-lang/ex_doc" } ]
  end
end


Tag the version in git when publishing.

Tag the version in git when publishing.

defmodule PublicSuffix.Mixfile do
  use Mix.Project

  def project do
    [app: :public_suffix,
     version: "0.1.0",
     elixir: "~> 1.2",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     aliases: aliases,
     description: description,
     package: package,
     deps: deps]
  end

  def application do
    [
      # :idna is intentionally NOT included in this list because it is
      # only used at compile time, as part of processing the publicsuffix.org
      # rules file. So it is not needed at runtime.
      applications: [
        :logger,
      ]
    ]
  end

  defp deps do
    [
      {:idna, "~> 2.0"},
      # ex_doc and earmark are necessary to publish docs to hexdocs.pm.
      {:ex_doc, ">= 0.0.0", only: :dev},
      {:earmark, ">= 0.0.0", only: :dev},
    ]
  end

  defp description do
    """
    Operate on domain names using the public suffix rules provided by https://publicsuffix.org/.
    """
  end

  defp package do
    [
      licenses: ["MIT"],
      maintainers: ["Myron Marston", "Ben Kirzhner"],
      links: %{"GitHub" => "https://github.com/seomoz/publicsuffix-elixir",
               "Public Suffix List" => "https://publicsuffix.org/"},
    ]
  end

  defp aliases do
    [
      "hex.publish": ["hex.publish", &tag_version/1],
    ]
  end

  defp tag_version(_args) do
    version = project.version
    System.cmd("git", ["tag", "-a", "-m", "Version #{version}", "v#{version}"])
    System.cmd("git", ["push", "origin"])
    System.cmd("git", ["push", "origin", "--tags"])
  end
end

defmodule Mix.Tasks.PublicSuffix.SyncFiles do
  use Mix.Task

  @shortdoc "Syncs the files from publicsuffix.org"
  @data_dir Path.expand("data", __DIR__)

  def run(_) do
    File.mkdir_p!(@data_dir)
    sync_file "https://publicsuffix.org/list/public_suffix_list.dat", "public_suffix_list.dat"
    sync_file "https://raw.githubusercontent.com/publicsuffix/list/master/tests/tests.txt", "tests.txt"
  end

  defp sync_file(remote_url, local_path) do
    local_path = Path.join(@data_dir, local_path)

    [
      "curl",
      "-s",
      remote_url,
      "--output",
      local_path,
    ]
    |> Enum.join(" ")
    |> Mix.shell.cmd

    IO.puts "Synced #{remote_url} to #{local_path}"
  end
end

defmodule PublicSuffix.Mixfile do
  use Mix.Project

  def project do
    [app: :public_suffix,
     version: "0.1.0",
     elixir: "~> 1.2",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     description: description,
     package: package,
     deps: deps]
  end

  def application do
    [
      # :idna is intentionally NOT included in this list because it is
      # only used at compile time, as part of processing the publicsuffix.org
      # rules file. So it is not needed at runtime.
      applications: [
        :logger,
      ]
    ]
  end

  defp deps do
    [
      {:idna, "~> 2.0"},
      # ex_doc and earmark are necessary to publish docs to hexdocs.pm.
      {:ex_doc, ">= 0.0.0", only: :dev},
      {:earmark, ">= 0.0.0", only: :dev},
    ]
  end

  defp description do
    """
    Operate on domain names using the public suffix rules provided by https://publicsuffix.org/.
    """
  end

  defp package do
    [
      licenses: ["MIT"],
      maintainers: ["Myron Marston", "Ben Kirzhner"],
      links: %{"GitHub" => "https://github.com/seomoz/publicsuffix-elixir",
               "Public Suffix List" => "https://publicsuffix.org/"},
    ]
  end
end

defmodule Mix.Tasks.PublicSuffix.SyncFiles do
  use Mix.Task

  @shortdoc "Syncs the files from publicsuffix.org"
  @data_dir Path.expand("data", __DIR__)

  def run(_) do
    File.mkdir_p!(@data_dir)
    sync_file "https://publicsuffix.org/list/public_suffix_list.dat", "public_suffix_list.dat"
    sync_file "https://raw.githubusercontent.com/publicsuffix/list/master/tests/tests.txt", "tests.txt"
  end

  defp sync_file(remote_url, local_path) do
    local_path = Path.join(@data_dir, local_path)

    [
      "curl",
      "-s",
      remote_url,
      "--output",
      local_path,
    ]
    |> Enum.join(" ")
    |> Mix.shell.cmd

    IO.puts "Synced #{remote_url} to #{local_path}"
  end
end


Bump version

Bump version

defmodule Rprel.Mixfile do
  use Mix.Project

  def project do
    [app: :rprel,
     version: "1.1.5",
     elixir: "~> 1.2",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     escript: [main_module: Rprel.CLI],
     description: description(),
     package: package(),
     deps: deps]
  end

  defp description do
    """
    Rprel (arr-pee-rell) is a tool for creating GitHub releases from a build artifact.
    """
  end

  defp package do
    [
      maintainers: ["devadmin@rentpath.com"],
      links: %{"GitHub" => "https://github.com/rentpath/rprel"},
      licenses: ["The MIT License"]
    ]
  end

  def application do
    [applications: [:logger, :httpoison, :porcelain]]
  end

  defp deps do
    [{:bypass, "~> 0.1", only: :test},
     {:credo, "~> 0.4", only: [:dev, :test]},
     {:httpoison, "~> 0.8"},
     {:mix_test_watch, "~> 0.2", only: :dev},
     {:poison, "~>2.0"},
     {:porcelain, "~> 2.0.0"},
     {:timex, "~> 2.1.6"},
     {:uri_template, "~>1.0"}]
  end
end

defmodule Rprel.Mixfile do
  use Mix.Project

  def project do
    [app: :rprel,
     version: "1.1.4",
     elixir: "~> 1.2",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     escript: [main_module: Rprel.CLI],
     description: description(),
     package: package(),
     deps: deps]
  end

  defp description do
    """
    Rprel (arr-pee-rell) is a tool for creating GitHub releases from a build artifact.
    """
  end

  defp package do
    [
      maintainers: ["devadmin@rentpath.com"],
      links: %{"GitHub" => "https://github.com/rentpath/rprel"},
      licenses: ["The MIT License"]
    ]
  end

  def application do
    [applications: [:logger, :httpoison, :porcelain]]
  end

  defp deps do
    [{:bypass, "~> 0.1", only: :test},
     {:credo, "~> 0.4", only: [:dev, :test]},
     {:httpoison, "~> 0.8"},
     {:mix_test_watch, "~> 0.2", only: :dev},
     {:poison, "~>2.0"},
     {:porcelain, "~> 2.0.0"},
     {:timex, "~> 2.1.6"},
     {:uri_template, "~>1.0"}]
  end
end


Bump version to 1.0.4

Bump version to 1.0.4

defmodule Credo.Mixfile do
  use Mix.Project

  def project do
    [
      app: :credo,
      version: "1.0.4",
      elixir: ">= 1.4.0",
      escript: [main_module: Credo.CLI],
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      test_coverage: [tool: Coverex.Task],
      name: "Credo",
      description: "A static code analysis tool with a focus on code consistency and teaching.",
      package: package(),
      source_url: "https://github.com/rrrene/credo",
      # The main page in the docs
      docs: [main: "Credo", logo: "assets/logo.png", extras: ["README.md"]]
    ]
  end

  defp package do
    [
      files: [
        ".credo.exs",
        ".template.check.ex",
        "lib",
        "mix.exs",
        "README.md",
        "LICENSE"
      ],
      maintainers: ["René Föhring"],
      licenses: ["MIT"],
      links: %{
        "GitHub" => "https://github.com/rrrene/credo",
        "Changelog" => "https://github.com/rrrene/credo/blob/master/CHANGELOG.md"
      }
    ]
  end

  def application do
    [mod: {Credo.Application, []}, applications: [:bunt, :logger, :inets]]
  end

  defp deps do
    [
      {:bunt, "~> 0.2.0"},
      {:jason, "~> 1.0"},
      {:ex_doc, "~> 0.16", only: :dev, runtime: false},
      {:inch_ex, "~> 0.1", only: [:dev, :test], runtime: false}
    ]
  end
end

defmodule Credo.Mixfile do
  use Mix.Project

  def project do
    [
      app: :credo,
      version: "1.0.3",
      elixir: ">= 1.4.0",
      escript: [main_module: Credo.CLI],
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      test_coverage: [tool: Coverex.Task],
      name: "Credo",
      description: "A static code analysis tool with a focus on code consistency and teaching.",
      package: package(),
      source_url: "https://github.com/rrrene/credo",
      # The main page in the docs
      docs: [main: "Credo", logo: "assets/logo.png", extras: ["README.md"]]
    ]
  end

  defp package do
    [
      files: [
        ".credo.exs",
        ".template.check.ex",
        "lib",
        "mix.exs",
        "README.md",
        "LICENSE"
      ],
      maintainers: ["René Föhring"],
      licenses: ["MIT"],
      links: %{
        "GitHub" => "https://github.com/rrrene/credo",
        "Changelog" => "https://github.com/rrrene/credo/blob/master/CHANGELOG.md"
      }
    ]
  end

  def application do
    [mod: {Credo.Application, []}, applications: [:bunt, :logger, :inets]]
  end

  defp deps do
    [
      {:bunt, "~> 0.2.0"},
      {:jason, "~> 1.0"},
      {:ex_doc, "~> 0.16", only: :dev, runtime: false},
      {:inch_ex, "~> 0.1", only: [:dev, :test], runtime: false}
    ]
  end
end


Bump bootstrap version

Bump bootstrap version

defmodule Farmbot.Mixfile do
  use Mix.Project
  @target System.get_env("MIX_TARGET") || "host"
  @version Path.join(__DIR__, "VERSION") |> File.read!() |> String.trim()

  defp commit do
    System.cmd("git", ~w"rev-parse --verify HEAD") |> elem(0) |> String.trim()
  end

  defp arduino_commit do
    opts = [cd: "c_src/farmbot-arduino-firmware"]
    System.cmd("git", ~w"rev-parse --verify HEAD", opts) |> elem(0) |> String.trim()
  end

  Mix.shell().info([
    :green,
    """
    Env
      MIX_TARGET:   #{@target}
      MIX_ENV:      #{Mix.env()}
    """,
    :reset
  ])

  def project do
    [
      app: :farmbot,
      description: "The Brains of the Farmbot Project",
      package: package(),
      compilers: compilers(),
      make_clean: ["clean"],
      test_coverage: [tool: ExCoveralls],
      version: @version,
      target: @target,
      commit: commit(),
      arduino_commit: arduino_commit(),
      archives: [nerves_bootstrap: "~> 0.7.0"],
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      deps_path: "deps/#{@target}",
      build_path: "_build/#{@target}",
      lockfile: "mix.lock.#{@target}",
      config_path: "config/config.exs",
      lockfile: "mix.lock",
      elixirc_paths: elixirc_paths(Mix.env(), @target),
      aliases: aliases(Mix.env(), @target),
      deps: deps() ++ deps(@target),
      dialyzer: [
        plt_add_deps: :transitive,
        plt_add_apps: [:mix],
        flags: []
      ],
      preferred_cli_env: [
        test: :test,
        coveralls: :test,
        "coveralls.detail": :test,
        "coveralls.post": :test,
        "coveralls.html": :test,
        "coveralls.circle": :test
      ],
      source_url: "https://github.com/Farmbot/farmbot_os",
      homepage_url: "http://farmbot.io",
      docs: docs()
    ]
  end

  def application do
    [mod: {Farmbot, []}, extra_applications: [:logger, :eex, :ssl, :inets, :runtime_tools]]
  end

  defp docs do
    [
      main: "Farmbot",
      logo: "priv/static/farmbot_logo.png",
      source_ref: commit(),
      extras: [
        "docs/BUILDING.md",
        "docs/FAQ.md",
        "README.md"
      ],
    ]
  end

  defp compilers do
    case :init.get_plain_arguments() |> List.last() do
      a when a in ['mix', 'compile', 'firmware'] ->
        [:elixir_make] ++ Mix.compilers
      _ -> Mix.compilers
    end
  end

  defp deps do
    [
      {:nerves, "~> 0.8.3", runtime: false},
      {:elixir_make, "~> 0.4", runtime: false},
      {:gen_stage, "~> 0.12"},

      {:poison, "~> 3.1.0"},
      {:httpoison, "~> 0.13.0"},
      {:jsx, "~> 2.8.0"},

      {:tzdata, "~> 0.5.14"},
      {:timex, "~> 3.1.13"},

      {:fs, "~> 3.4.0"},
      {:nerves_uart, "~> 1.0"},
      {:nerves_leds, "~> 0.8.0"},

      {:cowboy, "~> 1.1"},
      {:plug, "~> 1.4"},
      {:cors_plug, "~> 1.2"},
      {:wobserver, "~> 0.1.8"},
      {:rsa, "~> 0.0.1"},
      {:joken, "~> 1.1"},

      {:ecto, "~> 2.2.2"},
      {:sqlite_ecto2, "~> 2.2.1"},
      {:uuid, "~> 1.1"},

      {:socket, "~> 0.3"},
      {:amqp, "~> 1.0.0-pre.2"},

      {:recon, "~> 2.3"},
    ]
  end

  defp deps("host") do
    [
      {:ex_doc, "~> 0.18.1", only: :dev},
      {:excoveralls, "~> 0.7", only: :test},
      {:dialyxir, "~> 0.5.1", only: :dev, runtime: false},
      {:credo, "~> 0.8", only: [:dev, :test], runtime: false},
      {:inch_ex, ">= 0.0.0", only: :dev},
      {:mock, "~> 0.2.0", only: :test},
      {:faker, "~> 0.9", only: :test},
    ]
  end

  defp deps("rpi3") do
    system("rpi3") ++
      [
        {:bootloader, "~> 0.1.3", except: :test},
        {:nerves_runtime, "0.5.3"},
        {:nerves_firmware, "~> 0.4.0"},
        {:nerves_firmware_ssh, "~> 0.2", only: :dev},
        {:nerves_network, "~> 0.3.6"},
        {:dhcp_server, "~> 0.3.0"},
        {:elixir_ale, "~> 1.0"}
      ]
  end

  defp deps(target) do
    system(target) ++
      [
        {:bootloader, "~> 0.1.3", except: :test},
        {:nerves_runtime, "0.5.3"},
        {:nerves_firmware, "~> 0.4.0"},
        {:nerves_firmware_ssh, "~> 0.2", only: :dev},
        {:nerves_init_gadget,  github: "nerves-project/nerves_init_gadget", branch: "dhcp", only: :dev},
        {:nerves_network, "~> 0.3.5"},
        {:dhcp_server, "~> 0.3.0"},
        {:elixir_ale, "~> 1.0"},
      ]
  end

  defp system("rpi3"),
    do: [{:nerves_system_farmbot_rpi3, "0.19.0-farmbot", runtime: false}]

  defp system("rpi0"),
    do: [{:nerves_system_farmbot_rpi0, "0.20.0-farmbot", runtime: false}]

  defp system("bbb"),
    do: [{:nerves_system_farmbot_bbb, "0.19.0-farmbot", runtime: false}]

  defp package do
    [
      name: "farmbot",
      maintainers: ["Farmbot.io"],
      licenses: ["MIT"],
      links: %{"github" => "https://github.com/farmbot/farmbot_os"},
    ]
  end

  defp elixirc_paths(:test, "host") do
    ["./lib", "./nerves/host", "./test/support"]
  end

  defp elixirc_paths(_, "host") do
    ["./lib", "./nerves/host"]
  end

  defp elixirc_paths(_env, _target) do
    ["./lib", "./nerves/target"]
  end

  defp aliases(:test, "host") do
    ["test": ["ecto.create --quiet", "ecto.migrate", "test"]]
  end

  defp aliases(_env, "host"), do: [
    "firmware.slack": ["farmbot.firmware.slack"],
    "firmware.sign":  ["farmbot.firmware.sign"]
  ]

  defp aliases(_env, _system) do
    [
      "firmware.slack": ["farmbot.firmware.slack"],
      "firmware.sign":  ["farmbot.firmware.sign"],
      "deps.precompile": ["nerves.precompile", "deps.precompile"],
      "deps.loadpaths": ["deps.loadpaths", "nerves.loadpaths"]
    ]
  end
end

defmodule Farmbot.Mixfile do
  use Mix.Project
  @target System.get_env("MIX_TARGET") || "host"
  @version Path.join(__DIR__, "VERSION") |> File.read!() |> String.trim()

  defp commit do
    System.cmd("git", ~w"rev-parse --verify HEAD") |> elem(0) |> String.trim()
  end

  defp arduino_commit do
    opts = [cd: "c_src/farmbot-arduino-firmware"]
    System.cmd("git", ~w"rev-parse --verify HEAD", opts) |> elem(0) |> String.trim()
  end

  Mix.shell().info([
    :green,
    """
    Env
      MIX_TARGET:   #{@target}
      MIX_ENV:      #{Mix.env()}
    """,
    :reset
  ])

  def project do
    [
      app: :farmbot,
      description: "The Brains of the Farmbot Project",
      package: package(),
      compilers: compilers(),
      make_clean: ["clean"],
      test_coverage: [tool: ExCoveralls],
      version: @version,
      target: @target,
      commit: commit(),
      arduino_commit: arduino_commit(),
      archives: [nerves_bootstrap: "~> 0.6.0"],
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      deps_path: "deps/#{@target}",
      build_path: "_build/#{@target}",
      lockfile: "mix.lock.#{@target}",
      config_path: "config/config.exs",
      lockfile: "mix.lock",
      elixirc_paths: elixirc_paths(Mix.env(), @target),
      aliases: aliases(Mix.env(), @target),
      deps: deps() ++ deps(@target),
      dialyzer: [
        plt_add_deps: :transitive,
        plt_add_apps: [:mix],
        flags: []
      ],
      preferred_cli_env: [
        test: :test,
        coveralls: :test,
        "coveralls.detail": :test,
        "coveralls.post": :test,
        "coveralls.html": :test,
        "coveralls.circle": :test
      ],
      source_url: "https://github.com/Farmbot/farmbot_os",
      homepage_url: "http://farmbot.io",
      docs: docs()
    ]
  end

  def application do
    [mod: {Farmbot, []}, extra_applications: [:logger, :eex, :ssl, :inets, :runtime_tools]]
  end

  defp docs do
    [
      main: "Farmbot",
      logo: "priv/static/farmbot_logo.png",
      source_ref: commit(),
      extras: [
        "docs/BUILDING.md",
        "docs/FAQ.md",
        "README.md"
      ],
    ]
  end

  defp compilers do
    case :init.get_plain_arguments() |> List.last() do
      a when a in ['mix', 'compile', 'firmware'] ->
        [:elixir_make] ++ Mix.compilers
      _ -> Mix.compilers
    end
  end

  defp deps do
    [
      {:nerves, "~> 0.8.3", runtime: false},
      {:elixir_make, "~> 0.4", runtime: false},
      {:gen_stage, "~> 0.12"},

      {:poison, "~> 3.1.0"},
      {:httpoison, "~> 0.13.0"},
      {:jsx, "~> 2.8.0"},

      {:tzdata, "~> 0.5.14"},
      {:timex, "~> 3.1.13"},

      {:fs, "~> 3.4.0"},
      {:nerves_uart, "~> 1.0"},
      {:nerves_leds, "~> 0.8.0"},

      {:cowboy, "~> 1.1"},
      {:plug, "~> 1.4"},
      {:cors_plug, "~> 1.2"},
      {:wobserver, "~> 0.1.8"},
      {:rsa, "~> 0.0.1"},
      {:joken, "~> 1.1"},

      {:ecto, "~> 2.2.2"},
      {:sqlite_ecto2, "~> 2.2.1"},
      {:uuid, "~> 1.1"},

      {:socket, "~> 0.3"},
      {:amqp, "~> 1.0.0-pre.2"},

      {:recon, "~> 2.3"},
    ]
  end

  defp deps("host") do
    [
      {:ex_doc, "~> 0.18.1", only: :dev},
      {:excoveralls, "~> 0.7", only: :test},
      {:dialyxir, "~> 0.5.1", only: :dev, runtime: false},
      {:credo, "~> 0.8", only: [:dev, :test], runtime: false},
      {:inch_ex, ">= 0.0.0", only: :dev},
      {:mock, "~> 0.2.0", only: :test},
      {:faker, "~> 0.9", only: :test},
    ]
  end

  defp deps("rpi3") do
    system("rpi3") ++
      [
        {:bootloader, "~> 0.1.3", except: :test},
        {:nerves_runtime, "0.5.3"},
        {:nerves_firmware, "~> 0.4.0"},
        {:nerves_firmware_ssh, "~> 0.2", only: :dev},
        {:nerves_network, "~> 0.3.6"},
        {:dhcp_server, "~> 0.3.0"},
        {:elixir_ale, "~> 1.0"}
      ]
  end

  defp deps(target) do
    system(target) ++
      [
        {:bootloader, "~> 0.1.3", except: :test},
        {:nerves_runtime, "0.5.3"},
        {:nerves_firmware, "~> 0.4.0"},
        {:nerves_firmware_ssh, "~> 0.2", only: :dev},
        {:nerves_init_gadget,  github: "nerves-project/nerves_init_gadget", branch: "dhcp", only: :dev},
        {:nerves_network, "~> 0.3.5"},
        {:dhcp_server, "~> 0.3.0"},
        {:elixir_ale, "~> 1.0"},
      ]
  end

  defp system("rpi3"),
    do: [{:nerves_system_farmbot_rpi3, "0.19.0-farmbot", runtime: false}]

  defp system("rpi0"),
    do: [{:nerves_system_farmbot_rpi0, "0.20.0-farmbot", runtime: false}]

  defp system("bbb"),
    do: [{:nerves_system_farmbot_bbb, "0.19.0-farmbot", runtime: false}]

  defp package do
    [
      name: "farmbot",
      maintainers: ["Farmbot.io"],
      licenses: ["MIT"],
      links: %{"github" => "https://github.com/farmbot/farmbot_os"},
    ]
  end

  defp elixirc_paths(:test, "host") do
    ["./lib", "./nerves/host", "./test/support"]
  end

  defp elixirc_paths(_, "host") do
    ["./lib", "./nerves/host"]
  end

  defp elixirc_paths(_env, _target) do
    ["./lib", "./nerves/target"]
  end

  defp aliases(:test, "host") do
    ["test": ["ecto.create --quiet", "ecto.migrate", "test"]]
  end

  defp aliases(_env, "host"), do: [
    "firmware.slack": ["farmbot.firmware.slack"],
    "firmware.sign":  ["farmbot.firmware.sign"]
  ]

  defp aliases(_env, _system) do
    [
      "firmware.slack": ["farmbot.firmware.slack"],
      "firmware.sign":  ["farmbot.firmware.sign"],
      "deps.precompile": ["nerves.precompile", "deps.precompile"],
      "deps.loadpaths": ["deps.loadpaths", "nerves.loadpaths"]
    ]
  end
end


Support OTP 19; changed erlpop dependency

defmodule Pop3mail.Mixfile do
  use Mix.Project

  def project do
    [app: :pop3mail,
     version: "0.1.8",
     elixir: "~> 1.2",
     description: description,
     package: package,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    [applications: [:logger]]
  end

  # Dependencies can be Hex packages:
  #
  #   {:mydep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
  #
  # Type "mix help deps" for more examples and options
  defp deps do
    [ {:erlpop, github: "nico-amsterdam/erlpop"},
      {:ex_doc,  "~> 0.12", only: :dev},
      {:credo,  "~> 0.4"  , only: :dev}
    ]
  end

  defp description do
    """
    Pop3 client to download email (including attachments) from the inbox.
    Decodes multipart content, quoted-printables, base64 and encoded-words.
    Uses an Erlang pop3 client with SSL support derived from the epop package. Add this dependency in mix.exs:
    {:erlpop, github: "nico-amsterdam/erlpop"}
    """
  end

  defp package do
    [
     name: :pop3mail,
     maintainers: ["Nico Hoogervorst"],
     licenses: ["MIT"],
     links: %{"GitHub" => "https://github.com/nico-amsterdam/pop3mail"}
    ]
  end
end

defmodule Pop3mail.Mixfile do
  use Mix.Project

  def project do
    [app: :pop3mail,
     version: "0.1.7",
     elixir: "~> 1.2",
     description: description,
     package: package,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    [applications: [:logger]]
  end

  # Dependencies can be Hex packages:
  #
  #   {:mydep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
  #
  # Type "mix help deps" for more examples and options
  defp deps do
    [ {:erlpop, github: "trifork/erlpop"},
      {:ex_doc,  "~> 0.12", only: :dev},
      {:credo,  "~> 0.4"  , only: :dev}
    ]
  end

  defp description do
    """
    Pop3 client to download email (including attachments) from the inbox.
    Decodes multipart content, quoted-printables, base64 and encoded-words.
    Uses an Erlang pop3 client with SSL support derived from the epop package. Add this dependency in mix.exs:
    {:erlpop, github: "trifork/erlpop"}
    """
  end

  defp package do
    [# These are the default files included in the package
     name: :pop3mail,
     maintainers: ["Nico Hoogervorst"],
     licenses: ["MIT"],
     links: %{"GitHub" => "https://github.com/nico-amsterdam/pop3mail"}]
  end
end


version 0.8.18

version 0.8.18

defmodule Wwwtech.MixProject do
  use Mix.Project

  def project do
    [
      app: :wwwtech,
      version: "0.8.18",
      elixir: "~> 1.5",
      elixirc_paths: elixirc_paths(Mix.env()),
      compilers: [:phoenix, :gettext] ++ Mix.compilers(),
      start_permanent: Mix.env() == :prod,
      aliases: aliases(),
      deps: deps()
    ]
  end

  # Configuration for the OTP application.
  #
  # Type `mix help compile.app` for more information.
  def application do
    [
      mod: {Wwwtech.Application, []},
      extra_applications: [:logger, :runtime_tools, :os_mon]
    ]
  end

  # Specifies which paths to compile per environment.
  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]

  # Specifies your project dependencies.
  #
  # Type `mix help deps` for examples and options.
  defp deps do
    [
      {:phoenix, "~> 1.5.0"},
      {:phoenix_pubsub, "~> 2.0"},
      {:phoenix_ecto, "~> 4.0"},
      {:ecto_sql, "~> 3.1"},
      {:postgrex, ">= 0.0.0"},
      {:phoenix_html, "~> 2.11"},
      {:phoenix_live_reload, "~> 1.2", only: :dev},
      {:gettext, "~> 0.11"},
      {:jason, "~> 1.0"},
      {:plug_cowboy, "~> 2.1"},
      {:argon2_elixir, "~> 2.0"},
      {:timex, "~> 3.5"},
      {:earmark, "~> 1.4"},
      {:xml_builder, "~> 2.1"},
      {:exexif, "~> 0.0.5"},
      {:mogrify, "~> 0.7.3"},
      {:microformats2, "~> 0.1"},
      {:webmentions, "~> 0.3"},
      {:floki, "~> 0.23"},
      {:swoosh, "~> 0.25"},
      {:gen_smtp, "~> 0.15"},
      {:phoenix_swoosh, "~> 0.2"},
      {:appsignal, "~> 1.0"},
      {:tesla, "~> 1.3"},
      {:hackney, "~> 1.15"},
      {:phoenix_live_dashboard, "~> 0.1"},
      {:telemetry_poller, "~> 0.4"},
      {:telemetry_metrics, "~> 0.4"}
    ]
  end

  # Aliases are shortcuts or tasks specific to the current project.
  # For example, to create, migrate and run the seeds file at once:
  #
  #     $ mix ecto.setup
  #
  # See the documentation for `Mix` for more info on aliases.
  defp aliases do
    [
      "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
      "ecto.reset": ["ecto.drop", "ecto.setup"],
      test: ["ecto.create --quiet", "ecto.migrate", "test"],
      build: "cmd ./.build/build",
      deploy: "cmd ./.build/deploy"
    ]
  end
end

defmodule Wwwtech.MixProject do
  use Mix.Project

  def project do
    [
      app: :wwwtech,
      version: "0.8.17",
      elixir: "~> 1.5",
      elixirc_paths: elixirc_paths(Mix.env()),
      compilers: [:phoenix, :gettext] ++ Mix.compilers(),
      start_permanent: Mix.env() == :prod,
      aliases: aliases(),
      deps: deps()
    ]
  end

  # Configuration for the OTP application.
  #
  # Type `mix help compile.app` for more information.
  def application do
    [
      mod: {Wwwtech.Application, []},
      extra_applications: [:logger, :runtime_tools, :os_mon]
    ]
  end

  # Specifies which paths to compile per environment.
  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]

  # Specifies your project dependencies.
  #
  # Type `mix help deps` for examples and options.
  defp deps do
    [
      {:phoenix, "~> 1.5.0"},
      {:phoenix_pubsub, "~> 2.0"},
      {:phoenix_ecto, "~> 4.0"},
      {:ecto_sql, "~> 3.1"},
      {:postgrex, ">= 0.0.0"},
      {:phoenix_html, "~> 2.11"},
      {:phoenix_live_reload, "~> 1.2", only: :dev},
      {:gettext, "~> 0.11"},
      {:jason, "~> 1.0"},
      {:plug_cowboy, "~> 2.1"},
      {:argon2_elixir, "~> 2.0"},
      {:timex, "~> 3.5"},
      {:earmark, "~> 1.4"},
      {:xml_builder, "~> 2.1"},
      {:exexif, "~> 0.0.5"},
      {:mogrify, "~> 0.7.3"},
      {:microformats2, "~> 0.1"},
      {:webmentions, "~> 0.3"},
      {:floki, "~> 0.23"},
      {:swoosh, "~> 0.25"},
      {:gen_smtp, "~> 0.15"},
      {:phoenix_swoosh, "~> 0.2"},
      {:appsignal, "~> 1.0"},
      {:tesla, "~> 1.3"},
      {:hackney, "~> 1.15"},
      {:phoenix_live_dashboard, "~> 0.1"},
      {:telemetry_poller, "~> 0.4"},
      {:telemetry_metrics, "~> 0.4"}
    ]
  end

  # Aliases are shortcuts or tasks specific to the current project.
  # For example, to create, migrate and run the seeds file at once:
  #
  #     $ mix ecto.setup
  #
  # See the documentation for `Mix` for more info on aliases.
  defp aliases do
    [
      "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
      "ecto.reset": ["ecto.drop", "ecto.setup"],
      test: ["ecto.create --quiet", "ecto.migrate", "test"],
      build: "cmd ./.build/build",
      deploy: "cmd ./.build/deploy"
    ]
  end
end


Dependency leak

Dependency leak

# Copyright 2016 Apcera Inc. All rights reserved.
defmodule Nats.Mixfile do
  use Mix.Project

  @name "Nats"
  @git_url "https://github.com/nats-io/elixir-nats"
  @home_url @git_url
  @description "NATS framework for Elixir"

  @version "0.1.3"

  def project do
    [app: :nats,
     version: @version,
     elixir: "~> 1.2",
     description: @description,
     package: package,
     source_url: @git_url,
     homepage_url: @home_url,
     deps: deps,
     name: @name,
     test_coverage: [tool: ExCoveralls],
     preferred_cli_env: ["coveralls": :test, "coveralls.detail":
                         :test, "coveralls.post": :test],
     docs: []]
    # main: "README", extras: ["README.md"]]]
#            #source_ref: "v#{@version}",
#            source_url: "./"]]
  end

  def application do
    [applications: [:logger]]
  end

  # Dependencies
  defp deps do
    [{:exrm, "~> 0.18.8"},
     {:excoveralls, "~> 0.4.5", only: :test},
     {:benchfella, "~> 0.3.1", only: :dev},
     {:earmark, "~> 0.2.1", only: :dev},
     {:ex_doc, "~> 0.11.4", only: :dev}]
  end

  defp package do
    [maintainers: ["nats-io", "Apcera"],
     licenses: ["MIT"],
     links: %{"GitHub" => @git_url,
              "nats.io" => "https://nats.io/"},
     files: ~w(lib src/*.xrl src/*.yrl mix.exs *.md LICENSE)]
  end
end

# Copyright 2016 Apcera Inc. All rights reserved.
defmodule Nats.Mixfile do
  use Mix.Project

  @name "Nats"
  @git_url "https://github.com/nats-io/elixir-nats"
  @home_url @git_url
  @description "NATS framework for Elixir"

  @version "0.1.3"

  def project do
    [app: :nats,
     version: @version,
     elixir: "~> 1.2",
     description: @description,
     package: package,
     source_url: @git_url,
     homepage_url: @home_url,
     deps: deps,
     name: @name,
     test_coverage: [tool: ExCoveralls],
     preferred_cli_env: ["coveralls": :test, "coveralls.detail":
                         :test, "coveralls.post": :test],
     docs: []]
    # main: "README", extras: ["README.md"]]]
#            #source_ref: "v#{@version}",
#            source_url: "./"]]
  end

  def application do
    [applications: [:logger]]
  end

  # Dependencies
  defp deps do
    [{:exrm, "~> 0.18.8"},
     {:excoveralls, "~> 0.4.5", only: :test},
     {:benchfella, "~> 0.3.1"},# #, only: :dev},
     {:earmark, "~> 0.2.1", only: :dev},
     {:ex_doc, "~> 0.11.4", only: :dev}]
  end

  defp package do
    [maintainers: ["nats-io", "Apcera"],
     licenses: ["MIT"],
     links: %{"GitHub" => @git_url,
              "nats.io" => "https://nats.io/"},
     files: ~w(lib src/*.xrl src/*.yrl mix.exs *.md LICENSE)]
  end
end


Update Elixir requirement to >= 1.5

Update Elixir requirement to >= 1.5

defmodule Credo.Mixfile do
  use Mix.Project

  def project do
    [
      app: :credo,
      version: "1.0.5",
      elixir: ">= 1.5.0",
      escript: [main_module: Credo.CLI],
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      test_coverage: [tool: Coverex.Task],
      name: "Credo",
      description: "A static code analysis tool with a focus on code consistency and teaching.",
      package: package(),
      source_url: "https://github.com/rrrene/credo",
      # The main page in the docs
      docs: [main: "Credo", logo: "assets/logo.png", extras: ["README.md"]]
    ]
  end

  defp package do
    [
      files: [
        ".credo.exs",
        ".template.check.ex",
        "lib",
        "mix.exs",
        "README.md",
        "LICENSE"
      ],
      maintainers: ["René Föhring"],
      licenses: ["MIT"],
      links: %{
        "GitHub" => "https://github.com/rrrene/credo",
        "Changelog" => "https://github.com/rrrene/credo/blob/master/CHANGELOG.md"
      }
    ]
  end

  def application do
    [mod: {Credo.Application, []}, applications: [:bunt, :logger, :inets]]
  end

  defp deps do
    [
      {:bunt, "~> 0.2.0"},
      {:jason, "~> 1.0"},
      {:ex_doc, "~> 0.16", only: :dev, runtime: false},
      {:inch_ex, "~> 0.1", only: [:dev, :test], runtime: false}
    ]
  end
end

defmodule Credo.Mixfile do
  use Mix.Project

  def project do
    [
      app: :credo,
      version: "1.0.5",
      elixir: ">= 1.4.0",
      escript: [main_module: Credo.CLI],
      build_embedded: Mix.env() == :prod,
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      test_coverage: [tool: Coverex.Task],
      name: "Credo",
      description: "A static code analysis tool with a focus on code consistency and teaching.",
      package: package(),
      source_url: "https://github.com/rrrene/credo",
      # The main page in the docs
      docs: [main: "Credo", logo: "assets/logo.png", extras: ["README.md"]]
    ]
  end

  defp package do
    [
      files: [
        ".credo.exs",
        ".template.check.ex",
        "lib",
        "mix.exs",
        "README.md",
        "LICENSE"
      ],
      maintainers: ["René Föhring"],
      licenses: ["MIT"],
      links: %{
        "GitHub" => "https://github.com/rrrene/credo",
        "Changelog" => "https://github.com/rrrene/credo/blob/master/CHANGELOG.md"
      }
    ]
  end

  def application do
    [mod: {Credo.Application, []}, applications: [:bunt, :logger, :inets]]
  end

  defp deps do
    [
      {:bunt, "~> 0.2.0"},
      {:jason, "~> 1.0"},
      {:ex_doc, "~> 0.16", only: :dev, runtime: false},
      {:inch_ex, "~> 0.1", only: [:dev, :test], runtime: false}
    ]
  end
end


do cowboy version this way

do cowboy version this way

defmodule Gandalf.Mixfile do
  use Mix.Project

  def project do
    [
      app: :gandalf,
      version: "0.1.0",
      elixir: "~> 1.4",
      build_embedded: Mix.env == :prod,
      start_permanent: Mix.env == :prod,
      deps: deps(),
      package: package(),
      description: description(),
     ]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    # Specify extra applications you'll use from Erlang/Elixir
    [extra_applications: [:logger]]
  end

  # Dependencies can be Hex packages:
  #
  #   {:my_dep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:my_dep, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
  #
  # Type "mix help deps" for more examples and options
  defp deps do
    [
      {:plug, "~> 1.0"},
      {:cowboy, "~> 1.0"}
    ]
  end

  defp package do
    [
      maintainers: ["Marcin Siepetowski", "Dominik Filip"],
      licenses: ["MIT"],
      links: %{
        "GitHub" => "http://github.com/siepet/gandalf"
      }
    ]
  end

  defp description do
    """
    An elixir plug that stops unwanted visitors from accessing your app.
    """
  end
end

defmodule Gandalf.Mixfile do
  use Mix.Project

  def project do
    [
      app: :gandalf,
      version: "0.1.0",
      elixir: "~> 1.4",
      build_embedded: Mix.env == :prod,
      start_permanent: Mix.env == :prod,
      deps: deps(),
      package: package(),
      description: description(),
     ]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    # Specify extra applications you'll use from Erlang/Elixir
    [extra_applications: [:logger]]
  end

  # Dependencies can be Hex packages:
  #
  #   {:my_dep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:my_dep, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
  #
  # Type "mix help deps" for more examples and options
  defp deps do
    [
      {:plug, "~> 1.0"},
      {:cowboy, "~> 1.0.0"}
    ]
  end

  defp package do
    [
      maintainers: ["Marcin Siepetowski", "Dominik Filip"],
      licenses: ["MIT"],
      links: %{
        "GitHub" => "http://github.com/siepet/gandalf"
      }
    ]
  end

  defp description do
    """
    An elixir plug that stops unwanted visitors from accessing your app.
    """
  end
end


we need not specify cowboy

we need not specify cowboy

defmodule Pan.Mixfile do
  use Mix.Project

  def project do
    [app: :pan,
     version: "0.0.1",
     elixir: "~> 1.0",
     elixirc_paths: elixirc_paths(Mix.env),
     compilers: [:phoenix, :gettext] ++ Mix.compilers,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     aliases: aliases(),
     deps: deps(),
    ]
  end

  def application do
    [mod: {Pan, []},
     applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger,
                    :gettext, :phoenix_ecto, :postgrex, :httpoison, :mogrify,
                    :comeonin, :sweet_xml, :timex, :earmark, :exactor, :ecto_sql,
                    :quinn, :uuid, :html_sanitize_ex, :parse_trans,
                    :scrivener_ecto, :scrivener_html, :bamboo, :bamboo_smtp,
                    :timelier, :tzdata, :tirexs, :floki, :erlware_commons,
                    :ja_serializer, :bcrypt_elixir, :elixir_make, :p1_utils, :iconv,
                    :exactor, :jason, :plug_cowboy]]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_),     do: ["lib"]

  defp deps do
    [{:phoenix, "~> 1.4.0", override: true}, # web framework
     {:phoenix_pubsub, "~> 1.1.1"}, # PubSub messaging
     {:postgrex, "0.14.0"}, # database adapter
     {:ecto_sql, "~> 3.0"}, # ecto sql adapter
     {:phoenix_ecto, "~> 4.0.0"}, # phoenix support for ecto
     {:phoenix_html, "2.12.0"}, # view layer
     {:phoenix_live_reload, "1.2.0", only: :dev}, # live browser page reload on code changes
     {:gettext, "~> 0.9"}, # i18n and l10n
     {:plug_cowboy, "~> 2.0"}, # web server plug
     {:plug, "~> 1.7.1"}, # connection adapters
     {:comeonin, "4.1.1"}, # password hashing library
     {:bcrypt_elixir, "1.1.1"}, # algorithm used for comeonin
     {:sweet_xml, "~> 0.6"}, # XML parser
     {:timex, "~> 3.4.2"}, # time conversion
     {:httpoison, "~> 1.4.0"}, # http client
     {:hackney, "1.14.3"}, # erlang http client, had to increase version here
     {:distillery, "~> 2.0.12", runtime: false}, # release manager
     {:quinn, "~> 1.1.2"}, # XML parser (another one)
     {:uuid, "~> 1.1.8"}, # UUID creation
     {:html_sanitize_ex, "1.3.0"}, # sanitizing html input (shownotes)
     {:scrivener_ecto, "2.0.0"}, # pagination
     {:scrivener_html, "~> 1.7.1"}, # pagination view helper
     {:bamboo_smtp, "~> 1.6.0"}, # mailing smtp adapter,
     {:bamboo, "~> 1.1.0"}, # mailing
     {:earmark, "1.2.6"}, # Markdown parser
     {:timelier, "~> 0.9.2"}, # Cron like agent,
     {:tzdata, "~> 0.5.19"}, # Timezone information
     {:tirexs, "~> 0.8.15"}, # elasticsearch connector
     {:credo, "0.10.2", only: [:dev, :test]}, # Code analysis
     {:floki, "~> 0.20.4"}, # HTML parser
     {:erlware_commons, "~> 1.3.0"},
     {:ja_serializer, git: "https://github.com/vt-elixir/ja_serializer"}, #Jsonapi.org serializer
     {:p1_utils, "1.0.13", manager: :rebar}, # dependency for iconv
     {:iconv, "~> 1.0.10", manager: :rebar}, # Unicode converter
     {:mogrify, "~> 0.6.1"}, # Imagemagick wrapper
     {:exactor, "~> 2.2.4", warn_missing: false}, # Simplifies implementation of GenServer based processes
     {:jason, "~> 1.1"}, # Json generation
    ]
  end

  defp aliases do
    ["ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
     "ecto.reset": ["ecto.drop", "ecto.setup"],
     test: ["ecto.create --quiet", "ecto.migrate", "test"]]
  end
end

defmodule Pan.Mixfile do
  use Mix.Project

  def project do
    [app: :pan,
     version: "0.0.1",
     elixir: "~> 1.0",
     elixirc_paths: elixirc_paths(Mix.env),
     compilers: [:phoenix, :gettext] ++ Mix.compilers,
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     aliases: aliases(),
     deps: deps(),
    ]
  end

  def application do
    [mod: {Pan, []},
     applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger,
                    :gettext, :phoenix_ecto, :postgrex, :httpoison, :mogrify,
                    :comeonin, :sweet_xml, :timex, :earmark, :exactor, :ecto_sql,
                    :quinn, :uuid, :html_sanitize_ex, :parse_trans,
                    :scrivener_ecto, :scrivener_html, :bamboo, :bamboo_smtp,
                    :timelier, :tzdata, :tirexs, :floki, :erlware_commons,
                    :ja_serializer, :bcrypt_elixir, :elixir_make, :p1_utils, :iconv,
                    :exactor, :jason, :plug_cowboy]]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_),     do: ["lib"]

  defp deps do
    [{:phoenix, "~> 1.4.0", override: true}, # web framework
     {:phoenix_pubsub, "~> 1.1.1"}, # PubSub messaging
     {:postgrex, "0.14.0"}, # database adapter
     {:ecto_sql, "~> 3.0"}, # ecto sql adapter
     {:phoenix_ecto, "~> 4.0.0"}, # phoenix support for ecto
     {:phoenix_html, "2.12.0"}, # view layer
     {:phoenix_live_reload, "1.2.0", only: :dev}, # live browser page reload on code changes
     {:gettext, "~> 0.9"}, # i18n and l10n
     {:cowboy, "~> 2.5"}, # web server
     {:plug_cowboy, "~> 2.0"}, # web server plug
     {:plug, "~> 1.7.1"}, # connection adapters
     {:comeonin, "4.1.1"}, # password hashing library
     {:bcrypt_elixir, "1.1.1"}, # algorithm used for comeonin
     {:sweet_xml, "~> 0.6"}, # XML parser
     {:timex, "~> 3.4.2"}, # time conversion
     {:httpoison, "~> 1.4.0"}, # http client
     {:hackney, "1.14.3"}, # erlang http client, had to increase version here
     {:distillery, "~> 2.0.12", runtime: false}, # release manager
     {:quinn, "~> 1.1.2"}, # XML parser (another one)
     {:uuid, "~> 1.1.8"}, # UUID creation
     {:html_sanitize_ex, "1.3.0"}, # sanitizing html input (shownotes)
     {:scrivener_ecto, "2.0.0"}, # pagination
     {:scrivener_html, "~> 1.7.1"}, # pagination view helper
     {:bamboo_smtp, "~> 1.6.0"}, # mailing smtp adapter,
     {:bamboo, "~> 1.1.0"}, # mailing
     {:earmark, "1.2.6"}, # Markdown parser
     {:timelier, "~> 0.9.2"}, # Cron like agent,
     {:tzdata, "~> 0.5.19"}, # Timezone information
     {:tirexs, "~> 0.8.15"}, # elasticsearch connector
     {:credo, "0.10.2", only: [:dev, :test]}, # Code analysis
     {:floki, "~> 0.20.4"}, # HTML parser
     {:erlware_commons, "~> 1.3.0"},
     {:ja_serializer, git: "https://github.com/vt-elixir/ja_serializer"}, #Jsonapi.org serializer
     {:p1_utils, "1.0.13", manager: :rebar}, # dependency for iconv
     {:iconv, "~> 1.0.10", manager: :rebar}, # Unicode converter
     {:mogrify, "~> 0.6.1"}, # Imagemagick wrapper
     {:exactor, "~> 2.2.4", warn_missing: false}, # Simplifies implementation of GenServer based processes
     {:jason, "~> 1.1"}, # Json generation
    ]
  end

  defp aliases do
    ["ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
     "ecto.reset": ["ecto.drop", "ecto.setup"],
     test: ["ecto.create --quiet", "ecto.migrate", "test"]]
  end
end


use my tempfile first until author pulls up his socks and accepts my pull request

defmodule Radpath.Mixfile do
  use Mix.Project

  def project do
    [ app: :radpath,
      version: "0.0.1",
      elixir: "~> 0.13.0",
      description: description,
      package: package,
      deps: deps(Mix.env) ]
  end

  # Configuration for the OTP application
  def application do
    []
  end

  defp description do
    """
    A path library for Elixir inspired by Python path libraries
    """
  end

  defp package do
    [
     files: ["lib", "mix.exs", "README.md", "LICENSE*", "test*"],
     contributors: ["Low Kian Seong"],
     licenses: ["MIT"],
     links: [{ "GitHub", "https://github.com/lowks/Radpath"},]
    ]
  end

  # Returns the list of dependencies in the format:
  # { :foobar, git: "https://github.com/elixir-lang/foobar.git", tag: "0.1" }
  #
  # To specify particular versions, regardless of the tag, do:
  # { :barbat, "~> 0.1", github: "elixir-lang/barbat" }
  defp deps(:prod) do
    [{ :tempfile, github: "lowks/tempfile" },
     { :finder, github: "h4cc/Finder" }]
  end

  defp deps(:test) do
    [{ :tempfile, github: "glejeune/tempfile" },
     { :ex_doc, github: "elixir-lang/ex_doc" },
     { :finder, github: "h4cc/Finder" },
     { :amrita, "~>0.2", github: "josephwilk/amrita"}]
  end

  defp deps(_) do
   deps(:prod)
  end
end

defmodule Radpath.Mixfile do
  use Mix.Project

  def project do
    [ app: :radpath,
      version: "0.0.1",
      elixir: "~> 0.13.0",
      description: description,
      package: package,
      deps: deps(Mix.env) ]
  end

  # Configuration for the OTP application
  def application do
    []
  end

  defp description do
    """
    A path library for Elixir inspired by Python path libraries
    """
  end

  defp package do
    [
     files: ["lib", "mix.exs", "README.md", "LICENSE*", "test*"],
     contributors: ["Low Kian Seong"],
     licenses: ["MIT"],
     links: [{ "GitHub", "https://github.com/lowks/Radpath"},]
    ]
  end

  # Returns the list of dependencies in the format:
  # { :foobar, git: "https://github.com/elixir-lang/foobar.git", tag: "0.1" }
  #
  # To specify particular versions, regardless of the tag, do:
  # { :barbat, "~> 0.1", github: "elixir-lang/barbat" }
  defp deps(:prod) do
    [{ :tempfile, github: "glejeune/tempfile" },
     { :finder, github: "h4cc/Finder" }]
  end

  defp deps(:test) do
    [{ :tempfile, github: "glejeune/tempfile" },
     { :ex_doc, github: "elixir-lang/ex_doc" },
     { :finder, github: "h4cc/Finder" },
     { :amrita, "~>0.2", github: "josephwilk/amrita"}]
  end

  defp deps(_) do
   deps(:prod)
  end
end


Version 0.0.4

Version 0.0.4

defmodule Elixlsx.Mixfile do
  use Mix.Project

  def project do
    [app: :elixlsx,
     version: "0.0.4",
     elixir: "~> 1.1",
     package: package,
     description: "a writer for XLSX spreadsheet files",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  def application do
    []
  end

  defp deps do
    [
      {:excheck, "~> 0.3", only: :test},
      {:triq, github: "krestenkrab/triq", only: :test},
      {:credo, "~> 0.1.9", only: [:dev, :test]},
      {:ex_doc, "~> 0.11", only: [:dev]}
    ]
  end

  defp package do
    [
      maintainers: ["Nikolai Weh <niko.weh@gmail.com>"],
      licenses: ["MIT"],
      links: %{"GitHub" => "https://github.com/xou/elixlsx"}
    ]
  end
end

defmodule Elixlsx.Mixfile do
  use Mix.Project

  def project do
    [app: :elixlsx,
     version: "0.0.3",
     elixir: "~> 1.1",
     package: package,
     description: "a writer for XLSX spreadsheet files",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  def application do
    []
  end

  defp deps do
    [
      {:excheck, "~> 0.3", only: :test},
      {:triq, github: "krestenkrab/triq", only: :test},
      {:credo, "~> 0.1.9", only: [:dev, :test]},
      {:ex_doc, "~> 0.11", only: [:dev]}
    ]
  end

  defp package do
    [
      maintainers: ["Nikolai Weh <niko.weh@gmail.com>"],
      licenses: ["MIT"],
      links: %{"GitHub" => "https://github.com/xou/elixlsx"}
    ]
  end
end


Add parenthesis to make deps an unabmiguous function call. Fixes #9

defmodule Elsol.Mixfile do
  use Mix.Project

  def project do
    [app: :elsol,
     version: "0.0.2",
     elixir: "~> 1.0",
     elixir_paths:  ["lib", "lib/elsol"],
     spec_paths: ["spec"],
     spec_pattern: "*_spec.exs",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps()]
  end

  # Configuration for the OTP application
  #
  # Type `mix help compile.app` for more information
  def application do
    [applications: [:logger, :httpoison]]
  end

  # Dependencies can be Hex packages:
  #
  #   {:mydep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
  #
  # Type `mix help deps` for more examples and options
  defp deps do
    [ {:espec, "~> 1.1.0", only: :test},
      {:httpoison, "~> 0.8.0"},
      {:poison, "~> 1.3"}
    ]
  end
end

defmodule Elsol.Mixfile do
  use Mix.Project

  def project do
    [app: :elsol,
     version: "0.0.2",
     elixir: "~> 1.0",
     elixir_paths:  ["lib", "lib/elsol"],
     spec_paths: ["spec"],
     spec_pattern: "*_spec.exs",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  # Configuration for the OTP application
  #
  # Type `mix help compile.app` for more information
  def application do
    [applications: [:logger, :httpoison]]
  end

  # Dependencies can be Hex packages:
  #
  #   {:mydep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
  #
  # Type `mix help deps` for more examples and options
  defp deps do
    [ {:espec, "~> 1.1.0", only: :test},
      {:httpoison, "~> 0.8.0"},
      {:poison, "~> 1.3"}
    ]
  end
end


Fix logical.

Fix logical.

defmodule Goncord.Plug.JwtCookie do
  def init(opts), do: opts

  def call(conn, _opts) do
    conn = Plug.Conn.fetch_cookies(conn)
    jwt_cookie = conn.cookies["jwt"]

    case Plug.Conn.get_req_header(conn, "authorization") do
      [] -> Plug.Conn.put_req_header(conn, "authorization", "Bearer #{jwt_cookie}")
      _  -> conn
    end
  end
end

defmodule Goncord.Plug.JwtCookie do
  def init(opts), do: opts

  def call(conn, _opts) do
    conn = Plug.Conn.fetch_cookies(conn)
    jwt_cookie = conn.cookies["jwt"]

    case Plug.Conn.get_req_header(conn, "authorization") do
      [] -> conn
      _  -> Plug.Conn.put_req_header(conn, "authorization", "Bearer #{jwt_cookie}")
    end
  end
end


Adds on_delete: :delete_all to all has_many in the User model.

defmodule Vutuv.User do
  use Vutuv.Web, :model
  use Arc.Ecto.Model

  schema "users" do
    field :first_name, :string
    field :last_name, :string
    field :middlename, :string
    field :nickname, :string
    field :honorific_prefix, :string
    field :honorific_suffix, :string
    field :gender, :string
    field :birthdate, Ecto.Date
    field :verified, :boolean, default: false
    field :avatar, Vutuv.Avatar.Type
    has_many :groups, Vutuv.Group, on_delete: :delete_all

    has_many :follower_connections, Vutuv.Connection, foreign_key: :followee_id, on_delete: :delete_all
    has_many :followers, through: [:follower_connections, :follower]

    has_many :followee_connections, Vutuv.Connection, foreign_key: :follower_id, on_delete: :delete_all
    has_many :followees, through: [:followee_connections, :followee]

    timestamps
  end

  @required_fields ~w()
  @optional_fields ~w(first_name last_name middlename nickname honorific_prefix honorific_suffix gender birthdate verified)

  @required_file_fields ~w()
  @optional_file_fields ~w(avatar)

  @doc """
  Creates a changeset based on the `model` and `params`.

  If no params are provided, an invalid changeset is returned
  with no validation performed.
  """
  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
    |> cast_attachments(params, @required_file_fields, @optional_file_fields)
    |> validate_first_name_or_last_name_or_nickname(params)
  end

  def validate_first_name_or_last_name_or_nickname(changeset, :empty) do
    changeset
  end

  def validate_first_name_or_last_name_or_nickname(changeset, _) do
    first_name = get_field(changeset, :first_name)
    last_name = get_field(changeset, :last_name)
    nickname = get_field(changeset, :nickname)

    if first_name || last_name || nickname do
      # No error if any of those 3 are present.
      #
      changeset
    else
      # All the 3 fields are nil.
      #
      message = "First name or last name or nickname must be present"
      changeset
      |> add_error(:first_name, message)
      |> add_error(:last_name, message)
      |> add_error(:nickname, message)
    end
  end
end

defmodule Vutuv.User do
  use Vutuv.Web, :model
  use Arc.Ecto.Model

  schema "users" do
    field :first_name, :string
    field :last_name, :string
    field :middlename, :string
    field :nickname, :string
    field :honorific_prefix, :string
    field :honorific_suffix, :string
    field :gender, :string
    field :birthdate, Ecto.Date
    field :verified, :boolean, default: false
    field :avatar, Vutuv.Avatar.Type
    has_many :groups, Vutuv.Group

    has_many :follower_connections, Vutuv.Connection, foreign_key: :followee_id
    has_many :followers, through: [:follower_connections, :follower]

    has_many :followee_connections, Vutuv.Connection, foreign_key: :follower_id
    has_many :followees, through: [:followee_connections, :followee]

    timestamps
  end

  @required_fields ~w()
  @optional_fields ~w(first_name last_name middlename nickname honorific_prefix honorific_suffix gender birthdate verified)

  @required_file_fields ~w()
  @optional_file_fields ~w(avatar)

  @doc """
  Creates a changeset based on the `model` and `params`.

  If no params are provided, an invalid changeset is returned
  with no validation performed.
  """
  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
    |> cast_attachments(params, @required_file_fields, @optional_file_fields)
    |> validate_first_name_or_last_name_or_nickname(params)
  end

  def validate_first_name_or_last_name_or_nickname(changeset, :empty) do
    changeset
  end

  def validate_first_name_or_last_name_or_nickname(changeset, _) do
    first_name = get_field(changeset, :first_name)
    last_name = get_field(changeset, :last_name)
    nickname = get_field(changeset, :nickname)

    if first_name || last_name || nickname do
      # No error if any of those 3 are present.
      #
      changeset
    else
      # All the 3 fields are nil.
      #
      message = "First name or last name or nickname must be present"
      changeset
      |> add_error(:first_name, message)
      |> add_error(:last_name, message)
      |> add_error(:nickname, message)
    end
  end
end