mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-09 22:16:58 +02:00
These files are required by 'pushimage'.
I missed two library dependancies for pushimage when I moved it from crostools to src/script. Moving them now. BUG=chromiumos:14372 TEST=None Change-Id: I47fffa3c09d8eb0d119b9c8732fcf4e1ce149189 Reviewed-on: http://gerrit.chromium.org/gerrit/1120 Reviewed-by: Chris Sosa <sosa@chromium.org> Reviewed-by: Don Garrett <dgarrett@chromium.org> Tested-by: Don Garrett <dgarrett@chromium.org>
This commit is contained in:
parent
2d331404a0
commit
234d3b7528
32
namevalue
Executable file
32
namevalue
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
########################################################################
|
||||||
|
#- PROGRAM NAME: namevalue
|
||||||
|
#- AUTHOR & DT : David McMahon
|
||||||
|
#- RCS Ident :
|
||||||
|
#+ USAGE : . namevalue
|
||||||
|
#+ DESCRIPTION : Set local shell environment from arguments name=value
|
||||||
|
#+ or -name=value or --name=value
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# XXX: At some point, this should find all --whatever args without an =
|
||||||
|
# and set then to true, but this will mess with all existing independent
|
||||||
|
# handling of --whatever args passed through current with LOOSEARGS.
|
||||||
|
# but a nice exercise to simplify and centralize cmd-line processing.
|
||||||
|
|
||||||
|
ORIG_CMDLINE="$*"
|
||||||
|
for arg in "$@"
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
*=*) # Strip off any leading -*
|
||||||
|
arg=$(echo $arg |sed 's,^-*,,g')
|
||||||
|
# "set" any arguments that have = in them
|
||||||
|
NAMEX=${arg%%=*}
|
||||||
|
# change -'s to _ for legal vars in bash
|
||||||
|
NAMEX=${NAMEX/-/_}
|
||||||
|
VALUEX=${arg#*=}
|
||||||
|
eval export $NAMEX=\""$VALUEX"\"
|
||||||
|
;;
|
||||||
|
*) LOOSEARGS="$LOOSEARGS $arg"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
484
stdlib.sh
Executable file
484
stdlib.sh
Executable file
@ -0,0 +1,484 @@
|
|||||||
|
##############################################################################
|
||||||
|
# BASE ENV
|
||||||
|
##############################################################################
|
||||||
|
TOOLS=$(cd $(dirname -- $0) && pwd)
|
||||||
|
PATH=$TOOLS:/usr/local/symlinks:$PATH
|
||||||
|
export PATH TOOLS
|
||||||
|
|
||||||
|
umask 0022
|
||||||
|
|
||||||
|
if ${HTMLREPORTING:-false}
|
||||||
|
then
|
||||||
|
V_BOLD="<B>"
|
||||||
|
V_REVERSE="$V_BOLD"
|
||||||
|
V_UNDERLINE="<U>"
|
||||||
|
V_VIDOFF_BOLD="</B>"
|
||||||
|
V_VIDOFF_REVERSE="$V_VIDOFF_REVERSE"
|
||||||
|
V_VIDOFF_UNDERLINE="</U>"
|
||||||
|
elif [ -t 1 ]
|
||||||
|
then
|
||||||
|
## Set some video text attributes for use in error/warning msgs
|
||||||
|
V_REVERSE='[7m'
|
||||||
|
V_UNDERLINE='[4m'
|
||||||
|
V_BOLD='[1m'
|
||||||
|
[ -f /usr/bin/tput ] && V_BLINK=$(tput blink)
|
||||||
|
V_VIDOFF='[m'
|
||||||
|
V_VIDOFF_REVERSE="$V_VIDOFF"
|
||||||
|
V_VIDOFF_BOLD="$V_VIDOFF"
|
||||||
|
V_VIDOFF_UNDERLINE="$V_VIDOFF"
|
||||||
|
fi
|
||||||
|
export V_REVERSE V_UNDERLINE V_BOLD V_BLINK V_VIDOFF
|
||||||
|
|
||||||
|
# Set some usable highlighted keywords for functions like OkFailed().
|
||||||
|
OK="${V_BOLD}OK$V_VIDOFF_BOLD"
|
||||||
|
FAILED="${V_REVERSE}FAILED$V_VIDOFF_REVERSE"
|
||||||
|
WARNING="${V_REVERSE}WARNING$V_VIDOFF_REVERSE"
|
||||||
|
YES="${V_BOLD}YES$V_VIDOFF_BOLD"
|
||||||
|
NO="${V_REVERSE}NO$V_VIDOFF_REVERSE"
|
||||||
|
|
||||||
|
# Set REALUSER
|
||||||
|
#REALUSER=`id -nu`
|
||||||
|
#export REALUSER
|
||||||
|
|
||||||
|
# Set a PID for use throughout
|
||||||
|
PID=$$;export PID
|
||||||
|
|
||||||
|
# Save original cmd-line
|
||||||
|
ORIG_CMDLINE="$*"
|
||||||
|
|
||||||
|
# Define some functions when sourced from PROGrams
|
||||||
|
#[ -n "$PROG" ] && . stdlib.sh
|
||||||
|
|
||||||
|
# set a basic trap to capture ^C's and other unexpected exits and do the
|
||||||
|
# right thing in TrapClean().
|
||||||
|
trap TrapClean 2 3 15
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Standard library of useful shell functions and GLOBALS
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Define logecho() function to display to log and std out
|
||||||
|
# Args can be -n or -r or -nr or -rn ONLY.
|
||||||
|
# -r = raw output - no $PROG: prefix
|
||||||
|
# -n - no newline (just like echo -n)
|
||||||
|
logecho () {
|
||||||
|
# Dynamically set fmtlen
|
||||||
|
local lfmtlen=
|
||||||
|
let lfmtlen=80-${#PROG}
|
||||||
|
N=
|
||||||
|
raw=false
|
||||||
|
case "$1" in
|
||||||
|
-n) N=-n
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-r) raw=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-rn|-nr) N=-n;raw=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Allow widespread use of logecho without having to
|
||||||
|
# determine if $LOGFILE exists first.
|
||||||
|
#
|
||||||
|
# If -n is set, do not provide autoformatting or you lose the -n affect
|
||||||
|
# Use of -n should only be used on short status lines anyway.
|
||||||
|
if [ ! -f "$LOGFILE" ]
|
||||||
|
then
|
||||||
|
if $raw
|
||||||
|
then
|
||||||
|
echo $N "$*"
|
||||||
|
elif [ "$N" = -n ]
|
||||||
|
then
|
||||||
|
echo $N "$PROG: $*"
|
||||||
|
else
|
||||||
|
# To create a line continuation character
|
||||||
|
#echo $N "$*" |fmt -$lfmtlen |sed -e "1s,^,$PROG: ,g" -e "2,\$s,^,$PROG: .,g"
|
||||||
|
echo $N "$*" |fmt -$lfmtlen |sed "s,^,$PROG: ,g"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if $raw
|
||||||
|
then
|
||||||
|
echo $N "$*" | tee -a $LOGFILE
|
||||||
|
elif [ "$N" = -n ]
|
||||||
|
then
|
||||||
|
echo $N "$PROG: $*" | tee -a $LOGFILE
|
||||||
|
else
|
||||||
|
# To create a line continuation character
|
||||||
|
#echo $N "$*" |fmt -$lfmtlen |sed -e "1s,^,$PROG: ,g" -e "2,\$s,^,$PROG: .,g" | tee -a $LOGFILE
|
||||||
|
echo $N "$*" |fmt -$lfmtlen |sed "s,^,$PROG: ,g" | tee -a $LOGFILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
logrun () {
|
||||||
|
# if no args, take stdin
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
if ${VERBOSE:-true}
|
||||||
|
then
|
||||||
|
tee -a $LOGFILE
|
||||||
|
else
|
||||||
|
tee -a $LOGFILE > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
elif [ -f "$LOGFILE" ]
|
||||||
|
then
|
||||||
|
echo >> $LOGFILE
|
||||||
|
echo "CMD: $*" >> $LOGFILE
|
||||||
|
# Special case for "cd" which cannot be run through a pipe (subshell)
|
||||||
|
if ${VERBOSE:-true} && [ "$1" != cd ]
|
||||||
|
then
|
||||||
|
${*:-:} 2>&1 | tee -a $LOGFILE
|
||||||
|
return ${PIPESTATUS[0]}
|
||||||
|
else
|
||||||
|
${*:-:} >> $LOGFILE 2>&1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ${VERBOSE:-false}
|
||||||
|
then
|
||||||
|
$*
|
||||||
|
else
|
||||||
|
$* >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
OkFailed () {
|
||||||
|
if logrun $*
|
||||||
|
then
|
||||||
|
logecho -r $OK
|
||||||
|
else
|
||||||
|
logecho -r $FAILED
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Define process output
|
||||||
|
ProcessOutput () {
|
||||||
|
if ${VERBOSE:-true}
|
||||||
|
then
|
||||||
|
tee -a $LOGFILE
|
||||||
|
else
|
||||||
|
tee -a $LOGFILE > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
GeneratePassword () {
|
||||||
|
dd if=/dev/urandom count=1 2> /dev/null | uuencode -m - | sed -ne 2p | cut -c-8
|
||||||
|
}
|
||||||
|
|
||||||
|
# TimeStamp < begin | end | done > [ section ]
|
||||||
|
#+ DESCRIPTION
|
||||||
|
#+ TimeStamp begin is run at the beginning of the script to display a
|
||||||
|
#+ 'begin' marker and TimeStamp end is run at the end of the script to
|
||||||
|
#+ display an 'end' marker.
|
||||||
|
#+ TimeStamp will auto-scope to the current shell or you can optionally
|
||||||
|
#+ pass in a second argument as a section identifier if you wish to track
|
||||||
|
#+ multiple times within the same shell.
|
||||||
|
#+
|
||||||
|
#+ For example, if you call TimeStamp begin and end within one script and then
|
||||||
|
#+ call it again in another script (new shell), you can just use begin and end
|
||||||
|
#+ But if you want to call it twice within the same script use it like this:
|
||||||
|
#+
|
||||||
|
TimeStamp ()
|
||||||
|
{
|
||||||
|
# Always set trace (set -x) back
|
||||||
|
#set +x
|
||||||
|
#
|
||||||
|
action=$1
|
||||||
|
section=${2:-run}
|
||||||
|
# convert / to underscore
|
||||||
|
section=${section//\//_}
|
||||||
|
# convert : to underscore
|
||||||
|
section=${section//:/_}
|
||||||
|
# convert . to underscore
|
||||||
|
section=${section//./_}
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
begin)
|
||||||
|
# Get time(date) for display and calc
|
||||||
|
eval ${section}start_seconds=$(date '+%s')
|
||||||
|
|
||||||
|
# Print BEGIN message for $PROG
|
||||||
|
logecho "BEGIN $section on ${HOSTNAME%%.*} $(date)"
|
||||||
|
[ "$section" = run ] && logecho -r
|
||||||
|
;;
|
||||||
|
end|done)
|
||||||
|
# Check for "START" values before calcing
|
||||||
|
if [ -z "$(eval echo \\$\"${section}start_seconds\")" ]
|
||||||
|
then
|
||||||
|
#display_time="EE:EE:EE - 'end' run without 'begin' in this scope or sourced script using TimeStamp"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
# Get time(date) for display and calc
|
||||||
|
eval ${section}end_seconds=$(date '+%s')
|
||||||
|
|
||||||
|
# process time
|
||||||
|
start_display_time=$(eval echo \$"${section}start_seconds")
|
||||||
|
# if start time is blank then just exit...
|
||||||
|
[ -z "$start_display_time" ] && return 0
|
||||||
|
end_display_time=$(eval echo \$"${section}end_seconds")
|
||||||
|
display_time=$(expr ${end_display_time} - ${start_display_time:-0} |\
|
||||||
|
awk '{
|
||||||
|
in_seconds=$0
|
||||||
|
days=in_seconds/86400
|
||||||
|
remain=in_seconds%86400
|
||||||
|
hours=remain/3600
|
||||||
|
remain=in_seconds%3600
|
||||||
|
minutes=remain/60
|
||||||
|
seconds=remain%60
|
||||||
|
printf("%dd %02d:%02d:%02d\n",days, hours, minutes, seconds)
|
||||||
|
}')
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ "$section" = run ] && logecho -r
|
||||||
|
# To override logecho's 80-column limit, echo directly and pipe to logrun
|
||||||
|
# for verbose/log handling
|
||||||
|
echo "$PROG: DONE $section on ${HOSTNAME%%.*} $(date) ${V_BOLD}in $display_time$V_VIDOFF_BOLD" |VERBOSE=true logrun
|
||||||
|
|
||||||
|
# NULL these local vars
|
||||||
|
unset ${section}start_seconds ${section}end_seconds
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
TrapClean () {
|
||||||
|
# If user ^C's at read then tty is hosed, so make it sane again
|
||||||
|
stty sane
|
||||||
|
logecho -r
|
||||||
|
logecho -r
|
||||||
|
logecho "^C caught!"
|
||||||
|
Exit 1 "Exiting..."
|
||||||
|
}
|
||||||
|
|
||||||
|
CleanExit () {
|
||||||
|
# cleanup CLEANEXIT_RM
|
||||||
|
# Sanity check the list
|
||||||
|
# should we test that each arg is a absolute path?
|
||||||
|
if echo "$CLEANEXIT_RM" |fgrep -qw /
|
||||||
|
then
|
||||||
|
logecho "/ found in CLEANEXIT_RM. Skipping Cleanup..."
|
||||||
|
else
|
||||||
|
if [ -n "$CLEANEXIT_RM" ]
|
||||||
|
then
|
||||||
|
logecho "Cleaning up:$CLEANEXIT_RM"
|
||||||
|
else
|
||||||
|
: logecho "Cleaning up..."
|
||||||
|
fi
|
||||||
|
# cd somewhere relatively safe and run cleanup the $CLEANEXIT_RM stack
|
||||||
|
# + some usual suspects...
|
||||||
|
cd /tmp && rm -rf $CLEANEXIT_RM $TMPFILE1 $TMPFILE2 $TMPFILE3 $TMPDIR1 \
|
||||||
|
$TMPDIR2 $TMPDIR3
|
||||||
|
fi
|
||||||
|
# display end timestamp when an existing TimeStamp begin was run
|
||||||
|
[ -n "$runstart_seconds" ] && TimeStamp end
|
||||||
|
exit ${1:-0}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Requires 2 args
|
||||||
|
# - Exit code
|
||||||
|
# - message
|
||||||
|
Exit () {
|
||||||
|
local etype=${1:-0}
|
||||||
|
shift
|
||||||
|
logecho -r
|
||||||
|
logecho $*
|
||||||
|
logecho -r
|
||||||
|
CleanExit $etype
|
||||||
|
}
|
||||||
|
|
||||||
|
# these 2 kept for backward compat for now
|
||||||
|
Exit0 () {
|
||||||
|
Exit 0 $*
|
||||||
|
}
|
||||||
|
|
||||||
|
Exit1 () {
|
||||||
|
Exit 1 $*
|
||||||
|
}
|
||||||
|
|
||||||
|
Askyorn () {
|
||||||
|
local yorn
|
||||||
|
case "$1" in
|
||||||
|
-y) # yes default
|
||||||
|
shift
|
||||||
|
logecho -n "$* ([y]/n)? "
|
||||||
|
read yorn
|
||||||
|
case "$yorn" in
|
||||||
|
[nN]) return 1 ;;
|
||||||
|
*) return 0 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*) # no default
|
||||||
|
case "$1" in
|
||||||
|
-n) shift ;;
|
||||||
|
esac
|
||||||
|
logecho -n "$* (y/[n])? "
|
||||||
|
read yorn
|
||||||
|
case "$yorn" in
|
||||||
|
[yY]) return 0 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
netls () {
|
||||||
|
url=${1:-"http://build/packages/kernel/experimental/autotest"}
|
||||||
|
wget -O - $url 2>&1 |sed -ne '/Parent Directory/,/^$/p' | sed 's,<[^>]*> *,,g' |sed -ne '2,$p' |sed '/^$/d'
|
||||||
|
}
|
||||||
|
|
||||||
|
Spinner () {
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
echo -n "-"
|
||||||
|
sleep 1
|
||||||
|
echo -n "\\"
|
||||||
|
sleep 1
|
||||||
|
echo -n "|"
|
||||||
|
sleep 1
|
||||||
|
echo -n "/"
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Takes a step number and a string and prints out a section header
|
||||||
|
# If the first arg isn't a number, then it just prints the string
|
||||||
|
StepHeader () {
|
||||||
|
if [[ "$1" == [0-9]* ]]
|
||||||
|
then
|
||||||
|
local step="STEP $1 - "
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
local msg=$*
|
||||||
|
logecho -r
|
||||||
|
echo -n $V_BOLD
|
||||||
|
logecho "================================================================"
|
||||||
|
logecho "$step$msg"
|
||||||
|
logecho "================================================================"
|
||||||
|
echo -n $V_VIDOFF_BOLD
|
||||||
|
logecho -r
|
||||||
|
}
|
||||||
|
|
||||||
|
LogfileInit () {
|
||||||
|
local lnum=$2
|
||||||
|
# Initialize Logfile
|
||||||
|
# only set and shift(savefile) LOGFILE If none was set by calling program
|
||||||
|
if [ -z "$LOGFILE" ]
|
||||||
|
then
|
||||||
|
LOGFILE=${1:-$(pwd)/$PROG.log}
|
||||||
|
savefile file=$LOGFILE num=${lnum:-3} rm=yes
|
||||||
|
echo "CMD: $PROG $ORIG_CMDLINE" >$LOGFILE
|
||||||
|
else
|
||||||
|
echo "CMD: $PROG $ORIG_CMDLINE" >>$LOGFILE
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
CanonicalizePath () {
|
||||||
|
[ -z "$1" ] && return
|
||||||
|
cd -P -- "$(dirname -- "$1")" &&
|
||||||
|
printf '%s\n' "$(pwd -P)/$(basename -- "$1")"
|
||||||
|
}
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Set BUGSHELL_PASSWORD
|
||||||
|
#####################################################################
|
||||||
|
BugshellAuth () {
|
||||||
|
# XXX: Buganizer and SSO. There's no solution yet that will allow
|
||||||
|
# password-less access to buganizer, so prompt for password each run. (awful)
|
||||||
|
# nmlorg trying to fix this: http://b/issue?id=759835
|
||||||
|
# If I ever want to encrypt this:
|
||||||
|
#encrypted_password=$(echo $buganizer_password |openssl des3 -a -k $cryptkey)
|
||||||
|
#decrypted_password=$(echo "$encrypted_password" |openssl des3 -d -a -k $cryptkey)
|
||||||
|
|
||||||
|
# Try to get a password from local machine
|
||||||
|
local ldap_password_file=/usr/local/google/$USER/.password
|
||||||
|
BUGANIZER_PASSWORD=$(cat $ldap_password_file 2>&-)
|
||||||
|
|
||||||
|
until $BUGSHELL --password $BUGANIZER_PASSWORD ls 2>&-
|
||||||
|
do
|
||||||
|
echo
|
||||||
|
read -s -p "$PROG: Access to Buganizer required. Enter your LDAP password: " BUGANIZER_PASSWORD
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
if [ "$(cat $ldap_password_file 2>&-)" != $BUGANIZER_PASSWORD ]
|
||||||
|
then
|
||||||
|
if Askyorn "Store your password (600) in $ldap_password_file"
|
||||||
|
then
|
||||||
|
mkdir -p $(dirname $ldap_password_file)
|
||||||
|
echo $BUGANIZER_PASSWORD > $ldap_password_file
|
||||||
|
chmod 600 $ldap_password_file
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Takes space separated list of elements and returns a random one
|
||||||
|
PickRandomElement () {
|
||||||
|
# array of strings
|
||||||
|
local llist=($@)
|
||||||
|
local lrange=
|
||||||
|
local lrand=$RANDOM
|
||||||
|
|
||||||
|
# set range
|
||||||
|
lrange=${#llist[*]}
|
||||||
|
# set boundaries
|
||||||
|
let "lrand %= $lrange"
|
||||||
|
|
||||||
|
#echo "Random number less than $lrange --- $lrand = ${llist[$lrand]}"
|
||||||
|
echo ${llist[$lrand]}
|
||||||
|
}
|
||||||
|
|
||||||
|
# It creates a temporary file to expand the environment variables
|
||||||
|
ManHelp () {
|
||||||
|
# Whatever caller is
|
||||||
|
local lprog=$0
|
||||||
|
local ltmpfile=/tmp/$PROG-manhelp.$$
|
||||||
|
|
||||||
|
# Standard usage function
|
||||||
|
if [ "x$usage" = "xyes" -o "x$1" = "x-usage" -o \
|
||||||
|
"x$1" = "x--usage" -o "x$1" = "x-?" ]
|
||||||
|
then
|
||||||
|
echo 'cat << EOFCAT' >$ltmpfile
|
||||||
|
echo "Usage:" >> $ltmpfile
|
||||||
|
sed -n '/#+ SYNOPSIS/,/^#+ DESCRIPTION/p' $lprog |\
|
||||||
|
sed -e 's,^#+ ,,g' -e '/^DESCRIPTION/d' >> $ltmpfile
|
||||||
|
echo "EOFCAT" >> $ltmpfile
|
||||||
|
. $ltmpfile
|
||||||
|
rm -f $ltmpfile
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Standard man function
|
||||||
|
if [ "x$man" = "xyes" -o "x$1" = "x-man" -o \
|
||||||
|
"x$1" = "x--man" -o "x$1" = "x-help" -o "x$1" = "x--help" ]
|
||||||
|
then
|
||||||
|
echo 'cat << EOFCAT' >$ltmpfile
|
||||||
|
grep "^#+" $lprog |cut -c4- >> $ltmpfile
|
||||||
|
echo "EOFCAT" >> $ltmpfile
|
||||||
|
. $ltmpfile | ${PAGER:-"less"}
|
||||||
|
rm -f $ltmpfile
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Standard comments function
|
||||||
|
if [ "x$comments" = "xyes" -o "x$1" = "x-comments" ]
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
egrep "^#\-" $lprog |sed -e 's,^#- *,,g'
|
||||||
|
rm -f $ltmpfile
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# parse cmdline
|
||||||
|
# Run namevalue as a separate script so it can handle quoted args --name="1 2"
|
||||||
|
. namevalue
|
||||||
|
# Run ManHelp to show usage and man pages
|
||||||
|
ManHelp $@
|
||||||
|
|
||||||
|
# Keep crostools up to date
|
||||||
|
# symlink may be setting by caller or use $0
|
||||||
|
# Try it using std git pull or repo sync
|
||||||
|
(cd $(dirname ${symlink:-$0}) && git pull -q >/dev/null 2>&1 ||\
|
||||||
|
repo sync crostools > /dev/null 2>&1)
|
Loading…
Reference in New Issue
Block a user