osx/osx_icns_creator.sh
author Claus Gittinger <cg@exept.de>
Wed, 27 Mar 2019 23:34:46 +0100
changeset 1593 50086d6ce1e0
parent 1584 18110e43eb68
permissions -rwxr-xr-x
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1584
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
#!/bin/bash
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
# Creates an icns file from a source image
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
src_image="$1"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
if [ -z "$1" ]; then
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
    echo "No source image was passed to this script"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
    exit 1
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
fi
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
icns_name="$2"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
if [ -z "$2" ]; then
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
    icns_name="iconbuilder"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
fi
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
if [ "${src_image:(-3)}" != "png" ]; then
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    echo "Source image is not a PNG, making a converted copy..."
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
    /usr/bin/sips -s format png "$src_image" --out "${src_image}.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    if [ $? -ne 0 ]; then
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	echo "The source image could not be converted to PNG format."
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	exit 1
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    fi
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
    src_image="${src_image}.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
fi
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
iconset_path="./${icns_name}.iconset"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
if [ -e "$iconset_path" ]; then
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
    /bin/rm -r "$iconset_path"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
    if [ $? -ne 0 ]; then
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	echo "There is a pre-existing file/dir $iconset_path the could not be deleted"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	exit 1
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
    fi
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
fi
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
/bin/mkdir "$iconset_path"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
icon_file_list=(
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
    "icon_16x16.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    "icon_16x16@2x.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    "icon_32x32.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    "icon_32x32@2x.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    "icon_128x128.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    "icon_128x128@2x.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    "icon_256x256.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    "icon_256x256@2x.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    "icon_512x512.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    "icon_512x512@2x.png"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    )
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
icon_size=(
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    '16'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    '32'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    '32'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    '64'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    '128'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    '256'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    '256'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    '512'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    '512'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    '1024'
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    )
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
counter=0
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
for a in ${icon_file_list[@]}; do
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    icon="${iconset_path}/${a}"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    /bin/cp "$src_image" "$icon"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    icon_size=${icon_size[$counter]}
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    /usr/bin/sips -z $icon_size $icon_size "$icon"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    counter=$(($counter + 1))
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
done
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
echo "Creating .icns file from $iconset_path"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
/usr/bin/iconutil -c icns "$iconset_path"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
if [ $? -ne 0 ]; then
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    echo "There was an error creating the .icns file"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    exit 1
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
fi
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
echo "Done"
18110e43eb68 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
exit 0