Skip to content

Commit a41a216

Browse files
committed
improvement: add igniter install notices.
1 parent 6273153 commit a41a216

File tree

1 file changed

+49
-14
lines changed

1 file changed

+49
-14
lines changed

lib/mix/tasks/ash_typescript.install.ex

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,22 @@ if Code.ensure_loaded?(Igniter) do
3232
|> create_rpc_controller(app_name, web_module)
3333
|> add_rpc_routes(web_module)
3434

35-
if react_enabled do
36-
igniter
37-
|> create_package_json()
38-
|> create_react_index()
39-
|> update_tsconfig()
40-
|> update_esbuild_config(app_name)
41-
|> create_or_update_page_controller(web_module)
42-
|> create_index_template(web_module)
43-
|> add_page_index_route(web_module)
44-
else
45-
igniter
46-
end
35+
igniter =
36+
if react_enabled do
37+
igniter
38+
|> create_package_json()
39+
|> create_react_index()
40+
|> update_tsconfig()
41+
|> update_esbuild_config(app_name)
42+
|> create_or_update_page_controller(web_module)
43+
|> create_index_template(web_module)
44+
|> add_page_index_route(web_module)
45+
else
46+
igniter
47+
end
48+
49+
igniter
50+
|> add_next_steps_notice(react_enabled)
4751
end
4852

4953
defp create_rpc_controller(igniter, app_name, web_module) do
@@ -461,9 +465,7 @@ if Code.ensure_loaded?(Igniter) do
461465
needs_jsx = not String.contains?(content, ~s("jsx":))
462466
needs_interop = not String.contains?(content, ~s("esModuleInterop":))
463467

464-
465468
if needs_jsx or needs_interop do
466-
467469
updated_content = content
468470

469471
updated_content =
@@ -671,6 +673,39 @@ if Code.ensure_loaded?(Igniter) do
671673
_ -> false
672674
end
673675
end
676+
677+
defp add_next_steps_notice(igniter, react_enabled) do
678+
base_notice = """
679+
🎉 AshTypescript has been successfully installed!
680+
681+
Next Steps:
682+
1. Configure your domain with the AshTypescript.Rpc extension
683+
2. Add typescript_rpc configurations for your resources
684+
3. Generate TypeScript types with: mix ash_typescript.codegen
685+
4. Start using type-safe RPC functions in your frontend!
686+
687+
📚 Documentation: https://hexdocs.pm/ash_typescript
688+
"""
689+
690+
react_notice = """
691+
🎉 AshTypescript with React has been successfully installed!
692+
693+
Your Phoenix + React + TypeScript setup is ready!
694+
695+
Next Steps:
696+
1. Install frontend dependencies: cd assets && npm install
697+
2. Configure your domain with the AshTypescript.Rpc extension
698+
3. Add typescript_rpc configurations for your resources
699+
4. Start your Phoenix server: mix phx.server
700+
5. Check out http://localhost:4000/ash-typescript for how to get started!
701+
702+
📚 Documentation: https://hexdocs.pm/ash_typescript
703+
"""
704+
705+
notice = if react_enabled, do: react_notice, else: base_notice
706+
707+
Igniter.add_notice(igniter, notice)
708+
end
674709
end
675710
else
676711
defmodule Mix.Tasks.AshTypescript.Install do

0 commit comments

Comments
 (0)