summary refs log tree commit diff
path: root/pkgs/applications/misc/keepass/extractWinRscIconsToStdFreeDesktopDir.sh
blob: 04485b146a04e8e8d82223ba47cf56ef30e312d1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/sh

# The file from which to extract *.ico files.
#rscFile="./KeePass.exe"
rscFile=$1

# A regexp that can extract the image size from the file name.
# sizeRegex='[^\.]+\.exe_[0-9]+_[0-9]+_[0-9]+_[0-9]+_([0-9]+x[0-9]+)x[0-9]+\.png'
sizeRegex=$2

# sizeReplaceExp='\1'
sizeReplaceExp=$3

# A regexp that can extract the name of the target image from the file name.
# nameRegex='([^\.]+)\.exe.+'
nameRegex=$4

# nameReplaceExp='\1'
nameReplaceExp=$5

# out=./myOut
out=$6

# An optional temp dir. TODO: Generate it randomly by default instead.
tmp=./tmp
if [ "" != "$4" ]; then
    tmp=$7
fi



rm -rf $tmp/png $tmp/ico
mkdir -p $tmp/png $tmp/ico

# Extract the ressource file's extension.
rscFileExt=`echo "$rscFile" | sed -re 's/.+\.(.+)$/\1/'`

# Debug ressource file extension.
echo "rscFileExt=$rscFileExt"

if [ "ico" = "$rscFileExt" ]; then
    cp -p $rscFile $tmp/ico
else
    wrestool -x --output=$tmp/ico -t14 $rscFile
fi
    
icotool --icon -x --palette-size=0 -o $tmp/png $tmp/ico/*.ico

mkdir -p $out

for i in $tmp/png/*.png; do
  fn=`basename "$i"`
  size=$(echo $fn | sed -re 's/'${sizeRegex}'/'${sizeReplaceExp}'/')
  name=$(echo $fn | sed -re 's/'${nameRegex}'/'${nameReplaceExp}'/')
  targetDir=$out/share/icons/hicolor/$size/apps
  targetFile=$targetDir/$name.png
  mkdir -p $targetDir
  mv $i $targetFile
done

rm -rf $tmp/png $tmp/ico