Check-in [3cfc75a37d]
Not logged in
Overview
Comment:A bit of code cleanup in the package uploader.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 3cfc75a37d9102d6d01ba4f434294d819f216964
User & Date: mistachkin on 2016-12-23 23:46:45
Other Links: manifest | tags
Context
2016-12-26
00:46
Improve messages for the package uploader client errors related to its initial setup. check-in: 036720066a user: mistachkin tags: trunk
2016-12-23
23:46
A bit of code cleanup in the package uploader. check-in: 3cfc75a37d user: mistachkin tags: trunk
23:14
Make sure closing the Tk window exits the vwait. Refactor uploader client into package script and a tool script. check-in: 2def651bb5 user: mistachkin tags: trunk
Changes

Modified client/1.0/neutral/pkgu.eagle from [e3d6d4761a] to [3209afd0c1].

389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
389
390
391
392
393
394
395

396
397
398
399
400
401
402







-







  #       platform argument must be an empty string -OR- one of the literal
  #       strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
  #       "win64-ia64", or "win64-x64".  The fileNames argument is the list of
  #       (fully?) qualified file names to be downloaded when the associated
  #       package is being provided.  The options argument is reserved for
  #       future use, it should be an empty list.
  #
  # <public>
  proc createRepositoryScript {
          serverId versionId language version platform fileNames options } {
    ::PackageDownloader::verifyServerId $serverId
    ::PackageDownloader::verifyVersionId $versionId
    ::PackageDownloader::verifyLanguageAndVersion $language $version isClient

    set prologue ""
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
505
506
507
508
509
510
511

512
513
514
515
516
517
518







-







  #       patch level being submitted.  The language argument must be an empty
  #       string, "Tcl", or "Eagle".  If it is an empty string, the current
  #       language will be assumed.  The script argument is the script to be
  #       evaluated when the package needs to be provided.  The certificate
  #       argument is the certificate associated with the script, which may be
  #       an OpenPGP signature or a Harpy script certificate.
  #
  # <public>
  proc submitPackageMetadata {
          apiKey package patchLevel language script certificate } {
    variable verboseMetadataSubmit

    #
    # NOTE: Fetch the submission URI for the package repository server.  If
    #       it is not available for some reason, raise a script error.
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
894
895
896
897
898
899
900

901
902
903
904
905
906
907







-







  }

  #
  # NOTE: This procedure attempts to stage the specified package files using
  #       Fossil.  The fileNames argument is a list of (fully?) qualified
  #       local file names to stage.
  #
  # <public>
  proc stagePackageFiles { language version platform fileNames } {
    variable checkoutDirectory
    variable fossilAddCommand

    verifyCheckoutDirectory

    if {![verifyThereAreNoChanges]} then {
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
947
948
949
950
951
952
953

954
955
956
957
958
959
960







-








  #
  # NOTE: This procedure attempts to commit the staged package files to the
  #       remote package file repository using Fossil.  The varName argument
  #       is the name of a scalar variable in the context of the immediate
  #       caller that will receive the resulting Fossil check-in identifier.
  #
  # <public>
  proc commitPackageFiles { package patchLevel language version varName } {
    variable checkoutDirectory
    variable fossilCommitCommand
    variable fossilCommitPattern

    fossilMustBeInstalled
    verifyCheckoutDirectory
1007
1008
1009
1010
1011
1012
1013

1014
1015
1016
1017
1018
1019
1020
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017







+







  }

  #
  # NOTE: This procedure initializes the array containing data derived from
  #       the command line arguments, if any.  The argv argument should be
  #       the list of command line arguments.
  #
  # <internal>
  proc setupArgumentData { argv } {
    variable argumentData

    if {![info exists argumentData(apiKey)]} then {
      set argumentData(apiKey) ""
    }

1073
1074
1075
1076
1077
1078
1079

1080
1081
1082
1083
1084
1085
1086
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084







+








  #
  # NOTE: This procedure is used to determine if all the package submission
  #       data is available.  There are no arguments.  Non-zero is returned
  #       if all the package submission data is available.  This procedure
  #       should not raise script errors.
  #
  # <internal>
  proc haveArgumentData {} {
    variable argumentData

    if {![info exists argumentData(apiKey)]} then {
      return false
    }

1209
1210
1211
1212
1213
1214
1215

1216
1217
1218
1219
1220
1221
1222
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221







+







  #
  # NOTE: This procedure is an event handler.  It handles the submit button in
  #       both Tk and Eagle.  It starts the package submission process.  The
  #       args argument is not really used, it is a placeholder to make this
  #       procedure more portable between Tcl and Eagle.  This procedure may
  #       raise script errors.
  #
  # <internal>
  proc submitEventHandler { args } {
    variable argumentData

    set batchMode [lindex $args 0]

    if {[isEagle]} then {
      set sender [lindex $args 1]; # NOTE: Disposal.
1348
1349
1350
1351
1352
1353
1354

1355
1356
1357
1358
1359
1360
1361
1362
1363
1364



1365
1366
1367
1368
1369
1370
1371
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374







+










+
+
+







  }

  #
  # NOTE: This procedure creates the user interface for this tool using Eagle
  #       and WinForms.  The existing argument data, if any, will be used to
  #       populate it.  There are no arguments.
  #
  # <internal>
  proc setupWinFormsUserInterface {} {
    variable argumentData
    variable widgets

    object load -import System.Windows.Forms

    set form [object create -alias Form]
    set widgets(0) $form

    $form Text "Package Uploader Client"
    $form MaximizeBox false
    $form AutoSize true
    $form add_Closed [namespace code [list handleFormClosedEvent]]

    ###########################################################################

    set widgets(1) [object create -alias Label]
    $widgets(1) Name lblApiKey
    $widgets(1) Text "API Key"

1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536

1537
1538
1539
1540
1541
1542
1543
1520
1521
1522
1523
1524
1525
1526



1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544







-
-
-










+







      $widgets($name) Top $top
      $form Controls.Add $widgets($name)

      incr top [$widgets($name) Height]
      incr top $verticalMargin
    }

    $form add_Closed [namespace code [list handleFormClosedEvent]]
    $form MaximizeBox false
    $form AutoSize true
    $form Show

    after 0 [list nop]; # NOTE: Needed for the [vwait].
  }

  #
  # NOTE: This procedure creates the user interface for this tool using Tcl
  #       and Tk.  The existing argument data, if any, will be used to
  #       populate it.  There are no arguments.
  #
  # <internal>
  proc setupTkUserInterface {} {
    variable widgets

    package require Tk
    catch {console show}

    catch {wm withdraw .}; set toplevel [toplevel .uploader]

Modified client/1.0/neutral/pkgu.eagle.asc from [4f01bb03b8] to [b6a3faffdc].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYXa9dAAoJEFAslq9JXcLZw64QAIfsDz2hFHLg2C7Vd4lHtiAb
OBH7+p73HDGCr1lmnyKUpMYjcztbWsqsFtuY2iPXcJgjoaNsSK/+MAkDL+LbDiMF
oMyb3tWTu70nOei8WR0hR7uCwvdoxiXXOBGn7KZmBqWWdyvTW3W/D5I4idbgiL1x
iIhOn4L2EHvdRNPKzoEUUcKroVyzijdtNcHRBAQLxjbmh5Tr6FpnHvx1Ao7k1yUM
tHHukhtG3rYzhREq1RJ7canfLvufxu8tFwvg1DoI087p+ckwoyYuD4edQC+5+7wv
Q/xEsnl5+MU6nv9wJz+vXZZelazg78OI/D223T5bKOppUvlV1Oa9IoQEos6hBZk4
rFVoIzWXQiMQwd8eNKJ2/yeh4wJVtt96eYg0RI+ZKW3qwWsQjd8DJOLXk664wPSO
dDCxqgPB/5Ak8Prz2JSnkWWFVlBdyg5xjEEPdszqvqFT463nIO9RlyJdkpHBlhLT
8hzn3RG6KNrZSrKsOjyqxeu1h7fITZmnyvb8Cb8OTVXd9KDqQ3mJ0YyGT4Z5SgtX
7t61ntYtVNyw0gA8gTOjBw12EmCEXgKLdGI3iBYhw5qz2YMULiMTrW8VmaJHJa3U
Fq1uhcJCbYKiZmYUvcnWN4OSC73K/Ly3aNgYYdBc9aDI8rh1ZLeZDWR15zpv4ZvG
NpAE1BF+Aayq3KRzg9l0
=cuQY
iQIcBAABCAAGBQJYXbdYAAoJEFAslq9JXcLZHgkQAK62MY2Dsu6dEALVP2gpsbIC
mhRj39TzflavS/Joub1NAKBbkMP2u0MBIe3Gp8xknNmmZvGTlmP7GoSAWcmW2dZn
aN3II5Bv4ex7YwNzDp0V7cTiwb+lf0T29rzHABD5aOoHfxJKHM/fzETGzjwe/vxP
nJKECIxQ5TqQbWP1VaNT3qCw9FRxEZZHhzy3y6gj73Szvaz9xh9yAD4RIf0WehVV
1cYna8c9ZX9ce+StoSfOpPTuXvkpP1fCiwbRuZ/enDjpP3Zd6QupLyx1R32zeJ8k
D8x6kdrZxSKaPhXtZijRn7PDHK+xsb2etBbTkMfCov2lMI9r2NJ1I6SpZBDw0VoD
66I4MpAccY7B98BIAOWNuiWXI4PSIou2UTeFvHG1H96rDjQkLVxvLlv88mYFUZOf
3oGgIDNjctdcNLrI0chFlGH7N2NyG34iDHU6qcjDMXUIDI9IwPge90199cTc2w6X
yFf2BeYCDTXdi5RWgpamt9DY60fA6MG/jGzrykY6eMKiW4/vWO1rv2NR3lYZH1lG
qxSRxyA06gI3plHkhR+JlZxhqRHr5FKCuCQyIfTmMJEE7LoxYX+K8LNMoscfhWCH
d5JImKEQVSNQo4L2/i654uymOBMumIdaVTAT5ojNNv6WlTwE8D952fncszVFI40w
+yx3oA5/YVAVD7DP5x/T
=BVJm
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgu.eagle.harpy from [db24832c17] to [fabb3f5717].

17
18
19
20
21
22
23
24

25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66




































67
68
17
18
19
20
21
22
23

24
25
26

27
28
29
30




































31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>0a536d27-985f-4b13-875f-b70633697684</Id>
  <Id>9e727675-d3e4-40f6-b818-9e2a344b4c2d</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-12-23T23:11:47.9423828Z</TimeStamp>
  <TimeStamp>2016-12-23T23:46:06.0214843Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgu.eagle.harpy.asc from [c112a17590] to [bfb29efb4e].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYXa9fAAoJEFAslq9JXcLZLmIP/jTeQFPUUzN467WNmzN9eaQz
FnSQk1Z31Z1HEaX3q6VT4Yy4sXXPmRUnwd/uoFpC+ap1WxGmuPz+ncJRI1r8nsY4
2Q4UQecNbWobioerq41GkhHjuxiHNvsxcGJrbBKjVAKOGaHEs8Ee2KNe8/gCXXAB
RwJpzdyHc2eAvmXEgokch2Nq9uhTW9dFqTFNwjlwwRlSyHFU9ghiNbYV/+rvpnWu
f8F0GiCsp8mqkERFWuZnEsU7yc5Ull6QBpIOdOuDfWQby2I0/lA6ZwQ/lNPOQZ1a
6NShCX1TgBjWs7/IIvfULPeyzfsA57p1XLz86zmejcmwG6ejcwJTvx4u8S9FvBNE
lCppbWZRuhkZznqy6c//1eP0aLm8WHVMm7uo6aA1FQi2PWm2nds4ne2/+1R4c5zM
LKYGa9XNy4E6eTBqBS0cARhOvIptkU1qIXQPdHf6FEh85LB3Mc2/dKG3EnHfR7Vo
O2xcOSgt35BxALVEalZUaOHbYOv5C7NAqA6/W2iI/ZZPRqzhNqdhe0gWOrivhQcy
N2N9C88f0NccSaGuhj6x71bvN2m3BFIC1B+eS+nkMqsKPoJZhDGhjHLRV7oQ0bCW
ueQMq1UIsmmx/e/0suQ4YFzZGuuGwUyzzeIR+opVCN8ltQvKkty3dcAU9P7AQkxy
dvKjU/W2G/3c64mBHgZA
=jscJ
iQIcBAABCAAGBQJYXbdZAAoJEFAslq9JXcLZ2VYQAI5W3dy17KPDmYB3OM6Jncqz
lbiZLJZbJwL0lqVeQY0TukNNs9+9aaRiqBml4nX1hqRzLh1vOzqI+4TdYC3Va5X/
Ajwc+D5HSRxWMIrz23fq+gSWEOFuy8fFwI2AgK72dgp3pAPDehW2+DbPqMskT3zu
PwNWJPcOPtgIv6CbSR6VqggSJ4j2H8Ssw9kVcwgqgoxrdX8JspJq2qMPz7HKelMa
ybGV4Gb5zX1JgI35h+5/gUD50A9NtJK8IV75aexNXvcnPjCNs1+rzhNBnvmhBItj
GegbLmJo3zQrlW1aayB06uIs4iMEoIdeDVN1EF/RJvBWpdKrLstHsNC7pTdtIH9c
txPX46mWvfQBcS/xhxjB91FpJhmbj/11wNmCpY0giAgV/Uut6mYUPzQZTa17yE07
YQZfW009B4BNj+WyFnDsZz9wVwRiJtkYrx5BTmDr0wAg/ddm2gr6X9ufbr5dyKFA
rO4/NeUDyJEPZe5iige1DLMPP5LDj2QhuiUqeWg7Fogk6jpzg1L0h4ZmTFPpC7wz
ssn8NiZILne9ziKxMcs2UCRECz4i5hK1QH3f+NZzHQvDAg2DU6GDOJPR1SeE6C3C
CfEQCnn2/9aa9HL48pWC0fOG2YxVbOrPlrrSL/Kev7ztY7XEq7yR8uNf8Sgv07qe
mkU318WyRa7VKEo/qtsI
=a/RZ
-----END PGP SIGNATURE-----