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

Last change on this file since 288 was 288, checked in by jrpelegrina, 3 years ago

First release to xenial

  • Property svn:executable set to *
File size: 5.7 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   
80   fi
81   
82
83
84}
85
86_sanity_checks(){
87
88   # The File is a TTF valid Font?
89   file "$PATH_TO_TTF" | grep -q TrueType || _die "$(gettext "The File not seems a TrueType file")"
90
91}
92
93
94_space_clean(){
95#Función para sustituir los espacios por "_" en los nombres de
96#ficheros de fuente.
97#$1 incluye el path y el archivo de la fuente ttf que puede tener espacios en el nombre
98#$2 indica el path de instalación de la fuente
99
100if [[ $1 == *" "* ]] ; then
101        cd $2
102        for filename in *
103        do
104                mv "$filename" `echo "$filename"|sed 's/ /_/g'` 
105        done
106fi
107
108}
109
110_system_clean(){
111# System space cleaning
112cd $INSTALL_PATH
113for filename in *
114do
115        mv "$filename" `echo "$filename"|sed 's/ /_/g'` 
116done
117}
118
119
120_install_fonts(){
121
122   if [ "$MODE" = "user" ] ; then 
123   
124      [ -d "$HOME"/.fonts ] || mkdir -p  "$HOME"/.fonts
125      cp -f "$PATH_TO_TTF" "$HOME"/.fonts/ || _die "$(gettext "Cant create $HOME/.fonts directory" )"
126      _space_clean "$PATH_TO_TTF" "$HOME"/.fonts/
127 
128   else
129
130      [ -d "$INSTALL_PATH" ] || sudo mkdir $INSTALL_PATH
131      if [ "$UID" = "0" ] ; then 
132     
133         #ENDPATH=$(echo $PATH_TO_TTF| tr )
134         cp -f "$PATH_TO_TTF" "$INSTALL_PATH"
135         _space_clean "$PATH_TO_TTF" "$INSTALL_PATH"
136         echo "cp -f "$PATH_TO_TTF" "$INSTALL_PATH""
137         fc-cache -fv
138
139   
140      else if [ $XFRONTEND = "YES" ] ; then
141                PATH_TO_TTF2="$(echo "$PATH_TO_TTF" |sed -e "s% %\\\ %g")"
142               
143               
144                #PASSWD_SUDO=$(zenity --hide-text --entry --tittle="Administrator Validation" --text="$MSG_SUDO")
145               
146                # PETICION DE CONTRASEÑA ROOT Y CHEQUEO PREVIO SI ES CORRECTA
147                fallocontra=1
148                while [ $fallocontra != 0 ]
149                do
150
151                        PASSWD_SUDO=`zenity --entry --text "$MSG_SUDO" --title Identificacion --hide-text`
152                        if [ "$?" = 1 ];then
153                                zenity --error --text="$MSG_CANCEL"
154                                exit
155                        fi
156                        echo $PASSWD_SUDO | sudo -S touch /usr/share/error.txt
157                        if [ "$?" = 0 ];then
158                                fallocontra=0
159                        else
160                        zenity --error --text="$MSG_SUDO_ERROR"
161                        fi
162                        echo $PASSWD_SUDO | sudo -S rm /usr/share/error.txt
163                       
164                done 
165
166                #gksu "cp -f $PATH_TO_TTF2 $INSTALL_PATH"
167                echo $PASSWD | sudo -S cp -f $PATH_TO_TTF2 $INSTALL_PATH
168                if [ "$?" != 0 ];then
169                        zenity --error --text="$MSG_RETURN_ERROR"
170                        exit
171                fi
172                       
173             
174                #gksu "$0 --system"     
175                echo $PASSWD | sudo -S $0 --system
176                if [ "$?" != 0 ];then
177                        zenity --error --text="$MSG_RETURN_ERROR"
178                        exit
179                fi
180
181               #gksu "fc-cache -fv" | (zenity --progress --pulsate --text=$MSG_UPDATE_FONTCONFIG_CACHE)
182                echo $PASSWD | sudo -S fc-cache -fv | (zenity --progress --pulsate --text="$MSG_UPDATE_FONTCONFIG_CACHE")
183                if [ "$?" != 0 ];then
184                        zenity --error --text="$MSG_RETURN_ERROR"
185                        exit
186                fi
187                       
188                #gksu "fc-cache -fv | zenity --progress --pulsate --text="$MSG_UPDATE_FONTCONFIG_CACHE" "
189               
190                       
191          else
192         
193               _die "$(gettext "You dont have enough permissions, try to run with sudo" )"
194     
195         fi
196       fi
197   fi   
198
199}
200
201_exit_gracefully(){
202
203
204   if [ $XFRONTEND = "YES" ] ; then
205   
206      zenity --info --text="$MSG_RETURN_OK"
207   
208   fi
209 
210   return 0
211
212}
213
214
215
216# Main
217
218if [ $# -lt 1 ]
219       then _usage
220fi
221
222# Get Opts
223
224while [ $# -ge 1 ] ; do
225   case $1 in
226         --frontend-interactive)XFRONTEND="YES"   
227            shift
228         ;;
229         --file=*)
230            PATH_TO_TTF="${1#--file=}"
231            shift 
232         ;;
233         --mode=*)
234            MODE="${1#--mode=}"
235            shift
236         ;;
237         --quiet)
238            QUIET_MODE="YES"
239            shift
240         ;;
241         --system)
242            _system_clean
243           exit 0
244         ;;
245         *)
246            _usage
247         ;;
248   esac
249done
250
251
252if [  "$XFRONTEND" = "YES"  ]; then
253
254    _zenity_request
255
256fi
257
258#_sanity_checks
259_install_fonts
260_exit_gracefully
Note: See TracBrowser for help on using the repository browser.