| version 1.111, 2021/12/23 20:25:40 |
version 1.115, 2021/12/23 21:43:04 |
|
|
| } |
} |
| |
|
| usage() { |
usage() { |
| echo "usage: ${0##*/} [-d | -D | -L] [-v] [driver | file ...]" |
echo "usage: ${0##*/} [-d | -D | -L] [-av] [driver | file ...]" |
| exit 2 |
exit 2 |
| } |
} |
| |
|
| |
ALL=false |
| OPT_D= |
OPT_D= |
| OPT_L= |
OPT_L= |
| while getopts :dDLv name |
while getopts :adDLv name |
| do |
do |
| case "$name" in |
case "$name" in |
| |
a) ALL=true ;; |
| d) DELETE=true ;; |
d) DELETE=true ;; |
| D) OPT_D=true ;; |
D) OPT_D=true ;; |
| L) OPT_L=true ;; |
L) OPT_L=true ;; |
|
|
| if "$DELETE"; then |
if "$DELETE"; then |
| [ "$OPT_D" ] || [ "$OPT_L" ] && usage 22 |
[ "$OPT_D" ] || [ "$OPT_L" ] && usage 22 |
| |
|
| [ "${devices[*]:-}" ] || usage 22 |
set -A installed |
| |
if [ "${devices[*]:-}" ]; then |
| |
"$ALL" && usage 22 |
| |
|
| deleted='' |
set -A installed -- $( |
| for d in "${devices[@]}"; do |
for d in "${devices[@]}"; do |
| f="${d##*/}" # don't just uninstall from anywhere |
f="${d##*/}" # only care about the name |
| f="${f%.tgz}" # allow specifying the package name |
f="${f%.tgz}" # allow specifying the package name |
| |
[ "$( firmware_devicename "$f" )" = "$f" ] && f="$f-firmware" |
| |
|
| set -A installed -- $( installed_firmware '' "$f" '*' ) |
set -A i -- $( installed_firmware '' "$f-" '*' ) |
| |
|
| if [ ! "${installed[*]:-}" ]; then |
if [ "${i[*]:-}" ]; then |
| echo "No firmware found for '$d'" >&2 |
echo "${i[@]}" |
| continue |
else |
| fi |
echo "No firmware found for '$d'" >&2 |
| |
fi |
| |
done |
| |
) |
| |
elif "$ALL"; then |
| |
set -A installed -- $( installed_firmware '*' '-firmware-' '*' ) |
| |
fi |
| |
|
| |
deleted='' |
| |
if [ "${installed:-}" ]; then |
| for fw in "${installed[@]}"; do |
for fw in "${installed[@]}"; do |
| delete_firmware "$fw" || continue |
delete_firmware "$fw" || continue |
| deleted="$deleted,$fw" |
deleted="$deleted,$( firmware_devicename "$fw" )" |
| done |
done |
| done |
fi |
| |
|
| deleted="${deleted:+${deleted#,}}" |
deleted="${deleted:+${deleted#,}}" |
| echo "${0:##*/}: deleted ${deleted:-none}"; |
echo "${0:##*/}: deleted ${deleted:-none}"; |
|
|
| exit |
exit |
| fi |
fi |
| |
|
| if [ ! "${devices[*]:-}" ]; then |
if [ "${devices[*]:-}" ]; then |
| |
"$ALL" && usage 22 |
| |
else |
| "$VERBOSE" && echo -n "Detecting firmware ..." |
"$VERBOSE" && echo -n "Detecting firmware ..." |
| set -A devices -- $( devices_needing_firmware ) |
set -A devices -- $( devices_needing_firmware ) |
| "$VERBOSE" && |
"$VERBOSE" && |
|
|
| |
|
| added='' |
added='' |
| updated='' |
updated='' |
| |
kept='' |
| for f in "${devices[@]}"; do |
for f in "${devices[@]}"; do |
| d="$( firmware_devicename "$f" )" |
d="$( firmware_devicename "$f" )" |
| |
|
|
|
| for i in "${installed[@]}"; do |
for i in "${installed[@]}"; do |
| if [ "${f##*/}" = "$i.tgz" ]; then |
if [ "${f##*/}" = "$i.tgz" ]; then |
| "$VERBOSE" && echo "$i already installed" |
"$VERBOSE" && echo "$i already installed" |
| |
kept="$kept,$d" |
| continue 2 |
continue 2 |
| fi |
fi |
| done |
done |
|
|
| add_firmware "$f" |
add_firmware "$f" |
| |
|
| if "$removed"; then |
if "$removed"; then |
| [ "$updated" ] && updated="$updated," |
updated="$updated,$d" |
| updated="$updated$d" |
|
| else |
else |
| [ "$added" ] && added="$added," |
added="$added,$d" |
| added="$added$d" |
|
| fi |
fi |
| done |
done |
| |
|
| if ! $VERBOSE && { [ "$added" ] || [ "$updated" ]; }; then |
added="${added:#,}" |
| echo "${0##*/}: $( |
updated="${updated:#,}" |
| [ "$added" ] && echo -n "added ${added}" |
kept="${kept:#,}" |
| [ "$added" ] && [ "$updated" ] && echo -n "; " |
echo "${0##*/}: added ${added:-none}; updated ${updated:-none}; kept ${kept:-none}" |
| [ "$updated" ] && echo -n "updated ${updated}" |
|
| )" |
|
| fi |
|