Packages
gpb
4.21.7
5.0.0
4.21.7
4.21.6
4.21.5
4.21.4
4.21.3
4.21.2
4.21.1
4.21.0
4.20.0
4.19.9
4.19.8
4.19.7
4.19.6
4.19.5
4.19.4
4.19.3
4.19.2
4.19.1
4.19.0
4.18.0
4.17.7
4.17.6
4.17.5
4.17.3
4.17.2
4.17.1
4.17.0
4.16.2
4.16.1
4.16.0
4.15.2
4.15.1
4.14.2
4.14.1
4.14.0
4.13.0
4.12.0
4.11.2
4.11.1
4.11.0
4.10.6
4.10.5
4.10.4
4.10.3
4.10.2
4.10.1
4.10.0
4.9.3
4.9.2
4.9.1
4.9.0
4.8.0
4.7.3
4.7.2
4.7.1
4.7.0
4.6.0
4.5.1
4.5.0
4.4.1
4.4.0
4.3.3
4.3.2
4.3.1
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.9
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.2
4.0.1
4.0.0
3.28.1
3.28.0
3.27.7
3.27.6
3.27.5
3.27.4
3.27.3
3.27.2
3.27.1
3.27.0
3.26.8
3.26.7
3.26.6
3.26.5
3.26.4
3.26.3
3.26.2
3.26.1
3.26.0
3.25.2
3.25.1
3.25.0
3.24.4
3.24.3
3.24.2
3.24.1
3.24.0
3.23.2
3.23.1
3.23.0
3.22.5
3.22.4
3.22.3
3.22.2
3.22.1
3.22.0
3.21.3
3.21.2
3.21.1
3.21.0
3.20.3
3.20.2
3.20.0
3.19.0
3.18.10
3.18.9
3.18.8
3.18.7
3.18.6
3.18.5
3.18.4
3.18.3
3.18.2
3.18.1
3.18.0
3.17.13
3.17.12
3.17.11
3.17.10
3.17.9
3.17.8
3.17.5
3.17.4
3.17.3
3.17.2
3.17.1
3.17.0
3.16.0
3.15.0
3.14.0
3.13.0
3.12.2
3.12.1
3.12.0
3.11.0
A compiler for Google protocol buffer definitions files for Erlang.
Current section
Files
Jump to
Current section
Files
bin/protoc-erl
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -noinput +B
main(Argv) ->
setup_code_path(),
case gpb_compile:parse_opts_and_args(Argv) of
{ok, {Opts, Files}} ->
Opts1 = Opts ++ [{show_usage_fn, fun() -> show_usage() end}],
gpb_compile:c(Opts1, Files); %% will halt
{error, Reason} ->
io:format("Error: ~s.~n", [Reason]),
show_usage(),
halt(1)
end.
setup_code_path() ->
ScriptName = escript:script_name(),
%% check symbolic link
RawFile = find_raw_file(ScriptName),
BinDir = filename:dirname(RawFile),
EBinDir = filename:join([BinDir, "..", "ebin"]),
%% add the gpb ebin path to we can have access to gpb_compile
case code:add_pathz(EBinDir) of
true ->
try gpb_compile:module_info()
catch error:undef ->
io:format(
"Found dir ~p, but no usable gpb_compile.beam,~n"
"please verify that gpb has been built properly.~n",
[EBinDir]),
halt(1)
end,
ok;
{error, bad_directory} ->
io:format(
"Cannot find dir ~p~n"
"please verify that gpb has been built properly.~n",
[EBinDir]),
halt(1)
end.
find_raw_file(Name) ->
find_raw_file(Name, file:read_link(Name)).
find_raw_file(Name, {error, _}) ->
Name;
find_raw_file(Name, {ok, Name1}) ->
%% for relative symbolic link
%% if Name1 is absolute, then AbsoluteName is Name1
DirName = filename:dirname(Name),
AbsoluteName = filename:join(DirName, Name1),
find_raw_file(AbsoluteName, file:read_link(AbsoluteName)).
show_usage() ->
io:format("Usage: ~s [options] X.proto [...]~n",
[filename:basename(escript:script_name())]),
gpb_compile:show_args().