#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" -- "$@"

# This is a trivial implementation of an SSH_ASKPASS handler.
# Git-gui uses this script if none are already configured.

package require Tk

set answer {}
set yesno  0
set rc     255

if {$argc < 1} {
	set prompt "Enter your OpenSSH passphrase:"
} else {
	set prompt [join $argv " "]
	if {[regexp -nocase {\(yes\/no\)\?\s*$} $prompt]} {
		set yesno 1
	}
}

message .m -text $prompt -justify center -aspect 4000
pack .m -side top -fill x -padx 20 -pady 20 -expand 1

entry .e -textvariable answer -width 50
pack .e -side top -fill x -padx 10 -pady 10

if {!$yesno} {
	.e configure -show "*"
}

frame .b
button .b.ok     -text OK     -command finish
button .b.cancel -text Cancel -command cancel

pack .b.ok -side left -expand 1
pack .b.cancel -side right -expand 1
pack .b -side bottom -fill x -padx 10 -pady 10

bind . <Visibility> {focus -force .e}
bind . <Key-Return> [list .b.ok invoke]
bind . <Key-Escape> [list .b.cancel invoke]
bind . <Destroy>    {set rc $rc}

proc cancel {} {
	set ::rc 255
}

proc finish {} {
	if {$::yesno} {
		if {$::answer ne "yes" && $::answer ne "no"} {
			tk_messageBox -icon error -title "Error" -type ok \
				-message "Only 'yes' or 'no' input allowed."
			return
		}
	}

	puts $::answer
	set ::rc 0
}

wm title . "OpenSSH"
tk::PlaceWindow .
vwait rc
exit $rc
