Index: client/1.0/pkgd.eagle
==================================================================
--- client/1.0/pkgd.eagle
+++ client/1.0/pkgd.eagle
@@ -139,10 +139,21 @@
if {![info exists temporaryRootDirectory]} then {
set temporaryRootDirectory \
[::PackageRepository::getFileTempDirectory PKGD_TEMP]
}
+
+ #
+ # NOTE: Is this package being run by the package installer tool? If so,
+ # all downloaded packages should be automatically persisted to the
+ # library path.
+ #
+ variable viaInstall; # DEFAULT: false
+
+ if {![info exists viaInstall]} then {
+ set viaInstall false
+ }
}
#
# NOTE: This procedure escapes a single name/value pair for use in a URI
# query string. The name argument is the name of the parameter.
@@ -169,10 +180,82 @@
# NOTE: Return a directory parallel to the one containing the library
# directory.
#
return [file join [file dirname [info library]] pkgd]
}
+
+ #
+ # NOTE: This procedure, which is only used with native Tcl, generates a
+ # package index file (i.e. "pkgIndex.tcl") suitable for use with
+ # native Tcl, 8.4 or higher. It will recursively [source] other
+ # native Tcl package index files that are within the configured
+ # persistent root directory, thereby causing all packages located
+ # within it to become available. Since Eagle (by default) already
+ # performs a recursive search for its package index files, this
+ # procedure is not necessary for Eagle packages.
+ #
+ proc maybeCreateMasterTclPackageIndex {} {
+ variable persistentRootDirectory
+
+ if {![info exists persistentRootDirectory]} then {
+ error "persistent root directory not set"
+ }
+
+ if {[string length $persistentRootDirectory] == 0} then {
+ error "persistent root directory is invalid"
+ }
+
+ if {![file isdirectory $persistentRootDirectory]} then {
+ error "persistent root directory does not exist"
+ }
+
+ set fileName [file join $persistentRootDirectory pkgIndex.tcl]
+
+ if {[file exists $fileName]} then {
+ return false
+ }
+
+ writeFile $fileName [string trim [string map [list \r\n \n] {
+###############################################################################
+#
+# pkgIndex.tcl --
+#
+# Extensible Adaptable Generalized Logic Engine (Eagle)
+# Generated Recursive Package Index File -- PLEASE DO NOT EDIT
+#
+# 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}
+
+set pkgd(savedDir) $dir; set pkgd(dirs) [list $pkgd(savedDir)]
+
+for {set pkgd(i) 0} {$pkgd(i) < [llength $pkgd(dirs)]} {incr pkgd(i)} {
+ set pkgd(dir) [lindex $pkgd(dirs) $pkgd(i)]
+
+ if {$pkgd(i) > 0} then {
+ set pkgd(file) [file join $pkgd(dir) pkgIndex.tcl]
+
+ if {[file exists $pkgd(file)]} then {
+ set dir $pkgd(dir); source $pkgd(file)
+ }
+ }
+
+ eval lappend pkgd(dirs) \
+ [glob -nocomplain -types {d} [file join $pkgd(dir) *]]
+}
+
+set dir $pkgd(savedDir); unset -nocomplain pkgd
+ }]]
+ }
#
# NOTE: This procedure returns non-zero if the specified file seems to be
# an OpenPGP signature file. The fileName argument is the name of
# the file to check, which may or may not exist. The nameOnly
@@ -624,10 +707,11 @@
proc downloadFiles {
language version fileNames persistent usePgp useAutoPath } {
variable clientDirectory
variable persistentRootDirectory
variable temporaryRootDirectory
+ variable viaInstall
verifyLanguageAndVersion $language $version isClient
set temporaryDirectory [file join \
$temporaryRootDirectory [appendArgs \
@@ -691,11 +775,11 @@
set downloadDirectories [list]
foreach downloadedFileName $downloadedFileNames {
set directory(temporary) [lindex $downloadedFileName 1]
- if {$persistent} then {
+ if {$persistent || $viaInstall} then {
set fileNameOnly [lindex $downloadedFileName 0]
set directory(persistent) [lindex $downloadedFileName 2]
file mkdir $directory(persistent)
set command [list file copy]
@@ -722,15 +806,16 @@
foreach downloadDirectory $downloadDirectories {
addToAutoPath $language $downloadDirectory
}
}
- if {$persistent} then {
+ if {$persistent || $viaInstall} then {
if {[isEagle]} then {
file delete -recursive -- $temporaryDirectory
} else {
file delete -force -- $temporaryDirectory
+ maybeCreateMasterTclPackageIndex
}
}
return $downloadDirectories
}
Index: client/1.0/pkgd.eagle.asc
==================================================================
--- client/1.0/pkgd.eagle.asc
+++ client/1.0/pkgd.eagle.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJXzxNqAAoJEFAslq9JXcLZtd8QALONgM7czYxCB+OeZL48IwkJ
-XsmdpzbizTHjzEvmopf6+w3b0OLFFfzdOkw9DoyIxfWe24cLtflBd5kNaQlD5RbM
-vlVSGHUYCDZIAfH1Z5uwvJjPDXhlYjsQ2laOvpwbMH9hB12Hp5MZ/uLYhL0jZE9M
-NRFuXf5VZlng/oXxw9GbttVT1sxSrW16eMiUIpd41ld+rjpiFU0Wst2LUuHWDGCE
-Xw7bjMvxUuoMhOvGp0iqHSyOaUAN/9Q9X/ATzodgfYbBuFQnJ6dF3feH3Lvun6mW
-O+92PH679APHJPxQnsBgDlEPur8oegsfxqgE/85jJpSFr7CzEh+dEUlG9oKbPCMv
-vL+s1Y4VYaM7HS1H4lwEq2QVRPAPxqT4i9cot+lPUUv4VGEFguabw7wAQXvPGpOX
-eT66dXKF3Q1z/rC9dmkJwqJRLXO0652gWBbcM9lscLCA+2Anqq+sUctRaQwSEIgE
-0COvkhv8+7wDv2RknPjG02eMnuwUPyrYUDGkX3e2mRDLpJDAJd6pxN/pu4BxQ4DE
-fhjzUKQUg/hgQhKRDnara3yPaPTm0Sv2g7HShlvDmPRB7ZaXpVgNnSniTGAXtOgB
-rIvq2eXIwoadfm45azWB+t9kIFzKfH9WmdjZ/FcdV6s60ZJ/F8uZaisEgeSrEDjQ
-hvxRhjXZPqpktF7u6C6x
-=dZGF
+iQIcBAABCAAGBQJX1INbAAoJEFAslq9JXcLZPlEP/2x23p5WGAcpuVVIsaU/FdZw
+nz2hIfhjW1yb3PYWmMpoViP8EqgWEGODa/O7AVV/C7ZflmljCi71+6B62Vt5xXSy
+gKXrFUk5VcRXiPEvvg1NuLRw8/WaNSsK5BtBMang404J/r2pY+i/JLvaaIWY+ACb
+GlDM682qyBr4vLzb/5CZY6d+pqw4k0OrVJ64OJi9Bzg3XXo6tbnd0rYuvsOFFC5J
+48UxO66YLOXhkGg+if/AUpskbPYkONM+2qxbAh7ob1AlRWwym+3xm4H7bs2N/xXS
+6Fh1CYeF88ppLT6WKEhs/v4Xj8VTTiQ/1Au5xQYj6reyKySFbKT1rmL2YROw1enF
+/blXrMK1UxzuOBaSoK1TPLztpS66SXw4SucTy2FWDWBffBXTzK4HHd2oVxXJzp1m
+ppXI/4scoL1h/PzcaLvH3uSBKrmJPv7hXxvpq2qR+gd20JRljXI35vJiZTRF86bR
+QjT5Fd9vWJU77U3Hl7m/Y5KIpkC5Mz7z8rBxUaJPM4SNgRzPIRxG+vR7t5IgQyVY
+DFsgpvT1iTTkTsDzsV+vQlpnTsybTtZImnq8doLE7f3zqkl5s8WEpgMN0rQnu/eu
+MY0HlQ+uYs4MLDoQs4IqHACF/tWBtzNVZSBxQ9skoiuTC4k1jsq91mmu1PVNUFQM
+zNBjL3YygyjPgBM5UZ/o
+=XlUB
-----END PGP SIGNATURE-----
Index: client/1.0/pkgd.eagle.harpy
==================================================================
--- client/1.0/pkgd.eagle.harpy
+++ client/1.0/pkgd.eagle.harpy
@@ -19,50 +19,50 @@
None
Mistachkin Systems
- 63d02c5b-3f9c-4e67-b39b-7cf4fa994a92
+ dbf3365d-5aa4-48a1-91c5-13d2435dea99
SHA512
Script
- 2016-09-06T19:04:40.0784922Z
+ 2016-09-10T21:45:33.2288203Z
-1.00:00:00
0x9559f6017247e3e2
- rjVhTaw4XfYEPyOORkFHDWgVfLwrjXcCYn0yW1jC/0n/geIbdzYV69cyGeHcy5+/It/AgnGGV39c
- Yogc8M+UNCp3rzAUS2X5WRVbkpDYs/yZnIp+v5qKIqtM8WXycxbgR0Lvr+r4vxhYHeM1emtE10Hc
- OA8qPJik21hobp8bQJRVut39NlY8Kd0bfiULNXhSfivvGcs06mlrSjPAGP6xfZ2plJPIpD9UXz6H
- qj1FDUccFbtuYWcFFpPz6AnTbocNikTK+Trgcl2PUKyJOInh/nO9eFrXBhmm8T+bbgZ622O3rgNt
- dwQ4/DV3auVCiCtr/GZgluHHBd0Jnti/ZkLPEBB0dQMKiTEMCCX3Ekm1+4b0SASmuDNpm5fpBKWa
- O49wiC2hqjudvTy/PAKQJk8o8me+372ZdGkYupFlxV0sfiKQyLe1OudBfKDS8QafoE4p5CfPqoMs
- 39lU0YF7oBtDIkkF/7EVGH9usbRdlK9sdc7J0H+pPl5rBmaB1KiiCJx3dRznJa9HR3mz8kRlFe3X
- mcJyRkbySbJ18XNovgmrGsHjN5Xf85gvtg21mDU3TO0GmEDAWmZmfrhgMow+Za+AGeGaM9wx0ahT
- ck5ESrAM2f8mm3rU45IsWxpoaRDZx7YvySntB8sLSN99HoPyzUNy1DKqbrNWXKYmjXIb05vBTXUp
- S6waHMdtMWhbJQVe+GIET/b7t7k1Yn+Vlz0DQVL7scQ8U2xARSyLDH64doOCoOtPMHBdzyHIqJt0
- Eb2Wox+KU6asP8FRCtByXLkSY/kAQuBRgnrVgLuYCQEp3bxocHPqh+zOgdinrz5wySn1rbewOlsj
- b7kVWoq6Im0Dw4bXNYS2fEq/W22LiDwC2eu/2HdTWcS/128H+MqIxDnUeGr/KWCbg0zJ+WWsJ7by
- kzdOst9Ec/OM9FyV/3qqH/2WB54ZkAa083ZFXkeQec8uQMXXqEVGCAZMJ3kMvwBZZtCVSpfsr16n
- B0TnANUfnyIzloK8PgfhieRQwSLKMDASVAXz9fXY0dnhiYbTHdbvJmMbrqIVtMhWnkBLVz/ei9sV
- HKqFv6b+37vcbEIPQK91b9tRDRoGWHPAYPSXrDWDgDIrCrhRgHOymnHiFchVejXpsDetQHT1G7oL
- hwK41Vprx60AWcece9pw17gVX8XDKuP1ubDTXDkAGPxqG+4R9Mm9l+3escO3FQnn48PqgREw0twg
- XRw0DW2ZkBP532gkmeHvCPD/SL0b/j5L/Ee7Sgb+TBdK1T5HAVWZuIWTNQhpV+Nxyi8gOufsVmAa
- 8xekzgcNYum9qeyX+3WNV8hXfmdxfLL+doF+VoN8jaPgEWSR2hSTi6LYP1jmRcFcuqm6b7TP8sjq
- zx9qhmoe0ZEuXM7KVaSybOtEqMqDfQqWN/zmc77gDUcmfRc3oOn4w6rf1MHQhRyRw2DjEWegEK00
- St0nFcvUJEL3Fn7FYSCEK00rjyGWM56dehat7l1J15Vk/pmPhyBEoedX8+hUnH2SgqOsYzBjRRMr
- cgPiYt0GXAA34tb1ChZ+L1a03S0+NxOT4X7/qohd2SB3huUxDqPGPA2qENtP+tMcPaTe/eeTZUbl
- WFJDkrWHrM4ieeunKxEOERm0ewmiYYpf9F9yX1PH3fYWNe/7HfayNe2tyspyyVCr6ZqGieAPyFQk
- PuNEPJXtwt2b3dWQWRIiKAtoVGVqOxhW5kGDteawlkddCPUaXIEwRSBsHKXMIxX/Do9ZZ9+rSBR0
- o0eQ1LX1cSyKUTI2Hzk4r2NgN7DLqcqClq/ET7K87QfVDvH2onNrCB0jYcUGnN1ZNDKyrY0lhaMl
- LdGYKNBRzEpMd9CB1WOX6g2uzu41OptNUpuH7li6QlJVez6G/SkeVFFUiho5knGfxmA5mAfWYKOo
- VREQNZ8xw9o3H0j/XtWFTK2GMg7hear0JUFhdd8bW2LrZ+sjF0wm7jak/8CFwwrj2Bb8NcEIkCgu
- SbiLJUGh7I4fB6aoUiN36rljRDl3GvHw2QdQMmSdnFYQJQJm7q7xbie5S4p0ls6nBcqyW/MKFnce
- UsWiz9ObI/aIcO30mY+8/gxqHcWx5WJAUEQ1V9tkwZ58nh49Miks/rvpnjwDZR/FUy2xe9piy7qN
- zOc/jzbbuxjaAXoHBdti6UcRWV5qkUfuFSDoJEg4tZmhFKZy2llVWtWjxxojLfEhuGAG7VcMloK4
- ywUyLd33L2BUfy5fmFIB4F3qlyNts/J5Z5OgNMFWiOvD1qpCIPdTZRd9rJ5uFcDFJ0Z7vWpcPqr5
- Wzuemr9cMShaN7nV10K8dtFIDkhcg6oziTX6fxc8ebOuuZLffBqaAxbC8JrvFE/hzH58adoGFY5q
- gHcS8aluLcw3p2t3YBzToo8ddwTaTfUk+KbjBDGvB5b9iWl/zCLPZwH5/IOpvifgJZFFwJ0Fr4uX
- eB1yFSRgip2kveuUneWWUNhilsjAuP8DE5CHnTpCRwu1TXgENlwGboDoGOKORG06vQ5UDoGghLqZ
- 4Y422ncwR89HJNzkDRNE0pVrOuVrgLfl2gthJupyvIlZoi8X5uTE/v/y+UdWFEGrVthE/z+UC3wo
- 2xAzp2D2h0dLXCnG7iCbx/jn4KWNOXXaMdAZmv47g3YL3825K7+pdEZ41xvs2iJWIum4qXN/3r78
- LmHexaJ10EZtE1oTGsRnAPQm2CVvYcWAJGJ8M4CM9XYHi5Wj1Ue5IzrtZa0obb8WFQu8vfQ=
+ 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
Index: client/1.0/pkgd.eagle.harpy.asc
==================================================================
--- client/1.0/pkgd.eagle.harpy.asc
+++ client/1.0/pkgd.eagle.harpy.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJXzxNsAAoJEFAslq9JXcLZY9IP/RF6Psgm4QMEqRBkpN2ixJvH
-JdDWRVk8eyQ1KgM7PfYZoiwwGbD35fmue+9R6qUYcPPzcUr+TnqCHC0RRZ4errt3
-o6tpVlDWXUjnzZGo83cjMwdr9kYXAFdObMwDcB0zKhn02I1Ef0RiNXI6aaHj60sn
-Rls29pUb2NTbCET1kWZoCxettfCv/nnCFTdrfG3LyfeIMgmv8FJieo8LhP+wv+e5
-oAtPm92xoxEWBV7teZFeE42qGzsQoMgMlSqB/aZBGCAWcoq66FD94Hgik+4bkP94
-rRE+JHdpJbCsVWB1x3iyUr0d1fHv2h91zL+hp+jxDtYHtRQ+IKTTsTYrzOpeOJmV
-JaC5DxyqLNcc6hxm4dQVgc7Gh4E1CR3C/0KDnh3SnaZqlpY/Hm1eLe+u1udSXDEy
-xfP6JucvbFRD/1NKkfZrQloJNQjNCteSeP1Zr7qomJPA3XPAP8D5+nEPtJQ2l7QV
-xxxcTB9x484Y3hQraB6dwSeIk1kex9PqcJAxw7Ff1ev2WDPHS8ZpHdhp41hcAPrr
-3mm/KW48la8sfqBvKIn9qYgxQgC+aktZiq2TVCgn3ehrnFKn/ODZkMTj5zTE/HOo
-lYXgVR426w2wgruyptLTG/a1v2feIM5gg9iw2rxn5lNu0F5CyAkEnxVYWLIbd/JX
-QpYuztQJhYImKxkCspV6
-=+mkc
+iQIcBAABCAAGBQJX1INcAAoJEFAslq9JXcLZlGoQALNud1aplOEUnxBpyg1bZlMn
+GVnCLMpG0xCNQjMy/yJTG4xePcM+iL13C8Svv2bA9YsmyOguGM8x8q+jMxqXtjXm
+JRbvgA+4EdZfq1EAhQ+1FxQ+OHuW9zHkV12Rr8DcWdlBUJ38nZ2FTPTaZx8tjtlY
+V5rgCyd4onnOJ//5l85mPs90oURWot+7974FArfSGJxHSoeDfnTgIHXj6OV5Dv7s
+yvZDF2lycUPbmcMat+iRJckoVWyxadfzdOZp9AbmJmbgwkH56IcX4MeSdPc+M284
+zcrFEhVzcKrdlWpYpL4w2hoEkuIf+46sp40AvnbFlii3ny3BQIcEo/Udi5jIHpwn
+q8XZZtN4ofty2oSq3O6fUv/k0/XX0N7yZvcjG0N7j+IYbwulcDfpFd+P7+8CBGo1
+xgLq2wZTWPabMXSsviG/6z3ggClgvhfZLfd2PAnB5ps1XFMYCLL4k9cAqJdAc88q
+9YsIa6LUhP6KKPjVzJnmTIT3RbiTgBIbSYDDCc6P4xPqhln5M70Zw0JMwppYa5Ge
+YPtb0PqoaGrfhUHAJYLlgBVE/+Gl+f3XJqeqnJGJ+8VL1HUI4zyb1dxio9HcTAqq
+mjFIdlMyzCOI9NBpBJn6J5EXyZ+9xZmGqlC4zuzqZ10g04l71DxlMU7ZnQYeQDzg
+dZMFHpyZ/wWmiGs0hXXK
+=MCRH
-----END PGP SIGNATURE-----
Index: client/1.0/pkgr.eagle
==================================================================
--- client/1.0/pkgr.eagle
+++ client/1.0/pkgr.eagle
@@ -700,40 +700,102 @@
# NOTE: This procedure, which may only be used from an Eagle script, checks
# if a native Tcl library is loaded and ready. If not, a script error
# is raised.
#
proc tclMustBeReady {} {
+ #
+ # NOTE: This procedure is useless when running in native Tcl; therefore,
+ # forbid its use there.
+ #
+ if {![isEagle]} then {
+ error "already running in Tcl language"
+ }
+
#
# NOTE: This procedure is not allowed to actually load a native Tcl
# library; therefore, one must already be loaded.
#
+ if {![tcl ready]} then {
+ error "cannot use Tcl language, supporting library is not loaded"
+ }
+ }
+
+ #
+ # NOTE: This procedure is designed for Eagle. It attempts to load the
+ # "best" native Tcl library. It may raise any number of script
+ # errors.
+ #
+ proc makeTclReady {} {
+ #
+ # NOTE: This procedure is useless when running in native Tcl; therefore,
+ # forbid its use there.
+ #
if {![isEagle]} then {
error "already running in Tcl language"
}
- if {![tcl ready]} then {
- error "cannot use Tcl language, supporting library is not loaded"
- }
+ #
+ # NOTE: Load a native Tcl library. It absolutely must be signed with a
+ # valid Authenticode signature.
+ #
+ tcl load -findflags +TrustedOnly -loadflags +SetDllDirectory
+
+ #
+ # NOTE: Verify that the native Tcl library appears to have beed loaded
+ # into this interpreter.
+ #
+ tclMustBeReady
}
#
# NOTE: This procedure, which may only be used from a native Tcl script,
# checks if Garuda and Eagle are loaded and ready. If not, a script
# error is raised.
#
proc eagleMustBeReady {} {
+ #
+ # NOTE: This procedure is useless when running in Eagle; therefore,
+ # forbid its use there.
+ #
+ if {[isEagle]} then {
+ error "already running in Eagle language"
+ }
+
#
# NOTE: This procedure is not allowed to actually load Garuda (and
# Eagle); therefore, they must already be loaded.
+ #
+ if {[llength [info commands eagle]] == 0} then {
+ error "cannot use Eagle language, supporting package is not loaded"
+ }
+ }
+
+ #
+ # NOTE: This procedure is designed for native Tcl. It attempts to load
+ # the Garuda package and gain access to Eagle. It may raise any
+ # number of script errors.
+ #
+ proc makeEagleReady {} {
+ #
+ # NOTE: This procedure is useless when running in Eagle; therefore,
+ # forbid its use there.
#
if {[isEagle]} then {
error "already running in Eagle language"
}
- if {[llength [info commands eagle]] == 0} then {
- error "cannot use Eagle language, supporting package is not loaded"
- }
+ #
+ # TODO: Assume the Garuda package is trusted? How can we verify it
+ # at this point?
+ #
+ package require Garuda
+
+ #
+ # NOTE: Verify that the Garuda package appears to have been fully and
+ # successfully loaded into this interpreter.
+ #
+ eagleMustBeReady
}
#
# NOTE: This procedure returns non-zero if the current script is being
# evaluated in Eagle with signed-only script security enabled.
@@ -1119,27 +1181,19 @@
#
# NOTE: Should we attempt to automatically load the Garuda package for
# native Tcl?
#
if {$autoRequireGaruda && ![isEagle] && [isWindows]} then {
- #
- # TODO: Assume this package is trusted? How can we verify it
- # at this point?
- #
- package require Garuda
+ makeEagleReady
}
#
# NOTE: Should we attempt to automatically load a native Tcl library
# for Eagle?
#
if {$autoLoadTcl && [isEagle]} then {
- #
- # NOTE: Load a native Tcl library. It must be signed with a valid
- # Authenticode signature.
- #
- tcl load -findflags +TrustedOnly -loadflags +SetDllDirectory
+ makeTclReady
}
#
# NOTE: Should we attempt to hook the [package unknown] handler. This
# is done for both native Tcl and Eagle.
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
-iQIcBAABCAAGBQJX06XyAAoJEFAslq9JXcLZyvUP+wVjnJRn0Jpjwlnl36UxlWqL
-079IZGRAkM/X5T/BrgIIEn9TYXuS104vZ/gl/+bgGA+5BIWUXF/6wJxCTPMpAZbo
-ibmBhC++ObrOa11s/rkc6ha2UQluX8HPGdz4GruiQOktmbrUFxj12qA0OWZ3tTvq
-4mX9HPI7Rvti1iOK75z9uERiQxxbqNMcTcna21P327q4rGB3IU2Lk6p0KGirYtQC
-XlXPOimcPNsupxn18qLHTNl7YGx0MRGDfHjeSYwBeknrG4wHEEKXziDknG8r8drF
-y5LxSUObCc4waTnmqUFwMUPLSml7maCyFbXLWyk4RR6WNWv8NvFIB26bKFitbeUx
-kpEWI0ItLF42jbi/+MjAz2bGLIKgKTBnUegW2mnt7ZV6m5y9gWS4tFFVjdrPyi46
-vse5vLu+U0312z5RFyQjR14NbIdXZX7cAbsZwxpXpZyJzRpIIK6KxM5VlPVpWP/Z
-1YP9wnp9WTLBgia/I4uUgfy3TG+LyP6s3orl+Mt5XWqSiQ0Mmb4RzL9h2FPoTICG
-elTPD6tColb6r7Dg9RQ37K7aE4LG8iotVJw1yoG6yP1/nEwXsDhyp7qV6ICe3HIs
-7c5zTuDBTxDAqD/7SewQNmVCbV8WKsuolPZ9uyx1e36MHWB/6kYWVwfLy0JfoXij
-YxsGw/9jgzwCcu5CGuLn
-=sp9f
+iQIcBAABCAAGBQJX1INfAAoJEFAslq9JXcLZj5sP/i1rR0sIm7Ey83G7NH8gJ6IF
+LHDLL14m7QmYS5gM2xmKMLV0Hr5JXDaeUL2i89bavroF9jfr37m35LJibcBzlEX6
+adHdm6oQOBMTw0t9ZscK3i7Dj37bQkpdifSjbPC/QYfP8H+GolN+Eepyhx7wzYRM
+eMtv9Jyt0o0o3PShWn7AFHtStalfcn3gMbfL0M8Uq0bovwzAPHiPuBbCT7wRMDjb
+VwhipAIsfrvSMGHkjCD4L2l8Sv4kth8J3MQMpxzgrfgF4Ia7eKx3K3tDD7yd340J
+Oh1szAVxElRVoHRO5F9C8DBAc2EqlAFCrFkScrlG/zSLMGMvvIpsJHByCsC6a4x3
+TAqacEf01pGIjKZLqCQsLYHs5eEwZo5EvuebgFIVpoDhHuCjm3hPlPWbpQ7VbUi/
+3CFkm2humVxRFE1LiR/uI7Iuilfvz/NDq22QbY9vQaoYPceTvWX6fWpG/XnapaZV
+zVZ9vdZw1sezCOXaPmz0vJ8uQMEvoWj1UKD6apycIN9LW3fl0snlDD8WfgcmLYXe
+wZSHKAn2BX7b/nRekCzhD4MtCZAqzRf4vNm1shJy+OI0XvzkOivzpNNDmzeeukUb
+2ctuBlC6KzBQQknzQZRmyXmRF5ICMRvGFV9rZK5tJUuSEpJBCkZtEOilZSG10ZnI
+kvw7SeBGPWKBtlr/XvK8
+=XdVP
-----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
- d019e9ee-d966-491e-a0b4-1aab07c4d869
+ 3da6c381-9cb5-4e1d-b6be-7529d36c1d04
SHA512
Script
- 2016-09-10T06:19:06.7405391Z
+ 2016-09-10T22:02:47.1585078Z
-1.00:00:00
0x9559f6017247e3e2
- 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
+ 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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
-iQIcBAABCAAGBQJX06X0AAoJEFAslq9JXcLZCcIP/2kOVYscVQhAoxDBE2wrMkyS
-Dftr03sltIxCrzgGKM7BfQx70NLC+dS3kVTHIvrsNNQjS+hPPd3ZTyxgI+pKnNGw
-YqPowROll6K+jYy3k5fVqZ4QonjQACQS7/Tuov2HZMyM12fc3vTol8SL3j6j6RrH
-2+x68Dq8dekDBQ+u4lzSxk096QbpcByZEwI6aYqEEiFtCJsoC+BunX3+913nJFZ4
-XM9BdoniU5UL49Q+0vTiwJ8U64Zv3UXyaxCiFSLnL0JatqiSNJUYjrKaBPIzZFLB
-ZFDeZItq6PxN96HaYgyPRnbVEQFYClRqv3XSW6LXIC6NDrlU+o1j/bqRUQ1bRO0l
-tc4R0SqmhVlj7b/mbZ1/qVNmTSrp6EQRehYoOmA1vOzvUtaVHAUz1mxkUea2Gv62
-V/m9LQjSj371vCfIN+5UiojH9p1U0yjh4pdq3rcFJGnjg7BxCkH0mgcV+mVCchNe
-WbGzVAufsurOG9bFDv5ZEqdKwqoVIYrId9ZH9ToKZHL1jcMB+0lb2rlQA4sLzDus
-w/zuUXQkZ17/ZClCfayV31MGOMgeJkhGRepN04FI/BektOZy1XP2+1VVHoPjV8uk
-mxzLHrdwauXL95525dbP9tEmJ38JOGxuCfqgIkPzN1+3TAMuLpYypxNrC7Q85bMB
-x80iuRHaBdvPhX16xy9M
-=WLRO
+iQIcBAABCAAGBQJX1INgAAoJEFAslq9JXcLZLyIP/j7hcygOa2s3Yylj8CwMzJaq
+Ymtxaiyyi0woRGKnhmPznl/UeEimgPTcikJS4TXYL6TwS/FG0bhB3WmJgVPGsNiI
+1zcRNwNAzf+djQ9wxpUboW6NCQgLSO95LjXkn6eKt8AaUrZIwYe8zvYUlHDfm1KH
+Js3TqLHviIq3F7n2fNWNOxrz3HA1zU4so3TwFeqbKrh9Wcc5bjV3s/ZDGdjXcM9B
+P1ngwdV1niuHC5C6cOnsx998eiE4huGDPZDr1LIVpFqxCbfWMiJtJWqJxJh0va5P
+FspaEH7ToJ5YCVwho3g5aLwb1l4NDcg3Uac6/N9j23vaixLXV7v6d8BAPGcOJSZJ
+cpH89eAJLao2ydeDQagFGhdeL/ipV5hYmQiwdShjra+cY70EWCVFtPQWcfLEcmt+
+pbA4UEE8PfyU+V6rlzxxxhzYBFRdH+WduFhsEabnw28oSx5ku5Lr24SIBUCWS/zK
+T7CtbcPoZoUHZ+kjeGSwTOVR+TYeVFzL/zA3nMs9MzC2d4SztDdrBlBOekXLVhnA
+AlnWtCp8T0SXr1Og3n/0f3QCjcqCFW5KXm/Q2tNMx0t9tuKKztfpN+/Gs5L2FCtC
+j8gu4MEm2s5TzX90A6NY5GhYkQfuhTQvJy/hZFD+Xxo8PN+NZ7VX6sYJMJGNCeyo
+yZtFt3pNscM/tK6oPkJq
+=BaB9
-----END PGP SIGNATURE-----
ADDED client/1.0/pkgr_install.eagle
Index: client/1.0/pkgr_install.eagle
==================================================================
--- client/1.0/pkgr_install.eagle
+++ client/1.0/pkgr_install.eagle
@@ -0,0 +1,196 @@
+###############################################################################
+#
+# pkgr_install.eagle --
+#
+# Extensible Adaptable Generalized Logic Engine (Eagle)
+# Package Repository Client (Package Installer)
+#
+# 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 ::PackageInstaller {
+ #
+ # NOTE: This procedure is used to report errors that prevent this tool
+ # from running to completion (e.g. invalid command line arguments,
+ # etc). It may be used to report a specifically error. It will
+ # always emits the command line option and argument information.
+ #
+ proc usage { {error ""} } {
+ if {[string length $error] > 0} then {puts stdout $error}
+
+ puts stdout "usage:\
+ [file tail [info nameofexecutable]]\
+ [file tail [info script]] \[version\] \[language\]"
+
+ exit 1
+ }
+
+ #
+ # NOTE: Figure out the fully qualified path to the current script file.
+ # If necessary, add it to the auto-path for the interpreter. The
+ # necessary supporting packages (i.e. the Package Repository and
+ # Package Downloader packages) are assumed to exist in the same
+ # directory as the current script file.
+ #
+ variable pkgr_path; # DEFAULT:
+
+ if {![info exists pkgr_path]} then {
+ set pkgr_path [file normalize [file dirname [info script]]]
+
+ if {![info exists ::auto_path] || \
+ [lsearch -exact $::auto_path $pkgr_path] == -1} then {
+ lappend ::auto_path $pkgr_path
+ }
+ }
+
+ #
+ # NOTE: *TODO* Pre-create the namespace for the Package Repository Client
+ # package and then forcibly adjust various settings to the values
+ # necessary for this tool. In the future, this section may need to
+ # be tweaked to account for changes to the Package Repository Client
+ # package.
+ #
+ namespace eval ::PackageRepository {
+ variable autoHook true
+ variable autoLoadTcl false
+ variable autoRequireGaruda false
+ variable verboseUnknownResult true
+ variable verboseUriDownload true
+ }
+
+ #
+ # NOTE: *TODO* Pre-create the namespace for the Package Downloader Client
+ # package and then forcibly adjust various settings to the values
+ # necessary for this tool. In the future, this section may need to
+ # be tweaked to account for changes to the Package Downloader Client
+ # package. Technically, the package being handled by this tool may
+ # not actually use the downloader; however, if it does, this should
+ # make sure the downloaded package files are persisted locally.
+ #
+ namespace eval ::PackageDownloader {
+ variable quiet false
+ variable viaInstall true
+ }
+
+ #
+ # NOTE: Load the Package Repository Client package now. This will install
+ # the [package unknown] hook and prepare it for use.
+ #
+ package require Eagle.Package.Repository
+
+ #
+ # NOTE: Verify that the number of command line arguments meets the basic
+ # requirements of this tool.
+ #
+ if {[info exists ::argv] && \
+ [llength $::argv] >= 2 && [llength $::argv] <= 4} then {
+ #
+ # NOTE: Get the API key. This is always required. If this API key is
+ # not valid or cannot be found by the server, execution of this
+ # tool will fail.
+ #
+ set apiKey [lindex $::argv 0]
+
+ #
+ # NOTE: Get the package name. This is always required. If this package
+ # name is invalid or cannot be found by the server, execution of
+ # this tool will fail.
+ #
+ set package [lindex $::argv 1]
+
+ #
+ # NOTE: Grab the package version (or requirement?). This is optional.
+ # If this package version is specified, it must conform with TIP
+ # #268 when the target language is native Tcl. For Eagle, only
+ # the dotted decimal version syntax, with between 2 to 4 numbers,
+ # is supported.
+ #
+ if {[llength $::argv] >= 3} then {
+ set version [lindex $::argv 2]
+
+ if {[isEagle] && ![string is version -strict $version]} then {
+ set pattern {^\d+\.\d+\.\d+\.\d+$}
+
+ error [appendArgs \
+ "version must match regular expression: " $pattern]
+ }
+ } else {
+ set version ""
+ }
+
+ #
+ # NOTE: Grab the target language. This is optional. Without this, it
+ # is assumed that the target language is the one evaluating the
+ # current script file. The only supported target languages are
+ # native Tcl ("Tcl") and Eagle ("Eagle"), both case-sensitive.
+ # If the target language differs from the current language, this
+ # tool will attempt to gain access to the target language and a
+ # script error will be raised if that attempt fails.
+ #
+ if {[llength $::argv] >= 4} then {
+ set language [lindex $::argv 3]
+ } else {
+ set language ""
+ }
+
+ #
+ # NOTE: If the target language was specified, attempt to gain access to
+ # it, if necessary. If the current language matches the target
+ # language, nothing is done.
+ #
+ if {[string length $language] > 0} then {
+ switch -exact -- $language {
+ Eagle {
+ if {![isEagle]} then {
+ ::PackageRepository::makeEagleReady
+ }
+ }
+ Tcl {
+ if {[isEagle]} then {
+ ::PackageRepository::makeTclReady
+ }
+ }
+ default {
+ error "unsupported language: must be Tcl or Eagle"
+ }
+ }
+ }
+
+ #
+ # NOTE: If a non-empty API key was specified on the command line then
+ # add it to the global list now.
+ #
+ if {[string length $apiKey] > 0} then {
+ lappend ::pkgr_api_keys $apiKey
+ }
+
+ #
+ # NOTE: Attempt to require the target package now. If this succeeds
+ # -AND- the Package Downloader Client was used, the package will
+ # be persisted locally; otherwise, the [package ifneeded] script
+ # may still be evaluated; however, the effects may not actually
+ # cause anything to persist.
+ #
+ if {[string length $version] > 0} then {
+ set result [package require $package $version]
+ } else {
+ set result [package require $package]
+ }
+
+ puts stdout [appendArgs "package require result: " $result]
+ } else {
+ usage
+ }
+}
+
ADDED client/1.0/pkgr_install.eagle.asc
Index: client/1.0/pkgr_install.eagle.asc
==================================================================
--- client/1.0/pkgr_install.eagle.asc
+++ client/1.0/pkgr_install.eagle.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+Comment: Eagle Package Repository
+
+iQIcBAABCAAGBQJX1INjAAoJEFAslq9JXcLZs7sP/00+DIkdcSORb8m2OOjrNC/h
+4OTNsAUDvCm+DBn19nIcNpSgT696rxGeguePLSXmVXAD76GoHcHxVy+hQG3oa4mG
+mZ505ASEsD+ff12FR3hwQ84pmL3kjciMtiXOXZKsk/0Wwac5LYAjRYNOPaTXTgJE
+0X5UyyVfWk/a/+F5PdenseRsJ455dSEuABlVWuX9QCpasp+jnx16zB90Qg38zKAk
+we6RYouijYtuLG2vRqahQdrQoPSS/tj5br6YtHDbZdc8IFHldTeOUq3Nqs9HQ/Fm
+Cx4uITc35gemhF0WuGQM6cAc0Al3m+jS7nbZJ1OuYfwRYNUcwNGXAqX6elyRdNQV
+umTE+TzeEK/GezwpQjh8AFL1iC6rv5AMJIQsjKPzcxiJN7K8UmXP4Zmx4rlU70AW
+EjeZIsPm3wZXYWMI0NFIeAOuS53Ke/0Ha6Mh1E/+HSnzwla7a7VlHzG+Dvuie2/3
+2t8T1gKgY570r2lJTmHeuZp6J/NOH+ig7YbImEM5lF5el8I0QwNbdolTXq415nQB
+TC5vQuCYq9G4R8QxOSJA87jCk8SbFjtmZNhIPL7JVvj6TfTDTolVzsbd0mlHNdIa
+ql8Z2U12r3hPr6xc1PRrA/m4QeR2sioNUPfkCzQggls9Bv+8j0P5Ge2doO1/rKqL
+pIOxIfEz5PfnIkWzcgKe
+=lKSL
+-----END PGP SIGNATURE-----
ADDED client/1.0/pkgr_install.eagle.harpy
Index: client/1.0/pkgr_install.eagle.harpy
==================================================================
--- client/1.0/pkgr_install.eagle.harpy
+++ client/1.0/pkgr_install.eagle.harpy
@@ -0,0 +1,68 @@
+
+
+
+ None
+ Mistachkin Systems
+ 7ffd1407-c37c-4614-bdfe-dd569cd334de
+ SHA512
+ Script
+ 2016-09-10T22:03:40.6555781Z
+ -1.00:00:00
+ 0x9559f6017247e3e2
+
+ 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
+
+
ADDED client/1.0/pkgr_install.eagle.harpy.asc
Index: client/1.0/pkgr_install.eagle.harpy.asc
==================================================================
--- client/1.0/pkgr_install.eagle.harpy.asc
+++ client/1.0/pkgr_install.eagle.harpy.asc
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+Comment: Eagle Package Repository
+
+iQIcBAABCAAGBQJX1INkAAoJEFAslq9JXcLZWtsP/2cfYOP6iVWnE2VygN19N2QV
+EvixNfKvOni+yxfw+tH4QI4UuJZHzpVANSaBOyYNtIA/xTeAbZB444ZFGg25TOkk
+WByuldJewSk5jtNfZ6zEWh/Meua/UAtWyu4CnIDCT406pFyynpRFPV/qqrXu6wIj
+M3nxmeskAzd50NcK3haXTXpFWltB3Of8V+BYNjGLC84XRVZr/NCLps5zPG8uPXQL
+NKTg76wYn80sByHhCx4SXOwcc6CM3cbmvET++Mn+PKcrX07kCkLSY78xn+dOS68l
+B+7Zi034V9bI0QFPmW99DVD4RXr0ba2sklSHQgwpFcYZWqn2+heXIcKJRsMnZxet
+3sXonp9Xr5bB13fOOd6aBkrnIcPxFykZRG2Bky5F6HH2c2FHEUokf7f4wc/qZnrf
+qPC13XgUOWc+1DnNyLBmLk+QDJr87lIllAzjylqelvBqIyHjEsK8x42yr9e94x29
+dR7WfYYM9YVIOGnpIqGdh3UHf6zV74/BV+vjMQNv0TOO3XPip5Bes6uW5KFCOZ7G
+5Lqvj2s7jThDOp1ds6BBhLmezJazPzgaFWH/WBEgQN7Wf86gqmEGW80SNP1QolMh
+HCZ+Hl6Us+RVAMlUmsnGsirzK3KSct8qOZOwanwf5A2z4EBd9Prgw/2o426qMJsY
+hBRDB0OeUeAgPsKWcKcw
+=UKA6
+-----END PGP SIGNATURE-----