On 06/02/2012 12:49 AM, Mike Frysinger wrote: > On Wednesday 23 May 2012 21:04:42 hasufell wrote: >> # @FUNCTION: _iconins >> # @DESCRIPTION: >> # function for use in doicon and newicon > > mark it @INTERNAL > >> if [[ -z $size ]] ; then > > ${size} > >> if [[ $function == doicon ]] ; then > > ${function} > >> if [[ $function == newicon ]] ; then > > ${function} > >> doicon() { >> local function=$FUNCNAME >> _iconins "$@" > > passing the funcname in this way is kind of ugly. you could do: > _iconins ${FUNCNAME} "$@" > > and then at the top of _iconins: > local funcname=$1; shift > > i guess if we all agree this complication is useful, then fix the nits and > let's merge it > -mike
Yo, I hope this is it. Haven't seen many arguments against it as it is an optional feature anyway. Anyone got reservations left?
# @INTERNAL: _iconins # @DESCRIPTION: # function for use in doicon and newicon _iconins() { ( # wrap the env here so that the 'insinto' call # doesn't corrupt the env of the caller local funcname=$1; shift local size dir local context=apps local theme=hicolor while [[ $# -gt 0 ]] ; do case $1 in -s|--size) if [[ ${2%%x*}x${2%%x*} == "$2" ]] ; then size=${2%%x*} else size=${2} fi case ${size} in 16|22|24|32|36|48|64|72|96|128|192|256) size=${size}x${size};; scalable) ;; *) eerror "${size} is an unsupported icon size!" exit 1;; esac shift 2;; -t|--theme) theme=${2} shift 2;; -c|--context) context=${2} shift 2;; *) if [[ -z ${size} ]] ; then insinto /usr/share/pixmaps else insinto /usr/share/icons/${theme}/${size}/${context} fi if [[ ${funcname} == doicon ]] ; then if [[ -f $1 ]] ; then doins "${1}" elif [[ -d $1 ]] ; then shopt -s nullglob doins "${1}"/*.{png,svg} shopt -u nullglob else eerror "${1} is not a valid file/directory!" exit 1 fi else break fi shift 1;; esac done if [[ ${funcname} == newicon ]] ; then newins "$@" fi ) || die } # @FUNCTION: doicon # @USAGE: doicon [options] <icons> # @DESCRIPTION: # Install icon into the icon directory /usr/share/icons or into # /usr/share/pixmaps if "--size" is not set. # This is useful in conjunction with creating desktop/menu files. # # @CODE # options: # -s, --size # !!! must specify to install into /usr/share/icons/... !!! # size of the icon, like 48 or 48x48 # supported icon sizes are: # 16 22 24 32 36 48 64 72 96 128 192 256 scalable # -c, --context # defaults to "apps" # -t, --theme # defaults to "hicolor" # # icons: list of icons # @CODE # # example 1: # doicon foobar.png fuqbar.svg # results in: insinto /usr/share/pixmaps ; doins foobar.png fuqbar.svg # # example 2: # doicon -s 48 foobar.png fuqbar.png # results in: insinto /usr/share/icons/hicolor/48x48/apps ; doins foobar.png fuqbar.svg # doicon() { _iconins ${FUNCNAME} "$@" } # @FUNCTION: newicon # @USAGE: newicon [options] <icon> <newname> # @DESCRIPTION: # Like doicon, install the specified icon as newname. # # example 1: # newicon foobar.png NEWNAME.png # results in: insinto /usr/share/pixmaps ; newins foobar.png NEWNAME.png # # example 2: # newicon -s 48 foobar.png NEWNAME.png # results in: insinto /usr/share/icons/hicolor/48x48/apps ; newins foobar.png NEWNAME.png # newicon() { _iconins ${FUNCNAME} "$@" }