diff --git a/rebar.config b/rebar.config index 2485ce6..ae4abe5 100644 --- a/rebar.config +++ b/rebar.config @@ -9,21 +9,6 @@ {tag, "2.8.0"}}} ]}. -{escript_incl_apps, [aesophia, aebytecode, getopt]}. -{escript_main_app, aesophia}. -{escript_name, aesophia}. -{escript_emu_args, "%%! \n"}. -{provider_hooks, [{post, [{compile, escriptize}]}]}. - -{post_hooks, [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - escriptize, - "cp \"$REBAR_BUILD_DIR/bin/aesophia\" ./aesophia"}, - {"win32", - escriptize, - "robocopy \"%REBAR_BUILD_DIR%/bin/\" ./ aesophia* " - "/njs /njh /nfl /ndl & exit /b 0"} % silence things - ]}. - {dialyzer, [ {warnings, [unknown]}, {plt_apps, all_deps}, diff --git a/src/aesophia.erl b/src/aesophia.erl deleted file mode 100644 index 277b444..0000000 --- a/src/aesophia.erl +++ /dev/null @@ -1,78 +0,0 @@ --module(aesophia). - --export([main/1]). - --define(OPT_SPEC, - [ {src_file, undefined, undefined, string, "Sophia source code file"} - , {version, $V, "version", undefined, "Print compiler version"} - , {verbose, $v, "verbose", undefined, "Verbose output"} - , {help, $h, "help", undefined, "Show this message"} - , {outfile, $o, "out", string, "Output file (experimental)"} ]). - -usage() -> - getopt:usage(?OPT_SPEC, "aesophia"). - -main(Args) -> - case getopt:parse(?OPT_SPEC, Args) of - {ok, {Opts, []}} -> - case Opts of - [version] -> - print_vsn(); - [help] -> - usage(); - _ -> - compile(Opts) - end; - - {ok, {_, NonOpts}} -> - io:format("Can't understand ~p\n\n", [NonOpts]), - usage(); - - {error, {Reason, Data}} -> - io:format("Error: ~s ~p\n\n", [Reason, Data]), - usage() - end. - - -compile(Opts) -> - case proplists:get_value(src_file, Opts, undefined) of - undefined -> - io:format("Error: no input source file\n\n"), - usage(); - File -> - compile(File, Opts) - end. - -compile(File, Opts) -> - Verbose = proplists:get_value(verbose, Opts, false), - OutFile = proplists:get_value(outfile, Opts, undefined), - - try - Res = aeso_compiler:file(File, [pp_ast || Verbose]), - write_outfile(OutFile, Res), - io:format("\nCompiled successfully!\n") - catch - %% The compiler errors. - error:{type_errors, Errors} -> - io:format("\n~s\n", [string:join(["** Type errors\n" | Errors], "\n")]); - error:{parse_errors, Errors} -> - io:format("\n~s\n", [string:join(["** Parse errors\n" | Errors], "\n")]); - error:{code_errors, Errors} -> - ErrorStrings = [ io_lib:format("~p", [E]) || E <- Errors ], - io:format("\n~s\n", [string:join(["** Code errors\n" | ErrorStrings], "\n")]); - %% General programming errors in the compiler. - error:Error -> - Where = hd(erlang:get_stacktrace()), - ErrorString = io_lib:format("Error: ~p in\n ~p", [Error,Where]), - io:format("\n~s\n", [ErrorString]) - end. - -write_outfile(undefined, _) -> ok; -write_outfile(Out, ResMap) -> - %% Lazy approach - file:write_file(Out, term_to_binary(ResMap)), - io:format("Output written to: ~s\n", [Out]). - -print_vsn() -> - {ok, Vsn} = aeso_compiler:version(), - io:format("Compiler version: ~s\n", [Vsn]).