Skip to content

Commit 8b6a8be

Browse files
committed
feat: use arizona_nova_live:live/1 for --arizona routes (no controller or copy script needed)
1 parent 694cb16 commit 8b6a8be

File tree

2 files changed

+10
-59
lines changed

2 files changed

+10
-59
lines changed

src/rebar3_nova_new.erl

Lines changed: 7 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -618,10 +618,11 @@ generate_router(Name, #{arizona := true}) ->
618618
" prefix => \"\",\n",
619619
" security => false,\n",
620620
" routes => [\n",
621-
" {\"/\", fun ",
621+
" {\"/\", arizona_nova_live:live(",
622622
Name,
623-
"_main_controller:index/1, #{methods => [get]}},\n",
623+
"_home_view), #{methods => [get]}},\n",
624624
" {\"/heartbeat\", fun(_) -> {status, 200} end, #{methods => [get]}},\n",
625+
" {\"/live\", arizona_nova_websocket, #{protocol => ws}},\n",
625626
" {\"/assets/[...]\", \"static/assets\"}\n",
626627
" ]\n",
627628
" }\n",
@@ -669,38 +670,9 @@ generate_controller(Name, #{lfe := true}) ->
669670
" `#(status 200 #M() \"nova is running!\"))\n"
670671
],
671672
rebar3_nova_utils:write_file(Path, Content);
672-
generate_controller(Name, #{arizona := true}) ->
673-
Path = filename:join([Name, "src", "controllers", Name ++ "_main_controller.erl"]),
674-
Content = [
675-
"-module(",
676-
Name,
677-
"_main_controller).\n\n",
678-
"-export([index/1]).\n\n",
679-
"index(_Req) ->\n",
680-
" Html = <<\"<!DOCTYPE html>\"\n",
681-
" \"<html lang=\\\"en\\\">\"\n",
682-
" \"<head>\"\n",
683-
" \"<meta charset=\\\"UTF-8\\\">\"\n",
684-
" \"<meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\">\"\n",
685-
" \"<title>",
686-
Name,
687-
"</title>\"\n",
688-
" \"<link rel=\\\"stylesheet\\\" href=\\\"/assets/app.css\\\">\"\n",
689-
" \"</head>\"\n",
690-
" \"<body>\"\n",
691-
" \"<div id=\\\"app\\\"><h1>Welcome to ",
692-
Name,
693-
"</h1>\"\n",
694-
" \"<p>Powered by Nova + Arizona</p></div>\"\n",
695-
" \"<script type=\\\"module\\\">\"\n",
696-
" \"import Arizona from '/assets/js/arizona.min.js';\"\n",
697-
" \"globalThis.arizona = new Arizona();\"\n",
698-
" \"arizona.connect('/live');\"\n",
699-
" \"</script>\"\n",
700-
" \"</body></html>\">>,\n",
701-
" {status, 200, #{<<\"content-type\">> => <<\"text/html\">>}, Html}.\n"
702-
],
703-
rebar3_nova_utils:write_file(Path, Content);
673+
generate_controller(_Name, #{arizona := true}) ->
674+
%% No controller needed — arizona_nova_live:live/1 handles rendering
675+
ok;
704676
generate_controller(Name, _Flags) ->
705677
Path = filename:join([Name, "src", "controllers", Name ++ "_main_controller.erl"]),
706678
Content = [
@@ -1134,8 +1106,7 @@ generate_docker_compose(Name) ->
11341106

11351107
maybe_generate_arizona(Name, #{arizona := true}) ->
11361108
generate_home_view(Name),
1137-
generate_app_css(Name),
1138-
generate_arizona_copy_script(Name);
1109+
generate_app_css(Name);
11391110
maybe_generate_arizona(_Name, _Flags) ->
11401111
ok.
11411112

@@ -1214,20 +1185,6 @@ generate_app_css(Name) ->
12141185
],
12151186
rebar3_nova_utils:write_file(Path, Content).
12161187

1217-
generate_arizona_copy_script(Name) ->
1218-
Path = filename:join([Name, "copy_arizona_assets.sh"]),
1219-
Content = [
1220-
"#!/bin/sh\n",
1221-
"# Copy Arizona JS assets from arizona_core dep to app priv\n",
1222-
"SRC=_build/default/lib/arizona_core/priv/static/assets/js\n",
1223-
"DEST=priv/static/assets/js\n",
1224-
"mkdir -p \"$DEST\"\n",
1225-
"cp \"$SRC/arizona.min.js\" \"$DEST/arizona.min.js\"\n",
1226-
"echo \"Copied Arizona JS to $DEST\"\n"
1227-
],
1228-
rebar3_nova_utils:write_file(Path, Content),
1229-
file:change_mode(Path, 8#755).
1230-
12311188
%%======================================================================
12321189
%% maybe_generate_ci
12331190
%%======================================================================
@@ -1302,11 +1259,4 @@ print_summary(Name, Flags) ->
13021259
false ->
13031260
ok
13041261
end,
1305-
case maps:get(arizona, Flags) of
1306-
true ->
1307-
rebar_api:info(" rebar3 compile~n", []),
1308-
rebar_api:info(" ./copy_arizona_assets.sh~n", []);
1309-
false ->
1310-
ok
1311-
end,
13121262
rebar_api:info(" rebar3 nova serve~n", []).

test/rebar3_nova_new_SUITE.erl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ arizona_flag(_Config) ->
154154
assert_not_contains(RebarConfig, "erlydtl"),
155155

156156
Router = read_file(Name, "src/testapp_arizona_router.erl"),
157-
assert_contains(Router, "_main_controller:index/1"),
157+
assert_contains(Router, "arizona_nova_live:live("),
158+
assert_contains(Router, "arizona_nova_websocket"),
158159

159160
DevConfig = read_file(Name, "config/dev_sys.config.src"),
160161
assert_contains(DevConfig, "arizona_core"),
@@ -251,7 +252,7 @@ combined_kura_arizona_ci(_Config) ->
251252
assert_not_contains(RebarConfig, "erlydtl"),
252253

253254
Router = read_file(Name, "src/testapp_combo_router.erl"),
254-
assert_contains(Router, "_main_controller:index/1"),
255+
assert_contains(Router, "arizona_nova_live:live("),
255256

256257
SupErl = read_file(Name, "src/testapp_combo_sup.erl"),
257258
assert_contains(SupErl, "supervisor"),

0 commit comments

Comments
 (0)