source: lliurex-fonts-installer/trunk/fuentes/install/usr/bin/lliurex-fonts-installer @ 5351

Last change on this file since 5351 was 5351, checked in by Juanma, 21 months ago

Fixed the installation of fonts with white spaces

  • Property svn:executable set to *
File size: 5.9 KB
Line 
1#!/bin/bash
2
3export TEXTDOMAIN="lliurex-fonts-installer"
4
5# MSG
6MSG_INFO_START=$(gettext "Welcome to LliureX Fonts Installer, a little tool to install True Type Fonts (ttf) in your LliureX System")
7MSG_ASK_SYSTEM_OR_USER=$(gettext "Do you want to install fonts for all users?")
8MSG_ASK_SYSTEM_LABEL=$(gettext "Yes, for All users")
9MSG_ASK_USER_LABEL=$(gettext "No, only for the current user")
10MSG_ASK_PASSWD=$( gettext "The action needs sudo password , please type it:")
11MSG_ASK_PATH_TO_TTF=$(gettext "Where is the Font file?")
12MSG_RETURN_OK=$(gettext "Ok, the font is installed now")
13MSG_RETURN_ERROR=$(gettext "Something were wrong...please check permissions, and:")
14MSG_UPDATE_FONTCONFIG_CACHE=$(gettext "Updating Fontconfig cache")
15MSG_CANCEL=$(gettext "You cancel LliureX Fonts Installer")
16MSG_SUDO=$(gettext "Enter administrator password")
17MSG_SUDO_ERROR=$(gettext "Administrator password is wrong")
18
19# VARIABLES
20
21XFRONTEND="NO"
22MODE=""
23SUDO_PASSWORD=""
24SYSTEM_MODE="NO"
25INSTALL_PATH="/usr/share/fonts/truetype/lliurex-extra-fonts/"
26QUIET_MODE="NO"
27_die(){
28
29   # Die Function
30   if [ $XFRONTEND = "YES" ] ; then
31   
32      zenity --error --text="$1"
33   
34   else
35
36      echo $1 
37   
38   fi
39
40      exit 1
41}
42
43_usage(){
44     
45   echo "lliurex-fonts-installer [--frontend-interactive] --file=PATH_TO_TTF --mode={user|system}"
46   exit 1
47   
48}
49
50
51_zenity_request(){
52
53   [ "$QUIET_MODE" = "YES" ] || zenity --info --text="$MSG_INFO_START" || true
54   
55   if [ -z "$MODE" ] ; then
56
57      zenity --question --text="$MSG_ASK_SYSTEM_OR_USER" --ok-label="$MSG_ASK_SYSTEM_LABEL" --cancel-label="$MSG_ASK_USER_LABEL" --title="$(gettext "Lliurex font installer")"
58      SYSTEM_MODE=$?
59      #echo "FOTOS:$SYSTEM_MODE"
60      if [ "$SYSTEM_MODE" = "0" ]; then
61
62         MODE="system"
63         
64      else
65     
66         MODE="user"
67     
68      fi
69   fi
70
71   if [ -z "$PATH_TO_TTF" -o "$QUIET_MODE" = "NO" ] ; then
72
73      PATH_TO_TTF=$(zenity --file-selection --file-filter="*ttf *TTF *otf *OTF"  --title="$(gettext "Lliurex font installer")" )
74      if [ $? = 1 ];
75        then
76        zenity --info --text="$MSG_CANCEL"
77        exit
78      fi
79   fi
80   
81
82
83}
84
85_sanity_checks(){
86
87   # The File is a TTF valid Font?
88   file "$PATH_TO_TTF" | grep -q TrueType || _die "$(gettext "The File not seems a TrueType file")"
89
90}
91
92
93_space_clean(){
94#Función para sustituir los espacios por "_" en los nombres de
95#ficheros de fuente.
96#$1 incluye el path y el archivo de la fuente ttf que puede tener espacios en el nombre
97#$2 indica el path de instalación de la fuente
98
99if [[ $1 == *" "* ]] ; then
100        cd $2
101        for filename in *
102        do
103                mv "$filename" `echo "$filename"|sed 's/ /_/g'` 
104        done
105fi
106
107}
108
109_system_clean(){
110# System space cleaning
111cd $INSTALL_PATH
112for filename in *
113do
114        mv "$filename" `echo "$filename"|sed 's/ /_/g'` 
115done
116}
117
118
119_install_fonts(){
120
121   if [ "$MODE" = "user" ] ; then 
122   
123      [ -d "$HOME"/.fonts ] || mkdir -p  "$HOME"/.fonts
124      cp -f "$PATH_TO_TTF" "$HOME"/.fonts/ || _die "$(gettext "Cant create $HOME/.fonts directory" )"
125      _space_clean "$PATH_TO_TTF" "$HOME"/.fonts/
126 
127   else
128
129      [ -d "$INSTALL_PATH" ] || sudo mkdir $INSTALL_PATH
130      if [ "$UID" = "0" ] ; then 
131     
132         #ENDPATH=$(echo $PATH_TO_TTF| tr )
133         cp -f "$PATH_TO_TTF" "$INSTALL_PATH"
134         _space_clean "$PATH_TO_TTF" "$INSTALL_PATH"
135         echo "cp -f "$PATH_TO_TTF" "$INSTALL_PATH""
136         fc-cache -fv
137
138   
139      else if [ $XFRONTEND = "YES" ] ; then
140                #cp command doesn't work with backslashes
141#               PATH_TO_TTF2="$(echo "$PATH_TO_TTF" |sed -e "s% %\\\ %g")"
142               
143                #PASSWD_SUDO=$(zenity --hide-text --entry --tittle="Administrator Validation" --text="$MSG_SUDO")
144               
145                # PETICION DE CONTRASEÑA ROOT Y CHEQUEO PREVIO SI ES CORRECTA
146                fallocontra=1
147                while [ $fallocontra != 0 ]
148                do
149
150                        PASSWD_SUDO=`zenity --entry --text "$MSG_SUDO" --title Identificacion --hide-text`
151                        if [ "$?" = 1 ];then
152                                zenity --error --text="$MSG_CANCEL"
153                                exit
154                        fi
155                        echo $PASSWD_SUDO | sudo -S touch /usr/share/error.txt
156                        if [ "$?" = 0 ];then
157                                fallocontra=0
158                        else
159                        zenity --error --text="$MSG_SUDO_ERROR"
160                        fi
161                        echo $PASSWD_SUDO | sudo -S rm /usr/share/error.txt
162                       
163                done 
164
165                #gksu "cp -f $PATH_TO_TTF2 $INSTALL_PATH"
166#As commented before, cp doesn't work with backslashes so $PATH_TO_TTF2 is useless
167#               echo $PASSWD | sudo -S cp -f $PATH_TO_TTF2 $INSTALL_PATH
168                echo $PASSWD | sudo -S cp -f "$PATH_TO_TTF" "$INSTALL_PATH"
169                if [ "$?" != 0 ];then
170                        zenity --error --text="$MSG_RETURN_ERROR"
171                        exit
172                fi
173                       
174             
175                #gksu "$0 --system"     
176                echo $PASSWD | sudo -S $0 --system
177                if [ "$?" != 0 ];then
178                        zenity --error --text="$MSG_RETURN_ERROR"
179                        exit
180                fi
181
182               #gksu "fc-cache -fv" | (zenity --progress --pulsate --text=$MSG_UPDATE_FONTCONFIG_CACHE)
183                echo $PASSWD | sudo -S fc-cache -fv | (zenity --progress --pulsate --text="$MSG_UPDATE_FONTCONFIG_CACHE")
184                if [ "$?" != 0 ];then
185                        zenity --error --text="$MSG_RETURN_ERROR"
186                        exit
187                fi
188                       
189                #gksu "fc-cache -fv | zenity --progress --pulsate --text="$MSG_UPDATE_FONTCONFIG_CACHE" "
190               
191                       
192          else
193         
194               _die "$(gettext "You dont have enough permissions, try to run with sudo" )"
195     
196         fi
197       fi
198   fi   
199
200}
201
202_exit_gracefully(){
203
204
205   if [ $XFRONTEND = "YES" ] ; then
206   
207      zenity --info --text="$MSG_RETURN_OK"
208   
209   fi
210 
211   return 0
212
213}
214
215
216
217# Main
218
219if [ $# -lt 1 ]
220       then _usage
221fi
222
223# Get Opts
224
225while [ $# -ge 1 ] ; do
226   case $1 in
227         --frontend-interactive)XFRONTEND="YES"   
228            shift
229         ;;
230         --file=*)
231            PATH_TO_TTF="${1#--file=}"
232            shift 
233         ;;
234         --mode=*)
235            MODE="${1#--mode=}"
236            shift
237         ;;
238         --quiet)
239            QUIET_MODE="YES"
240            shift
241         ;;
242         --system)
243            _system_clean
244           exit 0
245         ;;
246         *)
247            _usage
248         ;;
249   esac
250done
251
252
253if [  "$XFRONTEND" = "YES"  ]; then
254
255    _zenity_request
256
257fi
258
259#_sanity_checks
260_install_fonts
261_exit_gracefully
Note: See TracBrowser for help on using the repository browser.