|
|
@@ -0,0 +1,41 @@
|
|
|
+#!/usr/bin/env escript
|
|
|
+
|
|
|
+%% This script is only used at build time to generate the merged desc.en.hocon in JSON format
|
|
|
+%% but NOT the file generated to _build/$PROFILE/lib/emqx_dashboard/priv (which is HOCON format).
|
|
|
+%%
|
|
|
+%% The generated JSON file is used as the source of truth when translating to other languages.
|
|
|
+
|
|
|
+-mode(compile).
|
|
|
+
|
|
|
+-define(RED, "\e[31m").
|
|
|
+-define(RESET, "\e[39m").
|
|
|
+
|
|
|
+main(_) ->
|
|
|
+ try
|
|
|
+ _ = hocon:module_info()
|
|
|
+ catch
|
|
|
+ _:_ ->
|
|
|
+ fail("hocon module not found, please make sure the project is compiled")
|
|
|
+ end,
|
|
|
+ %% wildcard all .hocon files in rel/i18n
|
|
|
+ Files = filelib:wildcard("rel/i18n/*.hocon"),
|
|
|
+ case Files of
|
|
|
+ [_ | _] ->
|
|
|
+ ok;
|
|
|
+ [] ->
|
|
|
+ fail("No .hocon files found in rel/i18n")
|
|
|
+ end,
|
|
|
+ case hocon:files(Files) of
|
|
|
+ {ok, Map} ->
|
|
|
+ JSON = jiffy:encode(Map),
|
|
|
+ io:format("~s~n", [JSON]);
|
|
|
+ {error, Reason} ->
|
|
|
+ fail("~p~n", [Reason])
|
|
|
+ end.
|
|
|
+
|
|
|
+fail(Str) ->
|
|
|
+ fail(Str, []).
|
|
|
+
|
|
|
+fail(Str, Args) ->
|
|
|
+ io:format(standard_error, ?RED ++ "ERROR: " ++ Str ++ ?RESET ++ "~n", Args),
|
|
|
+ halt(1).
|