Packages

phoenix_kit

1.2.8
1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib mix tasks phoenix_kit.install.ex
Raw

lib/mix/tasks/phoenix_kit.install.ex

if Code.ensure_loaded?(Igniter.Mix.Task) do
defmodule Mix.Tasks.PhoenixKit.Install do
@moduledoc """
Igniter installer for PhoenixKit.
This task automatically installs PhoenixKit into a Phoenix application by:
1. Auto-detecting and configuring Ecto repo
2. Setting up mailer configuration for development and production
3. Modifying the router to include PhoenixKit routes
## Usage
```bash
mix phoenix_kit.install
```
With custom options:
```bash
mix phoenix_kit.install --repo MyApp.Repo --router-path lib/my_app_web/router.ex
```
## Options
* `--repo` - Specify Ecto repo module (auto-detected if not provided)
* `--router-path` - Specify custom path to router.ex file
* `--prefix` - Specify PostgreSQL schema prefix (defaults to "public")
* `--create-schema` - Create schema if using custom prefix (default: true for non-public prefixes)
* `--theme-enabled` - Enable modern daisyUI 5 + Tailwind CSS 4 theme system with 35+ themes
## Auto-detection
The installer will automatically:
- Detect Ecto repo from `:ecto_repos` config or common naming patterns (MyApp.Repo)
- Find main router using Phoenix conventions (MyAppWeb.Router)
- Configure Swoosh.Adapters.Local for development in config/dev.exs
- Provide production mailer setup instructions
## Note about warnings
You may see a compiler warning about "unused import PhoenixKitWeb.Integration".
This is normal behavior for Elixir macros and can be safely ignored.
The `phoenix_kit_routes()` macro is properly used and will expand correctly.
"""
@shortdoc "Install PhoenixKit into a Phoenix application"
use Igniter.Mix.Task
alias PhoenixKit.Install.{
AssetRebuild,
CssIntegration,
DemoFiles,
LayoutConfig,
MailerConfig,
MigrationStrategy,
RepoDetection,
RouterIntegration
}
alias PhoenixKit.Utils.Routes
@impl Igniter.Mix.Task
def info(_argv, _composing_task) do
%Igniter.Mix.Task.Info{
group: :phoenix_kit,
example: "mix phoenix_kit.install --repo MyApp.Repo --prefix auth",
positional: [],
schema: [
router_path: :string,
repo: :string,
prefix: :string,
create_schema: :boolean,
theme_enabled: :boolean,
skip_assets: :boolean
],
aliases: [
r: :router_path,
repo: :repo,
p: :prefix
]
}
end
@impl Igniter.Mix.Task
def igniter(igniter) do
opts = igniter.args.options
igniter
|> RepoDetection.add_phoenix_kit_configuration(opts[:repo])
|> MailerConfig.add_mailer_configuration()
|> LayoutConfig.add_layout_integration_configuration()
|> CssIntegration.add_automatic_css_integration()
|> DemoFiles.copy_test_demo_files()
|> RouterIntegration.add_router_integration(opts[:router_path])
|> MigrationStrategy.create_phoenix_kit_migration_only(opts)
|> add_completion_notice()
end
# Override run/1 to handle post-igniter interactive migration
def run(argv) do
# Store options in process dictionary for later use
opts =
OptionParser.parse(argv,
switches: [
router_path: :string,
repo: :string,
prefix: :string,
create_schema: :boolean,
theme_enabled: :boolean,
skip_assets: :boolean
],
aliases: [
r: :router_path,
repo: :repo,
p: :prefix
]
)
Process.put(:phoenix_kit_install_opts, elem(opts, 1))
# Run standard igniter process
result = super(argv)
# After igniter is done, handle interactive migration
MigrationStrategy.handle_interactive_migration_after_config(elem(opts, 1))
# Always rebuild assets unless explicitly skipped
unless Keyword.get(elem(opts, 1), :skip_assets, false) do
AssetRebuild.check_and_rebuild(verbose: true)
end
result
end
# Add completion notice with essential next steps (reduced duplication)
defp add_completion_notice(igniter) do
notice = """
✅ PhoenixKit ready! Next:
• mix ecto.migrate
• mix phx.server
• Visit #{Routes.path("/users/register")}
• Test: /test-current-user, /test-ensure-auth
"""
Igniter.add_notice(igniter, notice)
end
end
# Fallback module for when Igniter is not available
else
defmodule Mix.Tasks.PhoenixKit.Install do
@moduledoc """
PhoenixKit installation task.
This task requires the Igniter library to be available. Please add it to your mix.exs:
{:igniter, "~> 0.6.27"}
Then run: mix deps.get
"""
@shortdoc "Install PhoenixKit (requires Igniter)"
use Mix.Task
def run(_args) do
Mix.shell().error("""
❌ PhoenixKit installation requires the Igniter library.
Please add Igniter to your mix.exs dependencies:
def deps do
[
{:igniter, "~> 0.6.27"}
# ... your other dependencies
]
end
Then run:
mix deps.get
mix phoenix_kit.install
For more information, visit: https://hex.pm/packages/igniter
""")
end
end
end