gitbash 1.9.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/commands/switch.sh +22 -4
  2. package/package.json +1 -1
@@ -159,7 +159,7 @@ EOF
159
159
  branches_file=$(mktemp)
160
160
  printf '%s\n' "$branch_list" > "$branches_file"
161
161
 
162
- # Create a small helper script to delete the selected branch safely.
162
+ # Create a small helper script to delete the selected branch safely (asks for confirmation).
163
163
  delete_script=$(mktemp)
164
164
  cat > "$delete_script" <<'DEL_SH'
165
165
  #!/usr/bin/env bash
@@ -175,6 +175,24 @@ type="${line%%:*}"
175
175
  branch="${line#*: }"
176
176
 
177
177
  if [[ "$type" == "local" || "$type" == "merged" ]]; then
178
+ # Ask for confirmation via the terminal (/dev/tty). Default answer is Yes when empty.
179
+ while true; do
180
+ printf "Delete local branch '%s'? [Y/n]: " "$branch" > /dev/tty
181
+ read -r answer < /dev/tty
182
+ case "$answer" in
183
+ ''|[yY]|[yY][eE][sS])
184
+ break
185
+ ;;
186
+ [nN]|[nN][oO])
187
+ echo "Aborted deletion of $branch"
188
+ exit 0
189
+ ;;
190
+ *)
191
+ echo "Please answer y or n" > /dev/tty
192
+ ;;
193
+ esac
194
+ done
195
+
178
196
  if git branch -D "$branch"; then
179
197
  echo "Deleted local $branch"
180
198
  awk -v l="$line" '$0!=l' "$branches_file" > "$branches_file".new && mv "$branches_file".new "$branches_file"
@@ -196,12 +214,12 @@ DEL_SH
196
214
  --height=40% \
197
215
  --reverse \
198
216
  --border \
199
- --expect=enter,delete,ctrl-d,ctrl-h,backspace \
217
+ --expect=enter,delete \
200
218
  --query="${filter_for_fzf:-$filter}" \
201
219
  -i \
202
220
  --preview="branch=\$(echo {} | sed 's/^[^:]*: //'); if [[ \"\$branch\" == *───* ]]; then echo 'Spacer - not selectable'; else git log --color=always -n 1 --format='%C(bold cyan)Author:%C(reset) %an%n%C(bold cyan)Date:%C(reset) %ar (%ad)%n%C(bold cyan)Message:%C(reset) %s%n' --date=format:'%Y-%m-%d %H:%M' \"\$branch\" 2>/dev/null && echo && git log --oneline --color=always -n 10 \"\$branch\" 2>/dev/null; fi" \
203
221
  --preview-window=right:50% \
204
- --header="[Enter] switch | [Del/Ctrl-D] delete (local only) | [Esc] exit | Current: $current_branch" \
222
+ --header="[Enter] switch | [Del] delete (local only) | [Esc] exit | Current: $current_branch" \
205
223
  < "$branches_file"
206
224
  ) </dev/tty || true
207
225
 
@@ -219,7 +237,7 @@ DEL_SH
219
237
  break
220
238
  fi
221
239
 
222
- if [[ "$key_pressed" == "delete" || "$key_pressed" == "ctrl-d" || "$key_pressed" == "ctrl-h" || "$key_pressed" == "backspace" ]]; then
240
+ if [[ "$key_pressed" == "delete" ]]; then
223
241
  # perform deletion on the selected line and continue loop
224
242
  if [[ -n "$selection" ]]; then
225
243
  "$delete_script" "$selection" "$branches_file"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitbash",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "Opinionated git utilities for bash with fzf-powered menus",
5
5
  "author": "jaggli",
6
6
  "license": "MIT",