|
@@ -64,14 +64,22 @@ cast(Msg) -> gen_server:cast(?SERVER, Msg).
|
|
|
|
|
|
|
|
%% @doc Run a command
|
|
%% @doc Run a command
|
|
|
-spec(run([string()]) -> any()).
|
|
-spec(run([string()]) -> any()).
|
|
|
-run([]) -> usage();
|
|
|
|
|
|
|
+run([]) -> usage(), ok;
|
|
|
|
|
|
|
|
-run(["help"]) -> usage();
|
|
|
|
|
|
|
+run(["help"]) -> usage(), ok;
|
|
|
|
|
|
|
|
run([CmdS|Args]) ->
|
|
run([CmdS|Args]) ->
|
|
|
case lookup(list_to_atom(CmdS)) of
|
|
case lookup(list_to_atom(CmdS)) of
|
|
|
- [{Mod, Fun}] -> Mod:Fun(Args), ok;
|
|
|
|
|
- [] -> usage()
|
|
|
|
|
|
|
+ [{Mod, Fun}] ->
|
|
|
|
|
+ try Mod:Fun(Args) of
|
|
|
|
|
+ _ -> ok
|
|
|
|
|
+ catch
|
|
|
|
|
+ _:Reason ->
|
|
|
|
|
+ {error, Reason}
|
|
|
|
|
+ end;
|
|
|
|
|
+ [] ->
|
|
|
|
|
+ usage(),
|
|
|
|
|
+ {error, cmd_not_found}
|
|
|
end.
|
|
end.
|
|
|
|
|
|
|
|
%% @doc Lookup a command
|
|
%% @doc Lookup a command
|
|
@@ -86,8 +94,7 @@ lookup(Cmd) ->
|
|
|
usage() ->
|
|
usage() ->
|
|
|
?PRINT("Usage: ~s~n", [?MODULE]),
|
|
?PRINT("Usage: ~s~n", [?MODULE]),
|
|
|
[begin ?PRINT("~80..-s~n", [""]), Mod:Cmd(usage) end
|
|
[begin ?PRINT("~80..-s~n", [""]), Mod:Cmd(usage) end
|
|
|
- || {_, {Mod, Cmd}, _} <- ets:tab2list(?CMD_TAB)],
|
|
|
|
|
- ok.
|
|
|
|
|
|
|
+ || {_, {Mod, Cmd}, _} <- ets:tab2list(?CMD_TAB)].
|
|
|
|
|
|
|
|
%%--------------------------------------------------------------------
|
|
%%--------------------------------------------------------------------
|
|
|
%% gen_server callbacks
|
|
%% gen_server callbacks
|