#!/bin/sh
# restart using wish \
  exec tclsh "$0" ${1+"$@"}

# mailquote
# copyright 1999 tom poindexter <tpoindex@nyx.net>
# requires 'ezsmtp' Tcl package by D.J.Hagberg,
#	http://www.millibits.com/djh/tcl/

# This software is copyrighted by Tom Poindexter,
# 1999.  The following terms apply to all files associated with the software 
# unless explicitly disclaimed in individual files.
# 
# The authors hereby grant permission to use, copy, modify, distribute,
# and license this software and its documentation for any purpose, provided
# that existing copyright notices are retained in all copies and that this
# notice is included verbatim in any distributions. No written agreement,
# license, or royalty fee is required for any of the authorized uses.
# Modifications to this software may be copyrighted by their authors
# and need not follow the licensing terms described here, provided that
# the new terms are clearly indicated on the first page of each file where
# they apply.
# 
# IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
# FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
# ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
# DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# 
# THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
# IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
# NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
# MODIFICATIONS.
# 
# GOVERNMENT USE: If you are acquiring this software on behalf of the
# U.S. government, the Government shall have only "Restricted Rights"
# in the software and related documentation as defined in the Federal 
# Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
# are acquiring the software on behalf of the Department of Defense, the
# software shall be classified as "Commercial Computer Software" and the
# Government shall have only "Restricted Rights" as defined in Clause
# 252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
# authors grant the U.S. Government and others acting in its behalf
# permission to use and distribute the software in accordance with the
# terms specified in this license. 
 
# set this explicitly
set env(TCLTICKER_LIB) "@PREFIX@/share/tclticker"


if {! [info exists env(TCLTICKER_LIB)]} {
    lappend auto_path [file join [file dirname $argv0] lib]
} else { 
    lappend auto_path $env(TCLTICKER_LIB)
}

package require http
package require ezsmtp

# start it up!

set_defaults
read_defaults

if {[string length $mail_host]} {
    ezsmtp::config -mailhost $mail_host
    if {[string length $mail_port]} {
        ezsmtp::config -mailhost $mail_host -port $mail_port
    }
}

set arg_sym ""
set quiet 1
array set data {}

if {$argc == 0} {
    puts stderr "usage: $argv0 \[ -q \] emailaddr \[symbol ...\]"
    exit
} elseif {[lindex $argv 0] == "-q"} {
    set quiet 0
    set email [lindex $argv 1]
    set arg_sym [lrange $argv 2 end]
} else {
    set email [lindex $argv 0]
    set arg_sym [lrange $argv 1 end]
}

if {[string length $email] == 0} {
    puts stderr "usage: $argv0 \[ -q \] emailaddr \[symbol ...\]"
    exit
}

# if ticker symbols used, override the ticker symbols in $HOME/.tclticker
if {[llength $arg_sym]} {
    unset ticker_symbols
    set i 0
    foreach sym $arg_sym {
	set ticker_symbols([incr i]) [string toupper [string trim $sym]]
    }
}

set res 0
if {[catch {$service} res] || $res == 0} {
    if {! $quiet} {
	puts stderr "$argv0: couldn't get quotes from $service, reason = $res"
    }
    exit
}

# apply rounding, if set by .tclticker defaults
set_symbol_data

set msg ""
set i 0
while {[info exists ticker_symbols([incr i])]} {
    set sym    $ticker_symbols($i)
    set last   $data($sym,last)
    set delta  $data($sym,delta)
    append msg "$sym $last $delta\n"
}

if {[catch {ezsmtp::send -subject Quotes -to $email -body $msg}] && ! $quiet} {
    puts stderr "$argv0: couldn't send quotes to $email"
}

exit
