11#! /bin/bash
22# Dodanie do aktualnego $PS1 statusu repozytorium gita bieżącego katalogu
3- # Autor : Tomasz Wiśniewski, krystofair @ 2025-09-22
3+ # Autorzy : Tomasz Wiśniewski, krystofair @ 2025-09-22
44
55echo " Jeśli twoja wybrana powłoka nie zadziała, to spróbuj zainstalować do 'bash'."
66sleep 1
@@ -179,13 +179,72 @@ install -m 0644 $GIT_PROMPT_FILE $(dirname $install_path)/$FILENAME
179179
180180if test -e $install_path && test -n " $( cat $install_path | grep __git_ps1) "
181181then
182- echo " Masz to już zainstalowane dla takich wyborów ."
182+ echo " Masz to już zainstalowane."
183183 unset ch_shell
184184 unset installation_type
185185 unset install_path
186186 exit 0
187187fi
188188
189+ # Wykorzystuje "features" z globalnego kontekstu
190+ choose_ps1_format () {
191+ echo " Możliwe formaty, \[\033... to oznaczenia kolory" 1>&2
192+ FORMATS=$'
193+ 1.(<GIT-BRANCH-NAME> <GIT-STATUS>)[<USER>@<HOST>] <PWD><ONL>\$
194+ 2.(<GIT-BRANCH-NAME> <GIT-STATUS>) [<USER>@<HOST>] <PWD><ONL>\$
195+ 3.<USER>@<HOST> <PWD> (<GIT-BRANCH-NAME> <GIT-STATUS>)<ONL>\$
196+ 4.<USER>@<HOST> \\ [\\ 033[33m\\ ]<PWD>\\ [\\ 033[00m\\ ] (<GIT-BRANCH-NAME> <GIT-STATUS>)<ONL>\$
197+ 5.<USER>@<HOST> \\ [\\ 033[33m\\ ]<PWD>\\ [\\ 033[00m\\ ] <GIT-BRANCH-NAME> <GIT-STATUS><ONL>\$
198+ '
199+ echo " $FORMATS " 1>&2
200+ read -p " Wybierz format: " format_nr
201+ case $format_nr in
202+ 1|2|3|4|5) : ;;
203+ * ) echo " Niepoprawny wybor." 1>&2 ; return -1 ;;
204+ esac
205+ format=$( echo " $FORMATS " | grep -F $format_nr .)
206+ format=${format## ??}
207+ read -p " Czy chcesz mieć znak zachęty w nowej linii? Y/n: " r
208+ ONL=${r:- y} ; unset r
209+ if test " $ONL " = y;
210+ then format=${format/ " <ONL>" / \\ n} ;
211+ else format=${format/ " <ONL>" / }
212+ fi
213+
214+ unset FORMATS
215+ unset ONL
216+ unset DOT
217+
218+ # ### BUILD PS1 FROM FORMAT ####
219+ format=${format/ " <USER>" / \\ u}
220+ format=${format/ " <HOST>" / \\ h}
221+ format=${format/ " <PWD>" / \\ w}
222+ format=${format/ " <GIT-BRANCH-NAME>" / ' $(__git_ps1 ' }
223+ # funkcja __git_ps1 polega na ilości przekazanych do niej parametrów.
224+ # kolor chyba działa tylko przy jednym parametrze...
225+ IS_GIT_DIRTYSTATE=$( echo $1 | grep ' GIT_PS1_SHOWDIRTYSTATE=y' )
226+ if test -n " $IS_GIT_DIRTYSTATE " ;
227+ then format=${format/ " <GIT-STATUS>" / ' %s%s)' }
228+ else format=${format/ " <GIT-STATUS>" / ' %s)' }
229+ fi
230+
231+ echo $format
232+ unset IS_GIT_DIRTYSTATE
233+ unset format
234+
235+ return 0
236+ }
237+
238+ if test $ch_shell = bash || test $ch_shell = csh
239+ then
240+ new_ps1=$( choose_ps1_format)
241+ if [[ ! $? -eq 0 ]]; then
242+ echo " Wybrano zły format, nie robię nic, kończę."
243+ echo " Uruchom mnie ponownie."
244+ exit 0
245+ fi
246+ fi
247+
189248echo " Dodaję nowe instrukcje do pliku $install_path "
190249echo " # === Dodane przez skrypt 'chce_git_status_PS1.sh'. ===" >> $install_path
191250echo " $features " >> $install_path
@@ -194,7 +253,8 @@ echo "source $(dirname $install_path)/$FILENAME" >> $install_path
194253echo ' fi' >> $install_path
195254case $ch_shell in
196255 bash|csh)
197- echo $' export PS1=\' $(__git_ps1 \(%s%s\))[\u@\h \w]\n \$ \' ' >> $install_path
256+ echo $" export PS1='$new_ps1 '" >> $install_path
257+ # echo $'export PS1=\'$(__git_ps1 \(%s%s\))[\u@\h \w]\n\$ \'' >> $install_path
198258 ;;
199259 zsh)
200260 echo $' setopt PROMPT_SUBST; PS1=\' [%n@%m %c$(__git_ps1 \" (%s)\")]\$ \' ' >> $install_path
0 commit comments