From 61f93b9e251370ed4d35060d79e61917dde91fad Mon Sep 17 00:00:00 2001 From: sergiotarxz Date: Sun, 6 Feb 2022 03:15:37 +0100 Subject: [PATCH 1/3] 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; From 2751e2334d962f8b7a39b71c96556084b55c09d2 Mon Sep 17 00:00:00 2001 From: sergiotarxz Date: Sun, 6 Feb 2022 03:41:21 +0100 Subject: [PATCH 2/3] Improving the output. --- functions.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/functions.sh b/functions.sh index f813f2c..967fd30 100644 --- a/functions.sh +++ b/functions.sh @@ -47,15 +47,24 @@ while (my $line = <$desktop_filehandle>) { close $desktop_filehandle; open my $icon_filehandle, '<', $icon_search_file; +say ' +Known Icons: +------------- +'; while (my $line = <$icon_filehandle>) { chomp $line; + say $line; $desktop_relation{$line} = 1; } close $icon_filehandle; +say ' +Missing icons: +------------- +'; for my $key (keys %desktop_relation) { unless ($desktop_relation{$key}) { - say qq($key is missing); + say $key; } } EOF From 211097b541dfd9a8027352332d269972b5bc155e Mon Sep 17 00:00:00 2001 From: sergiotarxz Date: Sun, 6 Feb 2022 04:40:14 +0100 Subject: [PATCH 3/3] Adding colors and using sort uniq on declared icons. --- functions.sh | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/functions.sh b/functions.sh index 967fd30..f62b635 100644 --- a/functions.sh +++ b/functions.sh @@ -35,6 +35,20 @@ use v5.30.0; use strict; use warnings; +use Term::ANSIColor; + +$SIG{INT} = sub { + color_wrapper('reset'); +}; + +sub color_wrapper { + print color(shift) if -t STDOUT || $ENV{TOASTER_COLOR}; +} + +color_wrapper('yellow'); +say 'This is the Toasters Icon Pack Missing Icons Tool'; +color_wrapper('reset'); + my $desktop_search_file = $ARGV[0]; my $icon_search_file = $ARGV[1]; @@ -47,10 +61,14 @@ while (my $line = <$desktop_filehandle>) { close $desktop_filehandle; open my $icon_filehandle, '<', $icon_search_file; -say ' + +color_wrapper('red'); +say << 'EOS'; + Known Icons: ------------- -'; +EOS +color_wrapper('reset'); while (my $line = <$icon_filehandle>) { chomp $line; say $line; @@ -58,15 +76,30 @@ while (my $line = <$icon_filehandle>) { } close $icon_filehandle; -say ' +color_wrapper('red'); +say << 'EOS'; + Missing icons: ------------- -'; +EOS +color_wrapper('reset'); for my $key (keys %desktop_relation) { unless ($desktop_relation{$key}) { say $key; } } -EOF - ) <(desktopsearch) <(iconsearch $icon_pack) +color_wrapper('red'); +say << 'EOS'; + +Not missing in your system icons: +------------- +EOS +color_wrapper('reset'); +for my $key (keys %desktop_relation) { + if ($desktop_relation{$key}) { + say $key; + } +} +EOF + ) <(desktopsearch) <(iconsearch $icon_pack | sort | uniq) }