# the debian package is missing the zsh completitons
# sudo apt install eza

DEST=${1:-/etc/skel}

URL=raw.githubusercontent.com
USER=eza-community
APP="eza"
#TYPES=(deb deb-src)
TYPES=(deb)
TRANSPORT="https:/"
URI="deb.gierens.de"
SUITES="stable"
COMPONENTS=(main)
ARCHITECTURES=(amd64)
KEY_HOME=/usr/share/keyrings
KEY=${KEY_HOME}/"${USER}.gpg"
packages=(eza)

sudo mkdir -p ${KEY_HOME}
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc \
  | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
wget -qO- ${TRANSPORT}/${URL}/${USER}/${APP}/main/deb.asc \
  | sudo gpg --dearmor -o ${KEY}

# echo "deb     [signed-by=/etc/apt/trusted.gpg.d/${KEY}] https://${URL}/${USER}/ppa/main ./" | sudo tee /etc/apt/sources.list-available/${APP}-ppa.list
# echo "deb-src [signed-by=/etc/apt/trusted.gpg.d/${KEY}] https://${URL}/${USER}/ppa/main ./" | sudo tee -a /etc/apt/sources.list-available/${APP}-ppa.list

conf_print_httm_sources() {
  cat <<EOF
Enabled: yes
Types: ${TYPES[*]}
URIs: ${TRANSPORT}/${URI}
Suites: ${SUITES}
Components: ${COMPONENTS[*]}
Architectures: ${ARCHITECTURES[*]}
Signed-By: ${KEY}
EOF
}
conf_print_httm_sources | sudo tee /etc/apt/sources.list-available/${APP}.sources >/dev/null
sudo ln -sf /etc/apt/sources.list-available/${APP}.sources /etc/apt/sources.list.d/${APP}.sources

# cat <<-EOF | sudo tee /etc/apt/sources.list-available/gierens.list
#     deb [signed-by=${KEY_HOME}/gierens.gpg] http://deb.gierens.de stable main
# EOF

sudo chmod 644 ${KEY}
sudo apt update
sudo apt install -y "${packages[*]}"

# conflicts with lsd
#ALIAS_FILE="${DEST}/${ALIAS_DIR}/003_eza.sh"
#cat > "${ALIAS_FILE}" <<-'EOF'
#		if [ -x /usr/bin/lsd ]; then
#			alias lsd="/usr/bin/eza"
#		#	alias 'ls'="eza"
#			alias 'll'="eza -a"
#			alias 'lt'="eza --tree"
#		fi
#EOF

#Usage:
#  eza [options] [files...]
#
#META OPTIONS
#  --help                     show list of command-line options
#  -v, --version              show version of eza
#
#DISPLAY OPTIONS
#  -1, --oneline              display one entry per line
#  -l, --long                 display extended file metadata as a table
#  -G, --grid                 display entries as a grid (default)
#  -x, --across               sort the grid across, rather than downwards
#  -R, --recurse              recurse into directories
#  -T, --tree                 recurse into directories as a tree
#  -X, --dereference          dereference symbolic links when displaying information
#  -F, --classify=WHEN        display type indicator by file names (always, auto, never)
#  --colo[u]r=WHEN            when to use terminal colours (always, auto, never)
#  --colo[u]r-scale           highlight levels of 'field' distinctly(all, age, size)
#  --colo[u]r-scale-mode      use gradient or fixed colors in --color-scale (fixed, gradient)
#  --icons=WHEN               when to display icons (always, auto, never)
#  --no-quotes                don't quote file names with spaces
#  --hyperlink                display entries as hyperlinks
#  --absolute                 display entries with their absolute path (on, follow, off)
#  -w, --width COLS           set screen width in columns
#
#
#FILTERING AND SORTING OPTIONS
#  -a, --all                  show hidden and 'dot' files. Use this twice to also
#                             show the '.' and '..' directories
#  -A, --almost-all           equivalent to --all; included for compatibility with `ls -A`
#  -d, --list-dirs            list directories as files; don't list their contents
#  -L, --level DEPTH          limit the depth of recursion
#  -r, --reverse              reverse the sort order
#  -s, --sort SORT_FIELD      which field to sort by
#  --group-directories-first  list directories before other files
#  -D, --only-dirs            list only directories
#  -f, --only-files           list only files
#  -I, --ignore-glob GLOBS    glob patterns (pipe-separated) of files to ignore
#  --git-ignore               ignore files mentioned in '.gitignore'
#  Valid sort fields:         name, Name, extension, Extension, size, type,
#                             modified, accessed, created, inode, and none.
#                             date, time, old, and new all refer to modified.
#
#LONG VIEW OPTIONS
#  -b, --binary               list file sizes with binary prefixes
#  -B, --bytes                list file sizes in bytes, without any prefixes
#  -g, --group                list each file's group
#  --smart-group              only show group if it has a different name from owner
#  -h, --header               add a header row to each column
#  -H, --links                list each file's number of hard links
#  -i, --inode                list each file's inode number
#  -m, --modified             use the modified timestamp field
#  -M, --mounts               show mount details (Linux and Mac only)
#  -n, --numeric              list numeric user and group IDs
#  -O, --flags                list file flags (Mac, BSD, and Windows only)
#  -S, --blocksize            show size of allocated file system blocks
#  -t, --time FIELD           which timestamp field to list (modified, accessed, created)
#  -u, --accessed             use the accessed timestamp field
#  -U, --created              use the created timestamp field
#  --changed                  use the changed timestamp field
#  --time-style               how to format timestamps (default, iso, long-iso,
#                             full-iso, relative, or a custom style '+<FORMAT>'
#                             like '+%Y-%m-%d %H:%M')
#  --total-size               show the size of a directory as the size of all
#                             files and directories inside (unix only)
#  --no-permissions           suppress the permissions field
#  -o, --octal-permissions    list each file's permission in octal format
#  --no-filesize              suppress the filesize field
#  --no-user                  suppress the user field
#  --no-time                  suppress the time field
#  --stdin                    read file names from stdin, one per line or other separator
#                             specified in environment
#  --git                      list each file's Git status, if tracked or ignored
#  --no-git                   suppress Git status (always overrides --git,
#                             --git-repos, --git-repos-no-status)
#  --git-repos                list root of git-tree status
#  -@, --extended             list each file's extended attributes and sizes
#  -Z, --context              list each file's security context
