Packages
gpb
4.2.2
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}} ->
gpb_compile:c(Opts, 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
true = code:add_pathz(EBinDir).
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().