#!/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.

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 {destroy .}

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> finish
bind . <Key-Escape> {destroy .}
bind . <Destroy>    {exit $rc}

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
		}
	}

	set ::rc 0
	puts $::answer
	destroy .
}

wm title . "OpenSSH"
tk::PlaceWindow .
