defmodule Mix.Tasks.Mandrag.Build do use Mix.Task import Mandrag def run(_), do: build(location) defp build(:local) do message "Building locally." Mix.Task.run "compile" Mix.Shell.IO.cmd "npm install" Mix.Shell.IO.cmd "node_modules/brunch/bin/brunch build --production" Mix.Task.run "phoenix.digest", [] Mix.Task.run "release", [] end defp build(:remote) do message "Building on target." ssh "cd #{name} && git pull" scp "config/prod.secret.exs", "#{name}/config/prod.secret.exs" ssh "cd #{name} && MIX_ENV=#{Mix.env} mix deps.get" ssh "cd #{name} && MIX_ENV=#{Mix.env} mix compile" ssh "cd #{name} && npm install" ssh "cd #{name} && node_modules/brunch/bin/brunch build --production" ssh "cd #{name} && MIX_ENV=#{Mix.env} mix phoenix.digest" ssh "cd #{name} && MIX_ENV=#{Mix.env} mix release" end end