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