From 61f93b9e251370ed4d35060d79e61917dde91fad Mon Sep 17 00:00:00 2001 From: sergiotarxz Date: Sun, 6 Feb 2022 03:15:37 +0100 Subject: [PATCH] Improving the script to report missing icons in icon packs. --- functions.sh | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ missing.sh | 34 +++++++++------------------- 2 files changed, 73 insertions(+), 24 deletions(-) create mode 100644 functions.sh diff --git a/functions.sh b/functions.sh new file mode 100644 index 0000000..f813f2c --- /dev/null +++ b/functions.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# This file is part of missing-icon-reporter +# and it's AGPLv3 licensed. + +desktopsearch () { + cat /usr/share/applications/*.desktop | perl -ne '/^Icon=(?:-|\w|\.)+$/ and print' | sed s/Icon=// + +} + +iconsearch () { + local icon_pack=$1 + if [ -z $icon_pack ]; then + echo "iconsearch requires a icon pack." 1>&2 + exit 1; + fi + for icon in $(find ~/.icons/$icon_pack -name '*.png'); + do + if [[ -f "${icon}" ]]; then + icon=$(basename ${icon} .png) + echo ${icon} + fi + done +} + +compare_desktop_and_icons() { + local icon_pack=$1 + if [ -z $icon_pack ]; then + echo "iconsearch requires a icon pack." 1>&2 + exit 1; + fi + perl <(cat <<'EOF' +use v5.30.0; + +use strict; +use warnings; + +my $desktop_search_file = $ARGV[0]; +my $icon_search_file = $ARGV[1]; + +my %desktop_relation; +open my $desktop_filehandle, '<', $desktop_search_file; +while (my $line = <$desktop_filehandle>) { + chomp $line; + $desktop_relation{$line} = 0; +} +close $desktop_filehandle; + +open my $icon_filehandle, '<', $icon_search_file; +while (my $line = <$icon_filehandle>) { + chomp $line; + $desktop_relation{$line} = 1; +} +close $icon_filehandle; + +for my $key (keys %desktop_relation) { + unless ($desktop_relation{$key}) { + say qq($key is missing); + } +} +EOF + ) <(desktopsearch) <(iconsearch $icon_pack) +} diff --git a/missing.sh b/missing.sh index d0a9318..6c18646 100755 --- a/missing.sh +++ b/missing.sh @@ -1,31 +1,17 @@ #! /bin/bash -# this file is part of missing-icon-reporter +# This file is part of missing-icon-reporter # and it's AGPLv3 licensed. -desktopsearch () { - for DESKTOP in /usr/share/applications/*.desktop - do - if [[ -f "${DESKTOP}" ]]; then - cat ${DESKTOP} | grep 'Icon=' | sed s/Icon=// - - fi - done -} +script_path=$(dirname $0) +script_name=$(basename $0) +icon_pack=$1 -iconsearch () { - for ICON in ~/.icons/aleta/*/*/*.png - do - if [[ -f "${ICON}" ]]; then - N=$(basename ${ICON} .png) - echo ${N} - fi - done -} -desktopsearch | sort | uniq > /tmp/.missing-icon-reporter-desktopsearch.tmp -iconsearch | sort | uniq > /tmp/.missing-icon-reporter-iconsearch.tmp +. "$script_path/functions.sh" -cat /tmp/.missing-icon-reporter-desktopsearch.tmp /tmp/.missing-icon-reporter-iconsearch.tmp | sort | uniq > /tmp/.missing-icon-reporter-comparisonsearch.tmp +if [ -z $icon_pack ]; then + echo "$script_name requires a icon pack." 1>&2 + exit 1; +fi -cat /tmp/.missing-icon-reporter-comparisonsearch.tmp /tmp/.missing-icon-reporter-iconsearch.tmp /tmp/.missing-icon-reporter-iconsearch.tmp | sort | uniq -# diff --suppress-common-lines /tmp/.missing-icon-reporter-desktopsearch.tmp /tmp/.missing-icon-reporter-iconsearch.tmp +compare_desktop_and_icons $icon_pack;