@@ -30,25 +30,44 @@ GOTSEP=false
3030MINSECS=60
3131GOTVERBOSE=false
3232GOTOUTFILE=false
33+ OUTFILE=" "
3334GOTVTFILE=false
3435GOTVTTTL=false
36+ # look at HTGETTOKENOPTS in addition to those options on the command line
37+ # but don't explicitly pass them again to htgettoken
38+ HTGETSEP=" --HTSEP--"
39+ set -- $HTGETTOKENOPTS $HTGETSEP " $@ "
40+ DONEHTGETTOKENOPTS=false
3541for ARG; do
3642 if $GOTSEP ; then
3743 COMMANDARGS+=(" $ARG " )
44+ elif $GOTOUTFILE ; then
45+ OUTFILE=" $ARG "
46+ GOTOUTFILE=false
47+ if $DONEHTGETTOKENOPTS ; then
48+ HTGETTOKENARGS+=(" $ARG " )
49+ fi
50+ elif [ " $ARG " = " $HTGETSEP " ]; then
51+ DONEHTGETTOKENOPTS=true
3852 elif [ " $ARG " = " --" ]; then
3953 GOTSEP=true
4054 else
41- HTGETTOKENARGS+=(" $ARG " )
55+ if $DONEHTGETTOKENOPTS ; then
56+ HTGETTOKENARGS+=(" $ARG " )
57+ fi
4258 case " $ARG " in
4359 --minsecs=* )
4460 MINSECS=" ${ARG/ --minsecs=/ } "
4561 ;;
4662 -v|--verbose)
4763 GOTVERBOSE=true
4864 ;;
49- -o|--outfile= * )
65+ -o)
5066 GOTOUTFILE=true
5167 ;;
68+ --outfile=* )
69+ OUTFILE=" ${ARG/ --outfile=/ } "
70+ ;;
5271 --vaulttokenfile=* )
5372 GOTVTFILE=true
5473 ;;
@@ -73,12 +92,16 @@ if [ ${#COMMANDARGS[@]} = 0 ]; then
7392 COMMANDARGS=(" $SHELL " )
7493fi
7594
76- if [ -z " $BEARER_TOKEN_FILE " ] && ! $GOTOUTFILE ; then
77- BTFILE=" bt_u$( id -u) .sh-$$ "
78- if [ -n " $XDG_RUNTIME_DIR " ]; then
79- BEARER_TOKEN_FILE=$XDG_RUNTIME_DIR /$BTFILE
95+ if [ -z " $BEARER_TOKEN_FILE " ]; then
96+ if [ -n " $OUTFILE " ]; then
97+ BEARER_TOKEN_FILE=" $OUTFILE "
8098 else
81- BEARER_TOKEN_FILE=/tmp/$BTFILE
99+ BTFILE=" bt_u$( id -u) .sh-$$ "
100+ if [ -n " $XDG_RUNTIME_DIR " ]; then
101+ BEARER_TOKEN_FILE=$XDG_RUNTIME_DIR /$BTFILE
102+ else
103+ BEARER_TOKEN_FILE=/tmp/$BTFILE
104+ fi
82105 fi
83106 export BEARER_TOKEN_FILE
84107fi
@@ -123,6 +146,19 @@ gettoken()
123146# beyond the minsecs, so reduce the minimum to just 1 second
124147gettoken " not running command" 1
125148
149+ # Remove any --vaulttokenminttl option so the background renewal
150+ # gets to be as long as possible
151+ if [[ " $HTGETTOKENOPTS " = * --vaulttokenminttl* ]]; then
152+ HTGETTOKENOPTS=" $( echo " $HTGETTOKENOPTS " | sed ' s/--vaulttokenminttl=[^ ]*//' ) "
153+ fi
154+ NEWARGS=()
155+ for ARG in " ${HTGETTOKENARGS[@]} " ; do
156+ if [[ " $ARG " != --vaulttokenminttl* ]]; then
157+ NEWARGS+=(" $ARG " )
158+ fi
159+ done
160+ HTGETTOKENARGS=(" ${NEWARGS[@]} " )
161+
126162# make sure the logged info is verbose for easier diagnosis
127163if ! $GOTVERBOSE ; then
128164 HTGETTOKENARGS+=(" -v" )
0 commit comments