#!/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) }