############################################################################### # # shell.eagle -- # # Extensible Adaptable Generalized Logic Engine (Eagle) # Eagle Shell Initialization File # # Copyright (c) 2007-2012 by Joe Mistachkin. All rights reserved. # # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # # RCS: @(#) $Id: $ # ############################################################################### # # NOTE: Use our own namespace here because even though we do not directly # support namespaces ourselves, we do not want to pollute the global # namespace if this script actually ends up being evaluated in Tcl. # namespace eval ::Eagle { if {[isEagle]} then { ########################################################################### ############################ BEGIN Eagle ONLY ############################# ########################################################################### # # NOTE: Commands specific to initializing the Eagle interactive shell # environment should be placed here. # proc help { args } { # # Displays interactive command help using the interactive "#help" # command. # host result Break [appendArgs \ "\nFor interactive help please use: #help " $args \ "\nFor commercial support, please use: #support\n"] catch { object invoke Interpreter.GetActive Host.WriteLine \ "\nPlease press any key to continue...\n" set key null; object invoke Interpreter.GetActive \ Host.ReadKey true key } eval lappend command #help $args; debug icommand $command } proc quit { args } { # # Can be used to exit the interactive shell. It does this by calling # the built-in [exit] command. It is allowed to perform cleanup and # maintenance tasks. # catch { host result Break [appendArgs \ "WARNING: This command is not (simply) a synonym for the " \ "built-in [exit] command, primarily because it is allowed " \ "to perform additional cleanup and maintenance tasks."] } eval exit $args } proc #support {} { # # Shows the requirements for obtaining commercial support and/or # redirects to the appropriate web site using the default browser. # if {[catch {package require Licensing.Core} error(1)] == 0} then { # # NOTE: Use the command provided by the "Core" plugin to obtain # the support URI. # if {[catch {set uri [support]} error(2)] == 0} then { # # NOTE: Make sure the URI is actually valid. # if {[string length $uri] > 0} then { exec -shell $uri &; return } else { set error(3) "invalid support URI was returned" } } } set fileName [file tempname]; set fileData "" foreach varName [lsort [info vars]] { if {$varName in [list fileData]} then { continue } if {[array exists $varName]} then { append fileData [appendArgs \n \ [list array set $varName [array get $varName]]] } else { append fileData [appendArgs \n \ [list set $varName [set $varName]]] } } append fileData \n; writeFile $fileName $fileData set ::eagle_shell(errorFileName) $fileName error [appendArgs \ "\n\nIn order to obtain commercial support, at least " \ "one of the\nfollowing requirements must be met:\n\n" \ "\t1. Valid, non-expired commercial license agreement\n" \ "\t for Eagle Enterprise Edition.\n\n" \ "\t2. Valid, non-expired commercial support contract\n" \ "\t for Eagle Standard Edition.\n\n" \ "The original error information was saved to the file:\n\n" \ [string repeat - 60] \n $fileName \n [string repeat - 60] \ "\n\nPlease provide this file when contacting support."] } ########################################################################### ############################# END Eagle ONLY ############################## ########################################################################### } else { ########################################################################### ############################# BEGIN Tcl ONLY ############################## ########################################################################### # # NOTE: Commands specific to initializing the Tcl interactive shell # environment should be placed here. # ########################################################################### ############################## END Tcl ONLY ############################### ########################################################################### } # # NOTE: Provide the Eagle "shell" package to the interpreter. # package provide Eagle.Shell \ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] }