Index: client/1.0/pkgr.eagle
==================================================================
--- client/1.0/pkgr.eagle
+++ client/1.0/pkgr.eagle
@@ -19,17 +19,39 @@
# support namespaces ourselves, we do not want to pollute the global
# namespace if this script actually ends up being evaluated in Tcl.
#
namespace eval ::PackageRepository {
#
- # NOTE: This package absolutely requires the Eagle core script library
- # package, even when it is being used by native Tcl. If needed,
- # prior to loading this package, the native Tcl auto-path should
- # be modified to include the "Eagle1.0" directory (i.e. the one
- # containing the Eagle core script library file "init.eagle").
+ # NOTE: When running from the source tree, modify the auto-path to include
+ # the "Eagle1.0" directory within externals.
#
- package require Eagle.Library
+ if {1} then {
+ lappend ::auto_path [file join [file dirname [file dirname \
+ [file dirname [info script]]]] externals Eagle lib Eagle1.0]
+ }
+
+ #
+ # NOTE: This package requires several packages from the Eagle core script
+ # library, even when it is being used by native Tcl. If necessary,
+ # prior to evaluating this file in native Tcl, its auto-path should
+ # be modified to include an "Eagle1.0" directory (i.e. a directory
+ # containing the Eagle core script library files "auxiliary.eagle",
+ # "file1.eagle", and "platform.eagle").
+ #
+ package require Eagle.Platform
+ package require Eagle.Auxiliary
+ package require Eagle.File
+
+ #
+ # NOTE: This block is intended to be evaluated successfully by native
+ # Tcl only.
+ #
+ catch {
+ ::Eagle::exportAndImportPackageCommands ::Eagle [list \
+ appendArgs getDictionaryValue isEagle readFile writeFile] \
+ false false
+ }
#
# NOTE: This procedure returns a formatted, possibly version-specific,
# package name, for use in logging.
#
Index: client/1.0/pkgr.eagle.asc
==================================================================
--- client/1.0/pkgr.eagle.asc
+++ client/1.0/pkgr.eagle.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJXukjoAAoJEFAslq9JXcLZcP8P/R+gHDIAU2RDsyd2e/WS0wp8
-nukTGsFJGCsU2iJj25+/Fg6Wch5Q/+y95MrG3b6/IbxGIg3Ceoya9PRe327E/GLL
-k6XmYH4aqEpDxeo9Wdnbp650NUnae17Rxz0OKKqkZFKgGYdYHWlRWkkgQDejbkF5
-/sCN2YujnZW73G5q3fO4c2SgLIAbqa1vTKNLx+y4JQD29DKPfhSdnyAXF1s78cEe
-KjC4fBNuzmZguX47IKRkgVftS+HCsDOTg5OE8z7Jfz6nDqBG0I8AfdjjaKlqfAPk
-+MgQW5soVo+k5IctK5NOPnZgS9oQr6PeB/FRxEFQ3LMAJ/1HoXg1rx1RjvcoZFVx
-y11qL2eAbbhA9BGKnoCpWAba2Rd/K0gNaX/lPEzuQ2gqPyDiTKLKlMVkFoe3veF2
-qocMKB5rKT6IYo+VvTWnyWpRRXh5VX2MKvb4ODto0NpBiGUXrFsrahhRkGPeIsrY
-unpquq7Y0ifm4b0cgbo2dKcDe0tpEP52RN9CS4I5T1H835z16cThGKZQQojjHbwO
-sctFN9dn3t0ueaw5lJVeLU/VarWYlpv7OE9RsMrTL2qwxjq04eOYmyF1x0NE1omC
-8TeRV/TGRUMeEHxKNBU0ousDnfuYNO3Az0cMQr5Qz2KBU9NEuxxTwwajubHDOB3K
-rf+q63yhjWoEk9t2PAtZ
-=2Bom
+iQIcBAABCAAGBQJXwrG4AAoJEFAslq9JXcLZTXYP/isdVHPK7vJtFtSKkuem+tep
+g8x4+kqh/i+aUcIAs0v9SHZR2vHxrI1I4lzl/V+qAyHsRG9sRMEdGihMo2yMFElD
+TYwNKfCnZSo0sAlN/4s6RogcRPHbNvzJlUfMshyzQVxDz2qmwzun/0YywrDZ+DaP
+CNN7ggia+qFqv8yCaWemk+Aelw3mr8w684FMJ2Zo/Ut/LXGG6l07S7lcJJCPrw1E
+EDvv6TG8jS/WmskYEjzB8JgI4r76rfb71vF1QbgxFKUHl/MlPOcgzkGhoPTTh4Pr
+AK3kOpQ1zOGeIIAyXJ1Q2Jsv9BElELH93MkbLe3wHiJsD8TKYrzZ4W8iKSrdv76o
+MzqyponsMi69wT+/PdEgKn/q/sL3j+b8AL/RcHMp/9FeEHG7KKQSIfh8fN9eCYyY
+2SOzvXoELFZh+/jSHpIbWak/wVdyhVZY5zYyZDKIfClQaw82qSaMC2c/T68Fttr4
+4hJj4/466F+BvD38rMKyQUh4iU807BHnUzB40Jl1+lOt+cyJzytZxf2q8x398mXp
+5SBRvEwnO1VRL67i+lg8eIBF4KJ6PaJP33xITUA8rN3ruIu9/keKS7O3nkDMcDfX
+JbtzsFto3Gp6udV+bMD4iHWt2Q5K3YBKJNDdTkb+aqxzaOIrXkXy7nZIbwT+S0fH
+2gaTSJqG3vkFGW2lOz1L
+=4Bis
-----END PGP SIGNATURE-----
Index: client/1.0/pkgr.eagle.harpy
==================================================================
--- client/1.0/pkgr.eagle.harpy
+++ client/1.0/pkgr.eagle.harpy
@@ -19,50 +19,50 @@
None
Mistachkin Systems
- 47e8d3e7-3dd5-48bf-b342-836b23e32ebf
+ c74e1f6b-2d84-4211-9e57-7dc5900166a6
SHA512
Script
- 2016-08-25T21:27:05.9892578Z
+ 2016-08-28T09:40:46.8098359Z
-1.00:00:00
0x9559f6017247e3e2
- xZWjx0F7tXs5DFfZ8OV17iIkP3V4Ob2+9YfsMYWt4CYXZz2HJCd+3ZAH5wUlJD2WyIjI/X/Hn0u1
- dly2rGwIV1LpZD4wCu1cuQmuLpkTS2r6u3fpxdIZ3qQ5264Z5OpTS96QP8ol/87wC669gf1qi6in
- Fv7Fd7u/zAZQ458iSlF6Y3GLWKlgRc6byEPUdPlqfUMuTRaU+xLxtyYgIG7jroktCCQYGNpLxizb
- +MM5qJE07SfGtLx1WtNzYB2hIJrvsxu9Uj7GCNV+S5QDcYw8Odu9u340YlIdZGdrxMPVPdYqaZ4i
- RUcH6U1JOzvx90x/b52DWsWAxyjKhMdjhDP1FKGVG0Lb78EybjlotbwQujVjf7KV2PY/XA14O2FW
- KHXzbUNiyvDP0D8m5P6RY8Je39+Y6vf9r14o0eV8o1WeWBNNAFY5zVFjRqAsfo+jBiAjJ7jIpYHK
- cedFZsLGO7LR2C7pJYU8Od3Gfu9IEuJAwTiB4ApgyTp7YNzwskKQ8bIcPTaZcVH6cK1usFbFsRfH
- o63s5iNu3+8Z9pzc8PxPQPX4XnYy3dnntzREgvJoASfGuEWiLoTkW8n5H3/uY+8YAsSx+IJJt+E4
- LECe2WHoIWN4ilRscFXWL/y7SD/F8o3lAZhR5DfGUL4qbCkVkhIDHC0aU1ud/gQk4c4OsrCuunDU
- +8SRlTrAB7ol+iKPOczA1d6Xo8aNeiW5fbkKE29txkuV/vMkCK/DqrFtNForGVPHfQABp16nf1ey
- WfZ7kLv+ZYqBsVYxqzp6HiA3WRLokna6nqeeg+KdgfMdHlkXBArz5W0PBTPRS+2BSgzBhU5Qgvb1
- BTvFRIHRXpEuXVWAeGJjoE1MvGzrWygIuQuGJ9bEcHH6smLwocsqE+IYBv0494IvhENdoD0YbZ+J
- bj+2nJuXRgSuEH/FjOKECqoGYiVmARh8wGVbGzDfhpqMgfQrelo4dby8HcMAjJj34lJIKL0jMZ8W
- QdncMwtWVWja8BgiYxqg2bSMbfRzVPBaqIdz4iqWcyxI9TXJvqLED3cLR/QbNan3IKNozERMRogk
- DfMF4adEA83Pxri/y0/Yjn4lyT+cRk2vfkSvAH/R6Nb9RkD6QOYl3ov4wiX2OyvXyGJsjNV7VGqJ
- iRHwn7wYW1b1XT0dB4RCQi5VyHSpsLTijVWAyWzDXLh8/iZ+w+UKcQkynqYhWgz35zKwNJ2uZTtY
- M0UveF5a8Qck72IjPXoavRtkHG+9DtrCbfnTckjufRcqHujtrzP3uqtullJkyL64jwe+ZfpWYNOr
- 9DHG9Qy+exFyKDBWe6otMIte6xbqTnTrJyAseC+ME08ycOTpL9g/CLKa82VnN6zbOTk6r6cUfPYY
- U4nq/41AszZpkkZ58VckxqIRWZv3Af1JGL0ABaXgbtGv7pEQVl1LENyOq8LYtVUsNsM/mql1KTul
- tauYEq9K7Lu1fp/HAD/RLwW1sHFiZDv4qlZDxTQQMzh/VZh3KDIKH0+RLBkZpERjiNayDVGbj6r6
- P2QrZWabiJ/36JVB/D3m8PVy00+8RBf5A8qWrL7Nj9cUzHksW47iVgwdQnN6rG7vBLBDJATnnc2h
- afaEvlWT3DMUk+p7eeSxhGv28Zkp9+x65bdxxv5LFlmgsjC0/a26APirB8KBcQeRLMTxChYOkUKM
- 3hmqNhS9FYK8sl35KbpL72cU1amqqCRSzwWtkkEDZCayeYCJpxMpapwXAWGHkPmiCc87hvrogrZP
- 43147qM1xNf6ZwLWlPlTQg2022GQnRbo+1rgrSjfWtIbdBdHCsHF/sqirwev+Qh3ZxiJlbwEoPEM
- +QjJ0dXzxp7ztVyOq7Aib5UjWbtheGUg+kVN3yfg+9m2ykJbxked8wmm53cpBHHsFEtkQYQm7TsW
- h1dqMKuyhD09ol0z/XNVMDPlwNfiokIhHGqfB3lVPuz2m4poLcFZKqLl/dswHhxrKKcODkk33Ixt
- JOt+1uKQjRZZKnv+Yq86iZCShofv59qRqVbkg9PctwUnJm5NU9cxNY2kv2eDXVCY2sbGFB27i7PZ
- TVOWjcOJX9ZfFPs9ppsyNPJdQKmLeqY/t2ZsIXovlYZttf9Qe0iSLy7KeWgAXVzrtsEQGKcouNDM
- w/eOfWr1qjKxIT8fb7kReeyiu2hdUFAf8jxSGBr0R9DeFH95Xh1/w3q9JqM+SoKuM3KhFajx7ngA
- omkte7qTLM+9ZXe+6D11pulHghtE+fv93V0dBsg+j/qVANTIR/wUBuHKdSEG9sqK1LbpfTQxia3k
- 7ARBimf/ok6mTIEolkdH5M5uYQ0XBtrjaqYUJNi9awFbzG1jaszJv37qKzwCMq0rb8TLejQzxNni
- cKLfNdRUgtlR2Dg4CQ4J2ZynPp/JtAUWrI2pMDHR124j53CJjuOpFJRa2T2u3DQm9H0Mepu1pJ+9
- zXOCg6eSIcXavmOQgC4MofB/STqq6tHWEzfuuUSyZ6xOPZvaF8n35EIKOpbWy22bpj1/89DBbevJ
- F3IJTazvkSkJM6fq++1ApL5I5UIJEJ7nOKV7t1BNXAYYwQqRT3PLIikPQLAXDn7wNZL1KR0idp8d
- X7cGdyPrIPjFuFkBncQqvwEtNi/nL0vxi4TmjNZycHAWMQUZStchpXVfo5EyGbrm5Gpb99x8lrt5
- 4LEhKZRYzNCOt9YiHMAGjxewYPWdpjtrNGV1AfTiz72ST6hGtpvvULw10anP/mIHXiwqBH4=
+ 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
Index: client/1.0/pkgr.eagle.harpy.asc
==================================================================
--- client/1.0/pkgr.eagle.harpy.asc
+++ client/1.0/pkgr.eagle.harpy.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJXukjrAAoJEFAslq9JXcLZbY4P/jE4D00nd7/s6rdf5/OR6p95
-5GtSB/7k84G7ARinCTfFYrIH6NiOJja2Q/KzZ7ZyrZPjUbu6TY1zdc5YjhsMJ/n+
-tNJyqX0wR8puVMRWKWUHdjQoldMFit52SSj9469WFwD7hoNY1U6JxD3Y9bPXQFIs
-k7lOk93FZccEcQ9fTfbYxM5aFSVdAJ8GeWK3dO4/Qm0OkBONxFPkay+1SD9+k+fQ
-RmN8h726hro6/VP6KCHSfgvb0ZMnaT7tdxtE3+JNd5ImJkiGG+J0DIr1VsJ7fRe4
-NeoXi7TJ5zgaVU3Mh0IJ5DOgIGTD38Hp6XDiA1hLO14UAJYUAOdDoPKxxZBShbje
-8nVVFuJ0UDSEPUejV8q15B9xbgf7YFogA69LgswtmVCixMATyFLYabBQUqBpT4QI
-Aed9mYFEFCsao8WbBr7BP3gcoiSAizL+wSi7IkCTZmSybC3F1eVZe8K5X6qwD3yy
-BNtOb9MyjSYDgOZ6xrJI7T9lK3wrjcrthV6QoIb88wkdZkFFKUesRfN6eTzyG1Xr
-bX6YetT1anL9Iny0i6S1R1f5KgWcWnLr8QGDQohTLR80H+aULh62FgXH/wZdZazq
-wGzqV63ue1d7YofQHc7xpdIhxFQKg9WDqCSOsQsUfs8IubKJJmAwgY39nefdD49a
-ng/KOXn6b9mDv2AUrWyc
-=GG1I
+iQIcBAABCAAGBQJXwrG6AAoJEFAslq9JXcLZ0pkQAL83BkvudG9MI+UJLV73Bc05
+XSP2WbCJumtYwgR9DXT4Rd4vyg13kwXtaWVR8eJSviyjLEh3DlYpPmbGT1fwv1Mm
+S+1RvTwkgoclFU3T1L3EheZHOfJS5cPbYb07vGPlH3BvW/lTe2BUpo2teOUkrDjj
+/AuD+PbKef2NzafOd05WpCHvMATK4wxOhQ+zZiQepuR0pFIJEP3iOAWX6gd+9Wrx
+EjGrbxZOwB2kQMzHryVWnHWdb/pRDm8lLbGltvL3QEE3IfnezQk+l+QWtVoqmIaQ
+wQb3uevC6bkZTI69IDO2SzN4X1xk8qjX2gDLg0DQ3l9+etSXLRYAysV4BfZkL2lP
+p4rY8RAIrhcmYP3dBKh/1lTQj5N31/At5dLV7OVS0drhEYTjQMEfYu1CSSe5HcBt
+GwVAePqx0qOwwkh/BQ8lpzaARIxOz4xQ1Rb9kj++G4Rn/VpKhcxp6Szz5bN1A9Qv
+DiAmJ2Nt0o/tROdEeyko0LTTjwiHXeL0AXQwOLpId/Ub6iUBg+jopTB6yZ2ILtBy
+52nQxBSLrUGRbufsIUNixnxkVCG96HcHP+rqL8Sjh0nM0tDeJqYie1bRm9swEEpz
+XmwDm2ppPNmlOlMolSIZeW2zFS/NpwPTh1Hl5AlW6G+qFMdDITH5YPbzrejp5bta
++22SBhBjMWsQpb9c1X4s
+=0lhA
-----END PGP SIGNATURE-----
ADDED externals/Eagle/lib/Eagle1.0/auxiliary.eagle
Index: externals/Eagle/lib/Eagle1.0/auxiliary.eagle
==================================================================
--- externals/Eagle/lib/Eagle1.0/auxiliary.eagle
+++ externals/Eagle/lib/Eagle1.0/auxiliary.eagle
@@ -0,0 +1,122 @@
+###############################################################################
+#
+# auxiliary.eagle --
+#
+# Extensible Adaptable Generalized Logic Engine (Eagle)
+# Eagle Auxiliary Package 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 {
+ #
+ # NOTE: This procedure returns the value of an environment variable, if
+ # it actually exists; otherwise, an empty string is returned.
+ #
+ proc getEnvironmentVariable { name } {
+ global env
+
+ return [expr {[info exists env($name)] ? $env($name) : ""}]
+ }
+
+ #
+ # NOTE: This procedure accepts an any number of arguments. The arguments
+ # are appended into one big string, verbatim. The resulting string
+ # is returned. Normally, this procedure is used to avoid undesired
+ # string interpolation operations.
+ #
+ proc appendArgs { args } {
+ set result ""; eval append result $args
+ }
+
+ #
+ # NOTE: This procedure attempts to locate the first named value we are
+ # interested in. The dictionary argument must be a list with an
+ # even number of elements in the following format:
+ #
+ # ...
+ #
+ proc getDictionaryValue { dictionary name {default ""} {wrap ""} } {
+ foreach {pairName pairValue} $dictionary {
+ #
+ # NOTE: Does this name match the one specified by the caller?
+ #
+ if {$pairName eq $name} then {
+ #
+ # NOTE: Return the value, optionally wrapped.
+ #
+ return [appendArgs $wrap $pairValue $wrap]
+ }
+ }
+
+ #
+ # NOTE: No match was found, return the default value.
+ #
+ return $default
+ }
+
+ #
+ # NOTE: This procedure exports one or more commands from the specified
+ # namespace and imports them into the global namespace, optionally
+ # forgetting all previous imports from the specified namespace.
+ #
+ proc exportAndImportPackageCommands { namespace exports forget force } {
+ #
+ # NOTE: Forget any previous commands that were imported from
+ # this namespace into the global namespace?
+ #
+ if {$forget} then {
+ namespace eval :: [list namespace forget [appendArgs $namespace ::*]]
+ }
+
+ #
+ # NOTE: Process each command to be exported from the specified
+ # namespace and import it into the global namespace, if
+ # necessary.
+ #
+ foreach export $exports {
+ #
+ # NOTE: Force importing of our exported commands into the global
+ # namespace? Otherwise, see if the command is already
+ # present in the global namespace before trying to import
+ # it.
+ #
+ if {$force || \
+ [llength [info commands [appendArgs :: $export]]] == 0} then {
+ #
+ # NOTE: Export the specified command from the specified namespace.
+ #
+ namespace eval $namespace [list namespace export $export]
+
+ #
+ # NOTE: Import the specified command into the global namespace.
+ #
+ set namespaceExport [appendArgs $namespace :: $export]
+
+ if {$force} then {
+ namespace eval :: [list namespace import -force $namespaceExport]
+ } else {
+ namespace eval :: [list namespace import $namespaceExport]
+ }
+ }
+ }
+ }
+
+ #
+ # NOTE: Provide the Eagle "auxiliary" package to the interpreter.
+ #
+ package provide Eagle.Auxiliary \
+ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]
+}
+
ADDED externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy
Index: externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy
==================================================================
--- externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy
+++ externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy
@@ -0,0 +1,68 @@
+
+
+
+ None
+ Mistachkin Systems
+ 91ef85fe-7679-47c7-a0e9-f7d7a080e4b4
+ SHA512
+ Script
+ 2016-08-27T05:29:08.8293672Z
+ -1.00:00:00
+ 0x9559f6017247e3e2
+
+ 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
+
+
ADDED externals/Eagle/lib/Eagle1.0/file1.eagle
Index: externals/Eagle/lib/Eagle1.0/file1.eagle
==================================================================
--- externals/Eagle/lib/Eagle1.0/file1.eagle
+++ externals/Eagle/lib/Eagle1.0/file1.eagle
@@ -0,0 +1,75 @@
+###############################################################################
+#
+# file1.eagle --
+#
+# Extensible Adaptable Generalized Logic Engine (Eagle)
+# Eagle File 1 Package 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 {
+ #
+ # NOTE: This procedure reconfigures the specified channel to full binary
+ # mode.
+ #
+ proc makeBinaryChannel { channel } {
+ fconfigure $channel -encoding binary -translation binary; # BINARY DATA
+ }
+
+ #
+ # NOTE: This procedure reads all data from the specified binary file and
+ # returns it.
+ #
+ proc readFile { fileName } {
+ set channel [open $fileName RDONLY]
+ makeBinaryChannel $channel
+ set result [read $channel]
+ close $channel
+ return $result
+ }
+
+ #
+ # NOTE: This procedure writes all data to the specified binary file and
+ # returns an empty string. Previous data contained in the file,
+ # if any, is lost.
+ #
+ proc writeFile { fileName data } {
+ set channel [open $fileName {WRONLY CREAT TRUNC}]
+ makeBinaryChannel $channel
+ puts -nonewline $channel $data
+ close $channel
+ return ""
+ }
+
+ #
+ # NOTE: This procedure appends data to the specified binary file and
+ # returns an empty string. Previous data contained in the file,
+ # if any, is preserved.
+ #
+ proc appendFile { fileName data } {
+ set channel [open $fileName {WRONLY CREAT APPEND}]
+ makeBinaryChannel $channel
+ puts -nonewline $channel $data
+ close $channel
+ return ""
+ }
+
+ #
+ # NOTE: Provide the Eagle "file" package to the interpreter.
+ #
+ package provide Eagle.File \
+ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]
+}
+
ADDED externals/Eagle/lib/Eagle1.0/file1.eagle.harpy
Index: externals/Eagle/lib/Eagle1.0/file1.eagle.harpy
==================================================================
--- externals/Eagle/lib/Eagle1.0/file1.eagle.harpy
+++ externals/Eagle/lib/Eagle1.0/file1.eagle.harpy
@@ -0,0 +1,68 @@
+
+
+
+ None
+ Mistachkin Systems
+ 5508fd9d-1cc7-41e6-af44-6f5ae6f6ed0a
+ SHA512
+ Script
+ 2016-08-27T08:02:54.7688203Z
+ -1.00:00:00
+ 0x9559f6017247e3e2
+
+ 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
+
+
ADDED externals/Eagle/lib/Eagle1.0/pkgIndex.eagle
Index: externals/Eagle/lib/Eagle1.0/pkgIndex.eagle
==================================================================
--- externals/Eagle/lib/Eagle1.0/pkgIndex.eagle
+++ externals/Eagle/lib/Eagle1.0/pkgIndex.eagle
@@ -0,0 +1,27 @@
+###############################################################################
+#
+# pkgIndex.eagle --
+#
+# Extensible Adaptable Generalized Logic Engine (Eagle)
+# Package Index 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: $
+#
+###############################################################################
+
+if {![package vsatisfies [package provide Tcl] 8.4]} {return}
+if {![package vsatisfies [package provide Eagle] 1.0]} {return}
+
+package ifneeded Eagle.Auxiliary 1.0 \
+ [list sourceWithInfo [file join $dir auxiliary.eagle]]
+
+package ifneeded Eagle.File 1.0 \
+ [list sourceWithInfo [file join $dir file1.eagle]]
+
+package ifneeded Eagle.Platform 1.0 \
+ [list sourceWithInfo [file join $dir platform.eagle]]
ADDED externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy
Index: externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy
==================================================================
--- externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy
+++ externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy
@@ -0,0 +1,68 @@
+
+
+
+ None
+ Mistachkin Systems
+ 0ac0c0e2-f1d1-431a-bc48-e098d0ca87c6
+ SHA512
+ Script
+ 2016-08-28T09:40:06.7737031Z
+ -1.00:00:00
+ 0x9559f6017247e3e2
+
+ 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
+
+
ADDED externals/Eagle/lib/Eagle1.0/pkgIndex.tcl
Index: externals/Eagle/lib/Eagle1.0/pkgIndex.tcl
==================================================================
--- externals/Eagle/lib/Eagle1.0/pkgIndex.tcl
+++ externals/Eagle/lib/Eagle1.0/pkgIndex.tcl
@@ -0,0 +1,27 @@
+###############################################################################
+#
+# pkgIndex.tcl --
+#
+# Extensible Adaptable Generalized Logic Engine (Eagle)
+# Package Index 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: $
+#
+###############################################################################
+
+if {![package vsatisfies [package provide Tcl] 8.4]} {return}
+if {[string length [package provide Eagle]] > 0} then {return}
+
+package ifneeded Eagle.Auxiliary 1.0 \
+ [list source [file join $dir auxiliary.eagle]]
+
+package ifneeded Eagle.File 1.0 \
+ [list source [file join $dir file1.eagle]]
+
+package ifneeded Eagle.Platform 1.0 \
+ [list source [file join $dir platform.eagle]]
ADDED externals/Eagle/lib/Eagle1.0/platform.eagle
Index: externals/Eagle/lib/Eagle1.0/platform.eagle
==================================================================
--- externals/Eagle/lib/Eagle1.0/platform.eagle
+++ externals/Eagle/lib/Eagle1.0/platform.eagle
@@ -0,0 +1,278 @@
+###############################################################################
+#
+# platform.eagle --
+#
+# Extensible Adaptable Generalized Logic Engine (Eagle)
+# Eagle Platform Package 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 {
+ #
+ # NOTE: This is the procedure that detects whether or not we are running
+ # in Eagle (otherwise, it is assumed that we are running in vanilla
+ # Tcl). This procedure must work correctly in both Tcl and Eagle
+ # and must return non-zero only when running in Eagle.
+ #
+ proc isEagle {} {
+ #
+ # NOTE: Nothing too fancy or expensive should be done here. In theory,
+ # use of this procedure should be rare; however, in practice, this
+ # procedure is actually used quite a bit (e.g. by the test suite).
+ #
+ return [expr {[info exists ::tcl_platform(engine)] && \
+ [string compare -nocase eagle $::tcl_platform(engine)] == 0}]
+ }
+
+ #
+ # NOTE: This is the procedure that detects whether or not we are running
+ # in Eagle on Mono (otherwise, we are running in Tcl or in Eagle on
+ # the .NET Framework). This procedure must function correctly in
+ # both Tcl and Eagle and must return non-zero only when running in
+ # Eagle on Mono.
+ #
+ proc isMono {} {
+ #
+ # NOTE: Nothing too fancy or expensive should be done here. In theory,
+ # use of this procedure should be rare; however, in practice, this
+ # procedure is actually used quite a bit (e.g. by the test suite).
+ #
+ return [expr {[info exists ::eagle_platform(runtime)] && \
+ [string compare -nocase mono $::eagle_platform(runtime)] == 0}]
+ }
+
+ #
+ # NOTE: This procedure returns non-zero if the logged on user has full
+ # administrator rights on this machine. Currently, this only works
+ # in Eagle; however, it may work from native Tcl in the future.
+ #
+ proc isAdministrator {} {
+ return [expr {[info exists ::eagle_platform(administrator)] && \
+ $::eagle_platform(administrator)}]
+ }
+
+ #
+ # NOTE: This is the procedure that detects whether or not we are running
+ # on Windows (otherwise, it is assumed that we are running on some
+ # flavor of Unix). This procedure must function correctly in both
+ # Tcl and Eagle and must return non-zero only when on Windows.
+ #
+ proc isWindows {} {
+ #
+ # NOTE: Nothing too fancy or expensive should be done here. In theory,
+ # use of this procedure should be rare; however, in practice, this
+ # procedure is actually used quite a bit (e.g. by the test suite).
+ #
+ return [expr {[info exists ::tcl_platform(platform)] && \
+ $::tcl_platform(platform) eq "windows"}]
+ }
+
+ #
+ # NOTE: This procedure should return non-zero if and only if only there
+ # is currently an interactive user that can respond to prompts and
+ # other requests for input.
+ #
+ proc isInteractive {} {
+ #
+ # TODO: Is something more complex required here?
+ #
+ return [expr {[info exists ::tcl_interactive] && $::tcl_interactive}]
+ }
+
+ #
+ # NOTE: This procedure adds the specified directory to the PATH. It is
+ # designed to work on the various flavors of Windows and Unix.
+ #
+ proc addToPath { dir } {
+ global env
+ global tcl_platform
+
+ #
+ # NOTE: This should work properly in both Tcl and Eagle.
+ # Normalize to an operating system native path.
+ #
+ set dir [file nativename $dir]
+
+ #
+ # NOTE: On Windows, use PATH; otherwise (i.e. Unix), use
+ # LD_LIBRARY_PATH.
+ #
+ if {[isWindows]} then {
+ set name PATH
+ } else {
+ set name LD_LIBRARY_PATH
+ }
+
+ #
+ # NOTE: Make sure the directory is not already in the
+ # loader search path.
+ #
+ if {[info exists tcl_platform(pathSeparator)]} then {
+ set separator $tcl_platform(pathSeparator)
+ } elseif {[isWindows]} then {
+ set separator \;
+ } else {
+ set separator :
+ }
+
+ #
+ # NOTE: Does the necessary environment variable exist?
+ #
+ if {[info exists env($name)]} then {
+ #
+ # NOTE: Grab the value of the environment variable.
+ #
+ set value $env($name)
+
+ #
+ # BUGBUG: Consider exact case only for now.
+ #
+ if {[lsearch -exact [split $value $separator] $dir] == -1} then {
+ #
+ # NOTE: Append the directory to the loader search path.
+ # This allows us to subsequently load DLLs that
+ # implicitly attempt to load other DLLs that are
+ # not in the application directory.
+ #
+ set env($name) [join [list $value $dir] $separator]
+
+ #
+ # NOTE: Yes, we altered the search path.
+ #
+ return true
+ }
+ } else {
+ #
+ # NOTE: Create the loader search path with the directory.
+ #
+ set env($name) $dir
+
+ #
+ # NOTE: Yes, we created the search path.
+ #
+ return true
+ }
+
+ #
+ # NOTE: No, we did not alter the search path.
+ #
+ return false
+ }
+
+ #
+ # NOTE: This procedure removes the specified directory from the PATH.
+ # It is designed to work on the various flavors of Windows and
+ # Unix.
+ #
+ proc removeFromPath { dir } {
+ global env
+ global tcl_platform
+
+ #
+ # NOTE: This should work properly in both Tcl and Eagle.
+ # Normalize to an operating system native path.
+ #
+ set dir [file nativename $dir]
+
+ #
+ # NOTE: On Windows, use PATH; otherwise (i.e. Unix), use
+ # LD_LIBRARY_PATH.
+ #
+ if {[isWindows]} then {
+ set name PATH
+ } else {
+ set name LD_LIBRARY_PATH
+ }
+
+ #
+ # NOTE: Make sure the directory is in the loader search
+ # path.
+ #
+ if {[info exists tcl_platform(pathSeparator)]} then {
+ set separator $tcl_platform(pathSeparator)
+ } elseif {[isWindows]} then {
+ set separator \;
+ } else {
+ set separator :
+ }
+
+ #
+ # NOTE: Does the necessary environment variable exist?
+ #
+ if {[info exists env($name)]} then {
+ #
+ # NOTE: We need to separate the directories in the path
+ # so that we can selectively remove the one we are
+ # looking for.
+ #
+ set dirs [split $env($name) $separator]
+
+ #
+ # BUGBUG: Consider exact case only for now.
+ #
+ set index [lsearch -exact $dirs $dir]
+
+ #
+ # NOTE: Is the directory in the loader search path?
+ #
+ if {$index != -1} then {
+ #
+ # NOTE: Remove the directory from the loader search path.
+ #
+ set dirs [lreplace $dirs $index $index]
+
+ #
+ # NOTE: Replace the original loader search path with
+ # our modified one.
+ #
+ set env($name) [join $dirs $separator]
+
+ #
+ # NOTE: Yes, we altered the search path.
+ #
+ return true
+ }
+ }
+
+ #
+ # NOTE: No, we did not alter the search path.
+ #
+ return false
+ }
+
+ #
+ # NOTE: This procedure returns non-zero if the specified file names refer
+ # to the same file, using the most robust method available for the
+ # script engine and platform.
+ #
+ proc isSameFileName { fileName1 fileName2 } {
+ if {[isEagle]} then {
+ return [file same $fileName1 $fileName2]
+ } else {
+ if {[isWindows]} then {
+ return [string equal -nocase $fileName1 $fileName2]
+ } else {
+ return [string equal $fileName1 $fileName2]
+ }
+ }
+ }
+
+ #
+ # NOTE: Provide the Eagle "platform" package to the interpreter.
+ #
+ package provide Eagle.Platform \
+ [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]
+}
+
ADDED externals/Eagle/lib/Eagle1.0/platform.eagle.harpy
Index: externals/Eagle/lib/Eagle1.0/platform.eagle.harpy
==================================================================
--- externals/Eagle/lib/Eagle1.0/platform.eagle.harpy
+++ externals/Eagle/lib/Eagle1.0/platform.eagle.harpy
@@ -0,0 +1,68 @@
+
+
+
+ None
+ Mistachkin Systems
+ c497f05f-67d0-4afd-8902-24ca3891e1d8
+ SHA512
+ Script
+ 2016-08-28T08:22:02.1194062Z
+ -1.00:00:00
+ 0x9559f6017247e3e2
+
+ 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
+
+