From 36af6bbbedc849c88e0539cf92ec658284201769 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Thu, 9 Nov 2017 21:43:42 +0100 Subject: [PATCH] Renamed brod to brod_cli, then created a new shell script named brod. Made it to lookup erts in parent dir, so a user without erts in PATH can execut `./brod/bin/brod ` directly instead of `/brod/bin/erts-*/bin/escript /brod/bin/brod ` --- .gitignore | 3 +-- Makefile | 9 ++++++--- changelog.md | 3 +++ scripts/.gitignore | 1 - scripts/brod | 22 ++++++++++++++++++++++ src/brod.erl | 9 --------- src/brod_cli.erl | 4 +++- 7 files changed, 35 insertions(+), 16 deletions(-) create mode 100755 scripts/brod diff --git a/.gitignore b/.gitignore index 79dd832b..9786f4db 100644 --- a/.gitignore +++ b/.gitignore @@ -7,14 +7,13 @@ cover/ test/*.beam test/ct.cover.spec brod.d -scripts/brod +scripts/brod_cli .brod.plt .erlang.mk *.coverdata ct.coverdata sys.config xrefr -brod brod.plt _build/ _rel/ diff --git a/Makefile b/Makefile index fd5c9557..2e9400b7 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,8 @@ dep_supervisor3_commit = 1.1.5 dep_kafka_protocol_commit = 1.1.0 dep_docopt = git https://github.com/zmstone/docopt-erl.git 0.1.3 -ESCRIPT_FILE = scripts/brod +ERTS_VSN = $(shell erl -noshell -eval 'io:put_chars(erlang:system_info(version)), halt()') +ESCRIPT_FILE = scripts/brod_cli ESCRIPT_EMU_ARGS = -sname brod_cli COVER = true @@ -44,8 +45,10 @@ app:: include erlang.mk rel:: escript - cp $(ESCRIPT_FILE) _rel/brod/bin/brod - tar -pczf _rel/brod.tar.gz -C _rel brod + @cp scripts/brod _rel/brod/bin/brod + @cp $(ESCRIPT_FILE) _rel/brod/bin/brod_cli + @ln -sf erts-$(ERTS_VSN) _rel/brod/erts + @tar -pczf _rel/brod.tar.gz -C _rel brod test-env: ./scripts/setup-test-env.sh diff --git a/changelog.md b/changelog.md index f8f24bee..64ec25c9 100644 --- a/changelog.md +++ b/changelog.md @@ -58,4 +58,7 @@ - Make group coordinator restart on heartbeat timeout * 3.3.1 * Fix brod-cli commits command redandunt socket usage. +* 3.?.? + * Enhancements + - Add sh script to wrap brod-cli escript for erts dir auto discover diff --git a/scripts/.gitignore b/scripts/.gitignore index abc8e05e..4f8c739d 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -4,4 +4,3 @@ *.srl *.p12 *.jks -brod.escript diff --git a/scripts/brod b/scripts/brod new file mode 100755 index 00000000..c4dff8a2 --- /dev/null +++ b/scripts/brod @@ -0,0 +1,22 @@ +#!/bin/sh -e + +# can not readlink -f because mac version readlink does not support -f +LINK="$(readlink "$0")" || true +if [ -z $LINK ]; then + # not a symlink + BINDIR="$(dirname "$0")" +else + # get the link target's dir + BINDIR="$(dirname "$LINK")" +fi + +ERTS_BIN="$BINDIR/../erts/bin" + +if [ -d "$ERTS_BIN" ]; then + # this is a release, try to use erts in release + exec $ERTS_BIN/escript $BINDIR/brod_cli "$@" +else + # hoping the user has erts in PATH + exec $BINDIR/brod_cli "$@" +fi + diff --git a/src/brod.erl b/src/brod.erl index 73fe3681..06dd2721 100644 --- a/src/brod.erl +++ b/src/brod.erl @@ -90,11 +90,6 @@ , fetch_committed_offsets/3 ]). -%% escript --ifdef(BROD_CLI). --export([main/1]). --endif. - -export_type([ call_ref/0 , cg/0 , cg_protocol_type/0 @@ -692,10 +687,6 @@ fetch_committed_offsets(BootstrapEndpoints, SockOpts, GroupId) -> fetch_committed_offsets(Client, GroupId) -> brod_utils:fetch_committed_offsets(Client, GroupId, []). --ifdef(BROD_CLI). -main(Args) -> brod_cli:main(Args, halt). --endif. - %%%_* Emacs ==================================================================== %%% Local Variables: %%% allout-layout: t diff --git a/src/brod_cli.erl b/src/brod_cli.erl index e32cf607..820ce6f2 100644 --- a/src/brod_cli.erl +++ b/src/brod_cli.erl @@ -18,7 +18,7 @@ -ifdef(BROD_CLI). --export([main/2]). +-export([main/1, main/2]). -include("brod_int.hrl"). @@ -296,6 +296,8 @@ options: -type command() :: string(). +main(Args) -> main(Args, halt). + main(["-h" | _], _Stop) -> print(?MAIN_DOC); main(["--help" | _], _Stop) ->