App-nup

 view release on metacpan or  search on metacpan

script/nup  view on Meta::CPAN

}

# Check bash version (4.3+ required for getoptlong.sh)
if ((BASH_VERSINFO[0] < 4 || (BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] < 3))); then
    die "bash 4.3+ required (found $BASH_VERSION)"
fi

##############################################################################
# Option definitions
##############################################################################

define USAGE <<END
nup - n-up, multi-column paged output for commands and files

Usage: $myname [ options ] file ...
       $myname -e [ options ] command ...
END

declare -a up_opts=(--filename)  # up.pm options

# Default command aliases (command and options)
declare -A alias=(
    [bat]="bat --style=plain --color=always"
    [batcat]="batcat --style=plain --color=always"
    [rg]="rg --color=always"
    [tree]="tree -C"
)

declare -A OPTS=(
    [&REQUIRE]=0.7 [&USAGE]="$USAGE" [&PERMUTE]= [&DELIM]=
    [         help | h   !        # show help         ]=
    [      version |     !        # show version      ]=
    [        debug | d            # debug mode        ]=
    [       dryrun | n            # dry-run mode      ]=
    [         exec | e            # execute command   ]=
    [        alias | %            # command aliases   ]=
    [     textconv |    :         # textconv          ]=pdf,docx,docm,pptx,pptm,xlsx,xlsm,jpg,jpeg
    [        pager |    :!        # pager command     ]=
    [     parallel | V   >up_opts # parallel view     ]=
    [     document | D   >up_opts # document mode     ]=
    [     paginate |              # paginate mode     ]=1
    [         fold | F   !        # no paginate       ]=
    [auto-paginate | A   >up_opts # auto paginate     ]=
    [     filename | H   >up_opts # show file headers ]=
    [         grid | G  :>up_opts # grid layout       ]=
    [         pane | C  :>up_opts # number of columns ]=
    [          row | R  :>up_opts # number of rows    ]=
    [         page | P  :>up_opts # page height       ]=
    [   pane-width | S  :>up_opts # pane width        ]=
    [ border-style | bs :>up_opts # border style      ]=
    [   line-style | ls :>up_opts # line style        ]=
    [     colormap | cm :>up_opts # color mapping     ]=
    [  page-number |              # page number       ]=1
    [  white-board |     >up_opts # black on white    ]=
    [  black-board |     >up_opts # white on black    ]=
    [  green-board |     >up_opts # white on green    ]=
    [  slate-board |     >up_opts # white on slate    ]=
)

##############################################################################
# Option callbacks
##############################################################################

# -h callback: show help from POD
help() {
    sed -E \
        -e '/^$/N' \
        -e 's/^(\n*)=head[0-9]* */\1/' \
        -e '/^\n*[#=]/d' \
        -e '/Version/q' \
        <<< "$pod"
    exit 0
}

# --version callback: show version
version() {
    echo "$my_version"
    exit 0
}

# --fold/-F callback: disable paginate; --no-fold re-enables
fold() {
    [[ ${fold:-} ]] && paginate= || paginate=1
}

# --pager callback: handle pager option
pager() {
    if [[ -z $2 ]]; then
        up_opts+=("--no-pager")
    else
        up_opts+=("--pager=$2")
    fi
}

##############################################################################
# Parse options
##############################################################################

. getoptlong.sh OPTS "$@"

##############################################################################
# Main
##############################################################################

# --no-paginate or --fold/-F: disable page mode
[[ -z ${paginate:-} ]] && up_opts+=(--no-paginate)

# --page-number: show page number on border
[[ ${page_number:-} ]] && up_opts+=(--label S=" %n ")

# Set defaults for less environment
export LESS="${LESS:--R}"
export LESSANSIENDCHARS="${LESSANSIENDCHARS:-mK}"

# Show help if no arguments and stdin is a terminal
if (( $# == 0 )) && [[ -t 0 ]]; then
    help
fi

# Determine mode: command or file view
# Command mode if: -e specified, OR ($1 is not a file AND $1 is a command)



( run in 2.941 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )