Packages

Adds helpful extras to Guardian like default mailer support, as well as out of the box controllers and routes

Current section

Files

Jump to
sentinel lib mix tasks install.ex
Raw

lib/mix/tasks/install.ex

defmodule Mix.Tasks.Sentinel.Install do
@moduledoc """
Used to initially setup and configure sentinel
"""
@shortdoc "Used to initially setup and configure sentinel"
use Mix.Task
def run(_) do
IO.puts "Creating migrations"
create_migrations
IO.puts "You should go in and ensure your application is configured correctly"
end
defp create_migrations do
if File.exists?("priv/repo/migrations") do
migrations = Path.wildcard("priv/repo/migrations/*.exs")
migrations
|> Enum.find(fn(migration) ->
String.contains?(migration, "create_user")
end) |> create_user_migration
migrations
|> Enum.find(fn(migration) ->
String.contains?(migration, "guardian")
end) |> create_guardian_token_migration
migrations
|> Enum.find(fn(migration) ->
String.contains?(migration, "ueberauth")
end) |> create_ueberauth_migration
else
create_user_migration
create_guardian_token_migration
create_ueberauth_migration
end
end
defp create_user_migration do
generate_user_migration
end
defp create_user_migration(nil) do
generate_user_migration
end
defp create_user_migration(_) do
IO.puts "A user creation migration appears to already exist"
end
defp generate_user_migration do
Mix.Tasks.Phoenix.Gen.Model.run([
"User",
"users",
"email:string",
"hashed_confirmation_token:text",
"confirmed_at:datetime",
"unconfirmed_email:string"
])
Process.sleep(1001)
user_path = "web/models/user.ex"
old_content =
user_path
|> File.stream!
|> Enum.map(fn(line) -> line end)
|> Enum.slice(0..17)
new_content =
"deps/sentinel/test/support/sentinel_user.exs"
|> File.stream!
|> Enum.map(fn(line) -> line end)
|> Enum.slice(18..100)
user_path
|> File.write!(old_content ++ new_content)
end
defp create_guardian_token_migration do
generate_token_migration
end
defp create_guardian_token_migration(nil) do
generate_token_migration
end
defp create_guardian_token_migration(_migration) do
IO.puts "A guardian token migration appears to already exist"
end
defp generate_token_migration do
Mix.Tasks.Ecto.Gen.Migration.run(["AddGuardianDbTokens"])
Process.sleep(1001)
migration_path =
"priv/repo/migrations/*.exs"
|> Path.wildcard
|> Enum.find(fn(migration) ->
String.contains?(migration, "guardian")
end)
migration_content =
migration_path
|> File.stream!
|> Enum.map(fn(line) -> line end)
|> Enum.slice(0..2)
new_content =
"deps/sentinel/test/support/migrations/guardian_db_migration.exs"
|> File.stream!
|> Enum.map(fn(line) -> line end)
|> Enum.slice(3..100)
migration_path
|> File.write!(migration_content ++ new_content)
end
defp create_ueberauth_migration do
generate_ueberauth
end
defp create_ueberauth_migration(nil) do
generate_ueberauth
end
defp create_ueberauth_migration(_migration) do
IO.puts "An ueberuath migration appears to already exist"
end
defp generate_ueberauth do
Mix.Tasks.Ecto.Gen.Migration.run(["AddUeberauth"])
Process.sleep(1001)
migration_path =
"priv/repo/migrations/*.exs"
|> Path.wildcard
|> Enum.find(fn(migration) ->
String.contains?(migration, "ueberauth")
end)
migration_content =
migration_path
|> File.stream!
|> Enum.map(fn(line) -> line end)
|> Enum.slice(0..2)
new_content =
"deps/sentinel/test/support/migrations/ueberauth_migration.exs"
|> File.stream!
|> Enum.map(fn(line) -> line end)
|> Enum.slice(3..100)
migration_path
|> File.write!(migration_content ++ new_content)
end
end