-module(refrakt@cli@new). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/refrakt/cli/new.gleam"). -export([run/2]). -file("src/refrakt/cli/new.gleam", 153). -spec parse_db_flag(list(binary())) -> refrakt@cli@types:db_choice(). parse_db_flag(Flags) -> case Flags of [<<"--db"/utf8>>, <<"postgres"/utf8>> | _] -> postgres; [<<"--db"/utf8>>, <<"sqlite"/utf8>> | _] -> sqlite; [<<"--db"/utf8>>, <<"pg"/utf8>> | _] -> postgres; [<<"--no-db"/utf8>> | _] -> no_db; [_ | Rest] -> parse_db_flag(Rest); [] -> no_db end. -file("src/refrakt/cli/new.gleam", 11). -spec run(binary(), list(binary())) -> nil. run(Path, Flags) -> Db = parse_db_flag(Flags), Name = case gleam@string:split(Path, <<"/"/utf8>>) of [] -> Path; Parts -> Last@1 = case gleam@list:last(Parts) of {ok, Last} -> Last; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"refrakt/cli/new"/utf8>>, function => <<"run"/utf8>>, line => 18, value => _assert_fail, start => 470, 'end' => 508, pattern_start => 481, pattern_end => 489}) end, Last@1 end, gleam_stdlib:println( <<<<"Creating "/utf8, Path/binary>>/binary, "..."/utf8>> ), gleam_stdlib:println(<<""/utf8>>), Dirs = [Path, <>, <<<>/binary, Name/binary>>, <<<<<>/binary, Name/binary>>/binary, "/web"/utf8>>, <<<<<>/binary, Name/binary>>/binary, "/web/layouts"/utf8>>, <<<<<>/binary, Name/binary>>/binary, "/web/components"/utf8>>, <<<<<>/binary, Name/binary>>/binary, "/web/forms"/utf8>>, <<<<<>/binary, Name/binary>>/binary, "/web/middleware"/utf8>>, <<<<<>/binary, Name/binary>>/binary, "/domain"/utf8>>, <<<<<>/binary, Name/binary>>/binary, "/data"/utf8>>, <>, <>, <>, <<<<<>/binary, Name/binary>>/binary, "/web"/utf8>>], gleam@list:each( Dirs, fun(Dir) -> _assert_subject = simplifile:create_directory_all(Dir), case _assert_subject of {ok, _} -> _assert_subject; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"refrakt/cli/new"/utf8>>, function => <<"run"/utf8>>, line => 45, value => _assert_fail@1, start => 1172, 'end' => 1227, pattern_start => 1183, pattern_end => 1188}) end end ), Files = [{<>, refrakt@cli@templates:gleam_toml(Name, Db)}, {<>, refrakt@cli@templates:gitignore()}, {<>, refrakt@cli@templates:readme(Name)}, {<<<<<>/binary, Name/binary>>/binary, ".gleam"/utf8>>, refrakt@cli@templates:main_module(Name, Db)}, {<<<<<>/binary, Name/binary>>/binary, "/config.gleam"/utf8>>, refrakt@cli@templates:config_module(Name)}, {<<<<<>/binary, Name/binary>>/binary, "/context.gleam"/utf8>>, refrakt@cli@templates:context_module(Name, Db)}, {<<<<<>/binary, Name/binary>>/binary, "/router.gleam"/utf8>>, refrakt@cli@templates:router_module(Name, Db)}, {<<<<<>/binary, Name/binary>>/binary, "/web/home_handler.gleam"/utf8>>, refrakt@cli@templates:home_handler(Name)}, {<<<<<>/binary, Name/binary>>/binary, "/web/error_handler.gleam"/utf8>>, refrakt@cli@templates:error_handler(Name)}, {<<<<<>/binary, Name/binary>>/binary, "/web/layouts/root_layout.gleam"/utf8>>, refrakt@cli@templates:root_layout()}, {<<<<<>/binary, Name/binary>>/binary, "/web/components/flash.gleam"/utf8>>, refrakt@cli@templates:flash_component()}, {<>, refrakt@cli@templates:app_css()}, {<>, refrakt@cli@templates:app_js()}, {<<<<<>/binary, Name/binary>>/binary, "_test.gleam"/utf8>>, refrakt@cli@templates:main_test(Name)}, {<<<<<>/binary, Name/binary>>/binary, "/web/home_handler_test.gleam"/utf8>>, refrakt@cli@templates:home_handler_test(Name)}], Files@1 = case Db of postgres -> [{<<<<<>/binary, Name/binary>>/binary, "/data/repo.gleam"/utf8>>, refrakt@cli@templates:repo_module(Name, Db)} | Files]; sqlite -> [{<<<<<>/binary, Name/binary>>/binary, "/data/repo.gleam"/utf8>>, refrakt@cli@templates:repo_module(Name, Db)} | Files]; no_db -> Files end, gleam@list:each( Files@1, fun(File) -> {File_path, Content} = File, _assert_subject@1 = simplifile:write(File_path, Content), case _assert_subject@1 of {ok, _} -> _assert_subject@1; _assert_fail@2 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"refrakt/cli/new"/utf8>>, function => <<"run"/utf8>>, line => 102, value => _assert_fail@2, start => 2899, 'end' => 2954, pattern_start => 2910, pattern_end => 2915}) end end ), Gleam_paths = gleam@list:filter_map( Files@1, fun(File@1) -> {Fp, _} = File@1, case gleam_stdlib:string_ends_with(Fp, <<".gleam"/utf8>>) of true -> {ok, Fp}; false -> {error, nil} end end ), refrakt_format_ffi:format_files(Gleam_paths), gleam_stdlib:println(<<<<" "/utf8, Path/binary>>/binary, "/"/utf8>>), gleam_stdlib:println(<<" gleam.toml"/utf8>>), gleam_stdlib:println(<<" .gitignore"/utf8>>), gleam_stdlib:println(<<" README.md"/utf8>>), gleam_stdlib:println(<<" src/"/utf8>>), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, ".gleam"/utf8>> ), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/config.gleam"/utf8>> ), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/router.gleam"/utf8>> ), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/web/"/utf8>> ), gleam_stdlib:println(<<" home_handler.gleam"/utf8>>), gleam_stdlib:println(<<" error_handler.gleam"/utf8>>), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/web/layouts/"/utf8>> ), gleam_stdlib:println(<<" root_layout.gleam"/utf8>>), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/web/components/"/utf8>> ), gleam_stdlib:println(<<" flash.gleam"/utf8>>), case Db of postgres -> gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/data/"/utf8>> ), gleam_stdlib:println(<<" repo.gleam"/utf8>>); sqlite -> gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/data/"/utf8>> ), gleam_stdlib:println(<<" repo.gleam"/utf8>>); no_db -> nil end, gleam_stdlib:println(<<" priv/static/"/utf8>>), gleam_stdlib:println(<<" css/app.css"/utf8>>), gleam_stdlib:println(<<" js/app.js"/utf8>>), gleam_stdlib:println(<<" test/"/utf8>>), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "_test.gleam"/utf8>> ), gleam_stdlib:println( <<<<" "/utf8, Name/binary>>/binary, "/web/"/utf8>> ), gleam_stdlib:println(<<" home_handler_test.gleam"/utf8>>), gleam_stdlib:println(<<""/utf8>>), gleam_stdlib:println(<<"Run your app:"/utf8>>), gleam_stdlib:println(<<" cd "/utf8, Path/binary>>), gleam_stdlib:println(<<" gleam run"/utf8>>), gleam_stdlib:println(<<" → http://localhost:4000"/utf8>>).