Skip to content

Commit 3b055c8

Browse files
committed
add feature to choose format of PS1, but bash only now
1 parent b081194 commit 3b055c8

File tree

1 file changed

+63
-3
lines changed

1 file changed

+63
-3
lines changed

actions/chce_git_status_PS1.sh

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
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

55
echo "Jeśli twoja wybrana powłoka nie zadziała, to spróbuj zainstalować do 'bash'."
66
sleep 1
@@ -179,13 +179,72 @@ install -m 0644 $GIT_PROMPT_FILE $(dirname $install_path)/$FILENAME
179179

180180
if test -e $install_path && test -n "$(cat $install_path | grep __git_ps1)"
181181
then
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
187187
fi
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+
189248
echo "Dodaję nowe instrukcje do pliku $install_path"
190249
echo "# === Dodane przez skrypt 'chce_git_status_PS1.sh'. ===" >> $install_path
191250
echo "$features" >> $install_path
@@ -194,7 +253,8 @@ echo "source $(dirname $install_path)/$FILENAME" >> $install_path
194253
echo 'fi' >> $install_path
195254
case $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

Comments
 (0)