From 80977071ff85af711abeecd9db044a76859a5176 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 12 Oct 2020 15:29:25 -0600 Subject: [PATCH] update go-gitver --- go.mod | 3 +- go.sum | 6 +- .../root/go-gitver/LICENSE | 312 ------------------ .../root/go-gitver/v2/.gitignore | 3 +- .../root/go-gitver/v2/README.md | 34 +- .../root/go-gitver/v2/gitver.go | 4 +- .../root/go-gitver/{ => v2}/gitver/gitver.go | 17 +- .../root/go-gitver/v2/go.sum | 2 + vendor/modules.txt | 6 +- 9 files changed, 42 insertions(+), 345 deletions(-) delete mode 100644 vendor/git.rootprojects.org/root/go-gitver/LICENSE rename vendor/git.rootprojects.org/root/go-gitver/{ => v2}/gitver/gitver.go (86%) create mode 100644 vendor/git.rootprojects.org/root/go-gitver/v2/go.sum diff --git a/go.mod b/go.mod index 6e2b309..d23953f 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,7 @@ module git.example.com/example/goserv go 1.15 require ( - git.rootprojects.org/root/go-gitver v1.1.3 // indirect - git.rootprojects.org/root/go-gitver/v2 v2.0.1 + git.rootprojects.org/root/go-gitver/v2 v2.0.2 git.rootprojects.org/root/keypairs v0.6.3 github.com/go-chi/chi v4.1.2+incompatible github.com/jmoiron/sqlx v1.2.0 diff --git a/go.sum b/go.sum index f533f91..d71eef9 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,5 @@ -git.rootprojects.org/root/go-gitver v1.1.3 h1:/qR9z53vY+IFhWRxLkF9cjaiWh8xRJIm6gyuW+MG81A= -git.rootprojects.org/root/go-gitver v1.1.3/go.mod h1:Rj1v3TBhvdaSphFEqMynUYwAz/4f+wY/+syBTvRrmlI= -git.rootprojects.org/root/go-gitver/v2 v2.0.1 h1:CdNfvlGDggFbyImxlqA2eFUVRKQKn1EJNk7w/3TQAfk= -git.rootprojects.org/root/go-gitver/v2 v2.0.1/go.mod h1:ur82M/jZcvr1WWihyVtNEgDBqIjo22o56wcVHeVJFh8= +git.rootprojects.org/root/go-gitver/v2 v2.0.2 h1:T+Je13wrY1jz4OPJF98HnuCNp6n2Xe2uK6/NNF6a4+0= +git.rootprojects.org/root/go-gitver/v2 v2.0.2/go.mod h1:ur82M/jZcvr1WWihyVtNEgDBqIjo22o56wcVHeVJFh8= git.rootprojects.org/root/keypairs v0.6.3 h1:dFuDjlg9KFXhRTIyVy3VfXzlX7hyyeC0J8PTUUZBzpo= git.rootprojects.org/root/keypairs v0.6.3/go.mod h1:WGI8PadOp+4LjUuI+wNlSwcJwFtY8L9XuNjuO3213HA= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= diff --git a/vendor/git.rootprojects.org/root/go-gitver/LICENSE b/vendor/git.rootprojects.org/root/go-gitver/LICENSE deleted file mode 100644 index 09f2798..0000000 --- a/vendor/git.rootprojects.org/root/go-gitver/LICENSE +++ /dev/null @@ -1,312 +0,0 @@ -Mozilla Public License Version 2.0 - - 1. Definitions - -1.1. "Contributor" means each individual or legal entity that creates, contributes -to the creation of, or owns Covered Software. - -1.2. "Contributor Version" means the combination of the Contributions of others -(if any) used by a Contributor and that particular Contributor's Contribution. - - 1.3. "Contribution" means Covered Software of a particular Contributor. - -1.4. "Covered Software" means Source Code Form to which the initial Contributor -has attached the notice in Exhibit A, the Executable Form of such Source Code -Form, and Modifications of such Source Code Form, in each case including portions -thereof. - - 1.5. "Incompatible With Secondary Licenses" means - -(a) that the initial Contributor has attached the notice described in Exhibit -B to the Covered Software; or - -(b) that the Covered Software was made available under the terms of version -1.1 or earlier of the License, but not also under the terms of a Secondary -License. - -1.6. "Executable Form" means any form of the work other than Source Code Form. - -1.7. "Larger Work" means a work that combines Covered Software with other -material, in a separate file or files, that is not Covered Software. - - 1.8. "License" means this document. - -1.9. "Licensable" means having the right to grant, to the maximum extent possible, -whether at the time of the initial grant or subsequently, any and all of the -rights conveyed by this License. - - 1.10. "Modifications" means any of the following: - -(a) any file in Source Code Form that results from an addition to, deletion -from, or modification of the contents of Covered Software; or - -(b) any new file in Source Code Form that contains any Covered Software. - -1.11. "Patent Claims" of a Contributor means any patent claim(s), including -without limitation, method, process, and apparatus claims, in any patent Licensable -by such Contributor that would be infringed, but for the grant of the License, -by the making, using, selling, offering for sale, having made, import, or -transfer of either its Contributions or its Contributor Version. - -1.12. "Secondary License" means either the GNU General Public License, Version -2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General -Public License, Version 3.0, or any later versions of those licenses. - -1.13. "Source Code Form" means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") means an individual or a legal entity exercising rights -under this License. For legal entities, "You" includes any entity that controls, -is controlled by, or is under common control with You. For purposes of this -definition, "control" means (a) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or otherwise, -or (b) ownership of more than fifty percent (50%) of the outstanding shares -or beneficial ownership of such entity. - - 2. License Grants and Conditions - - 2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive -license: - -(a) under intellectual property rights (other than patent or trademark) Licensable -by such Contributor to use, reproduce, make available, modify, display, perform, -distribute, and otherwise exploit its Contributions, either on an unmodified -basis, with Modifications, or as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer for -sale, have made, import, and otherwise transfer either its Contributions or -its Contributor Version. - - 2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution become -effective for each Contribution on the date the Contributor first distributes -such Contribution. - - 2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under this -License. No additional rights or licenses will be implied from the distribution -or licensing of Covered Software under this License. Notwithstanding Section -2.1(b) above, no patent license is granted by a Contributor: - -(a) for any code that a Contributor has removed from Covered Software; or - -(b) for infringements caused by: (i) Your and any other third party's modifications -of Covered Software, or (ii) the combination of its Contributions with other -software (except as part of its Contributor Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of its -Contributions. - -This License does not grant any rights in the trademarks, service marks, or -logos of any Contributor (except as may be necessary to comply with the notice -requirements in Section 3.4). - - 2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to distribute -the Covered Software under a subsequent version of this License (see Section -10.2) or under the terms of a Secondary License (if permitted under the terms -of Section 3.3). - - 2.5. Representation - -Each Contributor represents that the Contributor believes its Contributions -are its original creation(s) or it has sufficient rights to grant the rights -to its Contributions conveyed by this License. - - 2.6. Fair Use - -This License is not intended to limit any rights You have under applicable -copyright doctrines of fair use, fair dealing, or other equivalents. - - 2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in -Section 2.1. - - 3. Responsibilities - - 3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any Modifications -that You create or to which You contribute, must be under the terms of this -License. You must inform recipients that the Source Code Form of the Covered -Software is governed by the terms of this License, and how they can obtain -a copy of this License. You may not attempt to alter or restrict the recipients' -rights in the Source Code Form. - - 3.2. Distribution of Executable Form - - If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code Form, -as described in Section 3.1, and You must inform recipients of the Executable -Form how they can obtain a copy of such Source Code Form by reasonable means -in a timely manner, at a charge no more than the cost of distribution to the -recipient; and - -(b) You may distribute such Executable Form under the terms of this License, -or sublicense it under different terms, provided that the license for the -Executable Form does not attempt to limit or alter the recipients' rights -in the Source Code Form under this License. - - 3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, provided -that You also comply with the requirements of this License for the Covered -Software. If the Larger Work is a combination of Covered Software with a work -governed by one or more Secondary Licenses, and the Covered Software is not -Incompatible With Secondary Licenses, this License permits You to additionally -distribute such Covered Software under the terms of such Secondary License(s), -so that the recipient of the Larger Work may, at their option, further distribute -the Covered Software under the terms of either this License or such Secondary -License(s). - - 3.4. Notices - -You may not remove or alter the substance of any license notices (including -copyright notices, patent notices, disclaimers of warranty, or limitations -of liability) contained within the Source Code Form of the Covered Software, -except that You may alter any license notices to the extent required to remedy -known factual inaccuracies. - - 3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, indemnity -or liability obligations to one or more recipients of Covered Software. However, -You may do so only on Your own behalf, and not on behalf of any Contributor. -You must make it absolutely clear that any such warranty, support, indemnity, -or liability obligation is offered by You alone, and You hereby agree to indemnify -every Contributor for any liability incurred by such Contributor as a result -of warranty, support, indemnity or liability terms You offer. You may include -additional disclaimers of warranty and limitations of liability specific to -any jurisdiction. - - 4. Inability to Comply Due to Statute or Regulation - -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Covered Software due to statute, judicial -order, or regulation then You must: (a) comply with the terms of this License -to the maximum extent possible; and (b) describe the limitations and the code -they affect. Such description must be placed in a text file included with -all distributions of the Covered Software under this License. Except to the -extent prohibited by statute or regulation, such description must be sufficiently -detailed for a recipient of ordinary skill to be able to understand it. - - 5. Termination - -5.1. The rights granted under this License will terminate automatically if -You fail to comply with any of its terms. However, if You become compliant, -then the rights granted under this License from a particular Contributor are -reinstated (a) provisionally, unless and until such Contributor explicitly -and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor -fails to notify You of the non-compliance by some reasonable means prior to -60 days after You have come back into compliance. Moreover, Your grants from -a particular Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the first -time You have received notice of non-compliance with this License from such -Contributor, and You become compliant prior to 30 days after Your receipt -of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent infringement -claim (excluding declaratory judgment actions, counter-claims, and cross-claims) -alleging that a Contributor Version directly or indirectly infringes any patent, -then the rights granted to You by any and all Contributors for the Covered -Software under Section 2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all end -user license agreements (excluding distributors and resellers) which have -been validly granted by You or Your distributors under this License prior -to termination shall survive termination. - - 6. Disclaimer of Warranty - -Covered Software is provided under this License on an "as is" basis, without -warranty of any kind, either expressed, implied, or statutory, including, -without limitation, warranties that the Covered Software is free of defects, -merchantable, fit for a particular purpose or non-infringing. The entire risk -as to the quality and performance of the Covered Software is with You. Should -any Covered Software prove defective in any respect, You (not any Contributor) -assume the cost of any necessary servicing, repair, or correction. This disclaimer -of warranty constitutes an essential part of this License. No use of any Covered -Software is authorized under this License except under this disclaimer. - - 7. Limitation of Liability - -Under no circumstances and under no legal theory, whether tort (including -negligence), contract, or otherwise, shall any Contributor, or anyone who -distributes Covered Software as permitted above, be liable to You for any -direct, indirect, special, incidental, or consequential damages of any character -including, without limitation, damages for lost profits, loss of goodwill, -work stoppage, computer failure or malfunction, or any and all other commercial -damages or losses, even if such party shall have been informed of the possibility -of such damages. This limitation of liability shall not apply to liability -for death or personal injury resulting from such party's negligence to the -extent applicable law prohibits such limitation. Some jurisdictions do not -allow the exclusion or limitation of incidental or consequential damages, -so this exclusion and limitation may not apply to You. - - 8. Litigation - -Any litigation relating to this License may be brought only in the courts -of a jurisdiction where the defendant maintains its principal place of business -and such litigation shall be governed by laws of that jurisdiction, without -reference to its conflict-of-law provisions. Nothing in this Section shall -prevent a party's ability to bring cross-claims or counter-claims. - - 9. Miscellaneous - -This License represents the complete agreement concerning the subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it enforceable. -Any law or regulation which provides that the language of a contract shall -be construed against the drafter shall not be used to construe this License -against a Contributor. - - 10. Versions of the License - - 10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section 10.3, -no one other than the license steward has the right to modify or publish new -versions of this License. Each version will be given a distinguishing version -number. - - 10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version of -the License under which You originally received the Covered Software, or under -the terms of any subsequent version published by the license steward. - - 10.3. Modified Versions - -If you create software not governed by this License, and you want to create -a new license for such software, you may create and use a modified version -of this License if you rename the license and remove any references to the -name of the license steward (except to note that such modified license differs -from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses - -If You choose to distribute Source Code Form that is Incompatible With Secondary -Licenses under the terms of this version of the License, the notice described -in Exhibit B of this License must be attached. Exhibit A - Source Code Form -License Notice - -This Source Code Form is subject to the terms of the Mozilla Public License, -v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain -one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular file, -then You may include the notice in a location (such as a LICENSE file in a -relevant directory) where a recipient would be likely to look for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice - -This Source Code Form is "Incompatible With Secondary Licenses", as defined -by the Mozilla Public License, v. 2.0. diff --git a/vendor/git.rootprojects.org/root/go-gitver/v2/.gitignore b/vendor/git.rootprojects.org/root/go-gitver/v2/.gitignore index b922513..ed6e7ee 100644 --- a/vendor/git.rootprojects.org/root/go-gitver/v2/.gitignore +++ b/vendor/git.rootprojects.org/root/go-gitver/v2/.gitignore @@ -2,7 +2,8 @@ xversion.go zversion.go /go-gitver -examples/**.sum +hello +examples/*/*.sum # ---> Go # Binaries for programs and plugins diff --git a/vendor/git.rootprojects.org/root/go-gitver/v2/README.md b/vendor/git.rootprojects.org/root/go-gitver/v2/README.md index 3ffc6ab..bfddd74 100644 --- a/vendor/git.rootprojects.org/root/go-gitver/v2/README.md +++ b/vendor/git.rootprojects.org/root/go-gitver/v2/README.md @@ -17,14 +17,14 @@ Goals: # GoDoc -See . +See . # How it works 1. You define the fallback version and version printing in `main.go`: ```go -//go:generate go run git.rootprojects.org/root/go-gitver +//go:generate go run git.rootprojects.org/root/go-gitver/v2 package main @@ -42,7 +42,7 @@ func main() { } ``` -2. You `go generate` or `go run git.rootprojects.org/root/go-gitver` to generate `xversion.go`: +2. You `go generate` or `go run git.rootprojects.org/root/go-gitver/v2` to generate `xversion.go`: ```go package main @@ -59,7 +59,7 @@ func init() { Generate an `xversion.go` file: ```bash -go run git.rootprojects.org/root/go-gitver +go run git.rootprojects.org/root/go-gitver/v2 cat xversion.go ``` @@ -81,7 +81,7 @@ most other files. See `go-gitver`s self-generated version: ```bash -go run git.rootprojects.org/root/go-gitver version +go run git.rootprojects.org/root/go-gitver/v2 version ``` ```txt @@ -95,7 +95,7 @@ v1.1.4-pre2+g6dace82 Add this to the top of your main file, so that it runs with `go generate`: ```go -//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver +//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver/v2 ``` @@ -106,7 +106,7 @@ Add a file that imports go-gitver (for versioning) package example -import _ "git.rootprojects.org/root/go-gitver" +import _ "git.rootprojects.org/root/go-gitver/v2" ``` Change you build instructions to be something like this: @@ -138,12 +138,12 @@ GITVER_FAIL=true For example: ```go -//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver --fail +//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver/v2 --fail ``` ```bash -go run -mod=vendor git.rootprojects.org/root/go-gitver version +go run -mod=vendor git.rootprojects.org/root/go-gitver/v2 version ``` # Usage @@ -152,9 +152,9 @@ See `examples/basic` 1. Create a `tools` package in your project 2. Guard it against regular builds with `// +build tools` -3. Include `_ "git.rootprojects.org/root/go-gitver"` in the imports +3. Include `_ "git.rootprojects.org/root/go-gitver/v2"` in the imports 4. Declare `var commit, version, date string` in your `package main` -5. Include `//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver` as well +5. Include `//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver/v2` as well `tools/tools.go`: @@ -165,14 +165,14 @@ See `examples/basic` package tools import ( - _ "git.rootprojects.org/root/go-gitver" + _ "git.rootprojects.org/root/go-gitver/v2" ) ``` `main.go`: ```go -//go:generate go run git.rootprojects.org/root/go-gitver --fail +//go:generate go run git.rootprojects.org/root/go-gitver/v2 --fail package main @@ -195,7 +195,7 @@ If you're using `go mod vendor` (which I highly recommend that you do), you'd modify the `go:generate` ever so slightly: ```go -//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver --fail +//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver/v2 --fail ``` The only reason I didn't do that in the example is that I'd be included @@ -203,7 +203,7 @@ the repository in itself and that would be... weird. # Why a tools package? -> import "git.rootprojects.org/root/go-gitver" is a program, not an importable package +> import "git.rootprojects.org/root/go-gitver/v2" is a program, not an importable package Having a tools package with a build tag that you don't use is a nice way to add exact versions of a command package used for tooling to your `go.mod` with `go mod tidy`, @@ -243,8 +243,8 @@ git rev-parse HEAD ### cannot find package "." ```txt -package git.rootprojects.org/root/go-gitver: cannot find package "." in: - /Users/me/go-example/vendor/git.rootprojects.org/root/go-gitver +package git.rootprojects.org/root/go-gitver/v2: cannot find package "." in: + /Users/me/go-example/vendor/git.rootprojects.org/root/go-gitver/v2 cmd/example/example.go:1: running "go": exit status 1 ``` diff --git a/vendor/git.rootprojects.org/root/go-gitver/v2/gitver.go b/vendor/git.rootprojects.org/root/go-gitver/v2/gitver.go index 46018af..e4b86fd 100644 --- a/vendor/git.rootprojects.org/root/go-gitver/v2/gitver.go +++ b/vendor/git.rootprojects.org/root/go-gitver/v2/gitver.go @@ -1,4 +1,4 @@ -//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver +//go:generate go run -mod=vendor git.rootprojects.org/root/go-gitver/v2 package main @@ -10,7 +10,7 @@ import ( "text/template" "time" - "git.rootprojects.org/root/go-gitver/gitver" + "git.rootprojects.org/root/go-gitver/v2/gitver" ) var commit, version, date string diff --git a/vendor/git.rootprojects.org/root/go-gitver/gitver/gitver.go b/vendor/git.rootprojects.org/root/go-gitver/v2/gitver/gitver.go similarity index 86% rename from vendor/git.rootprojects.org/root/go-gitver/gitver/gitver.go rename to vendor/git.rootprojects.org/root/go-gitver/v2/gitver/gitver.go index fc04418..1c00863 100644 --- a/vendor/git.rootprojects.org/root/go-gitver/gitver/gitver.go +++ b/vendor/git.rootprojects.org/root/go-gitver/v2/gitver/gitver.go @@ -21,12 +21,14 @@ func init() { gitVer = regexp.MustCompile(`^(v\d+\.\d+)\.(\d+)(-(\d+))?(-(g[0-9a-f]+))?(-(dirty))?`) } +// Versions describes the various version properties type Versions struct { Timestamp time.Time Version string Rev string } +// ExecAndParse will run git and parse the output func ExecAndParse() (*Versions, error) { desc, err := gitDesc() if nil != err { @@ -58,7 +60,7 @@ func gitDesc() (string, error) { out, err := cmd.CombinedOutput() if nil != err { // Don't panic, just carry on - //out = []byte("v0.0.0-0-g0000000") + //out = []byte("0.0.0-0-g0000000") return "", err } return strings.TrimSpace(string(out)), nil @@ -83,7 +85,7 @@ func gitRev() (string, error) { func semVer(desc string) (string, error) { if exactVer.MatchString(desc) { // v1.0.0 - return desc, nil + return strings.TrimPrefix(desc, "v"), nil } if !gitVer.MatchString(desc) { @@ -122,10 +124,19 @@ func semVer(desc string) (string, error) { ver += vers[8] } - return ver, nil + return strings.TrimPrefix(ver, "v"), nil } func gitTimestamp(desc string) (time.Time, error) { + // Other options: + // + // Commit Date + // git log -1 --format=%cd --date=format:%Y-%m-%dT%H:%M:%SZ%z + // + // Author Date + // git log -1 --format=%ad --date=format:%Y-%m-%dT%H:%M:%SZ%z + // + // I think I chose this because it would account for dirty-ness better... maybe? args := []string{ "git", "show", desc, diff --git a/vendor/git.rootprojects.org/root/go-gitver/v2/go.sum b/vendor/git.rootprojects.org/root/go-gitver/v2/go.sum new file mode 100644 index 0000000..dd58ff6 --- /dev/null +++ b/vendor/git.rootprojects.org/root/go-gitver/v2/go.sum @@ -0,0 +1,2 @@ +git.rootprojects.org/root/go-gitver v1.1.3 h1:/qR9z53vY+IFhWRxLkF9cjaiWh8xRJIm6gyuW+MG81A= +git.rootprojects.org/root/go-gitver v1.1.3/go.mod h1:Rj1v3TBhvdaSphFEqMynUYwAz/4f+wY/+syBTvRrmlI= diff --git a/vendor/modules.txt b/vendor/modules.txt index 98314d8..424554e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,9 +1,7 @@ -# git.rootprojects.org/root/go-gitver v1.1.3 -## explicit -git.rootprojects.org/root/go-gitver/gitver -# git.rootprojects.org/root/go-gitver/v2 v2.0.1 +# git.rootprojects.org/root/go-gitver/v2 v2.0.2 ## explicit git.rootprojects.org/root/go-gitver/v2 +git.rootprojects.org/root/go-gitver/v2/gitver # git.rootprojects.org/root/keypairs v0.6.3 ## explicit git.rootprojects.org/root/keypairs