Skip to content

Commit

Permalink
prepare v1.5.0-rc2 (#161)
Browse files Browse the repository at this point in the history
  • Loading branch information
dajohi authored Nov 19, 2019
1 parent f4155a9 commit b2dadda
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 158 deletions.
128 changes: 41 additions & 87 deletions cmd/dcrinstall/dcrinstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
"time"

"github.com/decred/dcrd/dcrutil/v2"
"github.com/decred/dcrd/sampleconfig"
"github.com/marcopeereboom/go-homedir"
)

Expand All @@ -38,7 +37,6 @@ type binary struct {
Name string // binary filename
Config string // actual config file
Example string // example config file
ExampleGenerate bool // whether or not to generate the example config
SupportsVersion bool // whether or not it supports --version
}

Expand All @@ -54,7 +52,6 @@ var (
Name: "dcrd",
Config: "dcrd.conf",
Example: "sample-dcrd.conf",
ExampleGenerate: true,
SupportsVersion: true,
},
{
Expand All @@ -70,11 +67,19 @@ var (
{
Name: "dcrlnd",
SupportsVersion: true,
Config: "dcrlnd.conf",
Example: "sample-dcrlnd.conf",
},
{
Name: "dcrlncli",
SupportsVersion: true,
},
{
Name: "politeiavoter",
Config: "politeiavoter.conf",
Example: "sample-politeiavoter.conf",
SupportsVersion: true,
},
}
)

Expand Down Expand Up @@ -180,26 +185,20 @@ func (c *ctx) download() (string, error) {
c.log("downloading manifest: %v\n", manifestURI)

manifest := filepath.Join(td, filepath.Base(manifestURI))
err = downloadToFile(manifestURI, manifest, c.s.SkipVerify)
err = downloadToFile(manifestURI, manifest)
if err != nil {
return "", err
}

// download manifest signature
manifestAscURI := c.s.URI + "/" + c.s.Manifest + ".asc"
if c.s.SkipVerify {
c.log("SKIPPING downloading manifest "+
"signatures: %v\n", manifestAscURI)
} else {
c.log("downloading manifest signatures: %v\n",
manifestAscURI)
c.log("downloading manifest signatures: %v\n",
manifestAscURI)

manifestAsc := filepath.Join(td, filepath.Base(manifestAscURI))
err = downloadToFile(manifestAscURI, manifestAsc,
c.s.SkipVerify)
if err != nil {
return "", err
}
manifestAsc := filepath.Join(td, filepath.Base(manifestAscURI))
err = downloadToFile(manifestAscURI, manifestAsc)
if err != nil {
return "", err
}

// determine if os-arch is supported
Expand All @@ -213,7 +212,7 @@ func (c *ctx) download() (string, error) {
c.log("downloading package: %v\n", packageURI)

pkg := filepath.Join(td, filepath.Base(packageURI))
err = downloadToFile(packageURI, pkg, c.s.SkipVerify)
err = downloadToFile(packageURI, pkg)
if err != nil {
return "", err
}
Expand All @@ -230,22 +229,17 @@ func (c *ctx) verify() error {
return err
}

if c.s.SkipVerify {
c.log("SKIPPING verifying manifest: %v\n",
c.s.Manifest)
} else {
// verify manifest
c.log("verifying manifest: %v ", c.s.Manifest)

err = pgpVerify(manifest+".asc", manifest)
if err != nil {
c.logNoTime("FAIL\n")
return fmt.Errorf("manifest PGP signature incorrect: %v", err)
}
// verify manifest
c.log("verifying manifest: %v ", c.s.Manifest)

c.logNoTime("OK\n")
err = pgpVerify(manifest+".asc", manifest)
if err != nil {
c.logNoTime("FAIL\n")
return fmt.Errorf("manifest PGP signature incorrect: %v", err)
}

c.logNoTime("OK\n")

// verify digest
c.log("verifying package: %v ", filename)

Expand Down Expand Up @@ -358,32 +352,6 @@ func (c *ctx) recordCurrent() error {
return nil
}

// exists ensures that either all or none of the binary config files exist.
func (c *ctx) exists() ([]string, error) {
x := 0
s := ""
found := make([]string, 0, len(binaries))
for _, v := range binaries {
// check actual config file
dir := dcrutil.AppDataDir(v.Name, false)
conf := filepath.Join(dir, v.Config)

if !exist(conf) {
continue
}

found = append(found, filepath.Base(conf))
s += filepath.Base(conf) + " "
x++
}

if x != 0 {
return found, fmt.Errorf("%valready exists", s)
}

return nil, nil
}

func (c *ctx) createConfigNormal(b binary, f *os.File) (string, error) {
seen := false
rv := ""
Expand Down Expand Up @@ -431,18 +399,6 @@ func (c *ctx) createConfig(b binary, version string) (string, error) {
"decred-"+c.s.Tuple+"-"+version,
b.Example)

// write sample config if needed
if b.ExampleGenerate {
switch b.Name {
case "dcrd":
err := ioutil.WriteFile(sample, []byte(sampleconfig.FileContents), 0644)
if err != nil {
return "", fmt.Errorf("unable to write sample config to %v: %v",
sample, err)
}
}
}

// read sample config
f, err := os.Open(sample)
if err != nil {
Expand Down Expand Up @@ -548,32 +504,28 @@ func (c *ctx) main() error {
return err
}

found, err := c.exists()
// prime defaults
err = c.obtainUserName()
if err != nil {
c.log("--- Performing upgrade ---\n")
} else if len(found) == 0 {
c.log("--- Performing install ---\n")
return err
}

// prime defaults
err = c.obtainUserName()
if err != nil {
return err
}
err = c.obtainPassword()
if err != nil {
return err
}

err = c.obtainPassword()
if err != nil {
return err
}
for _, v := range binaries {
if v.Config != "" {
// check actual config file
dir := dcrutil.AppDataDir(v.Name, false)
conf := filepath.Join(dir, v.Config)

// lay down config files with parsed answers only if a Config
// was defined
for _, v := range binaries {
if v.Config != "" {
if !exist(conf) {
config, err := c.createConfig(v, version)
if err != nil {
return err
}

dir := dcrutil.AppDataDir(v.Name, false)
c.log("creating directory: %v\n", dir)

Expand All @@ -582,13 +534,15 @@ func (c *ctx) main() error {
return err
}

c.log("installing %s\n", conf)
err = c.writeConfig(v, config)
if err != nil {
return err
}
} else {
c.log("skipping %s -- already installed\n", conf)
}
}

if c.walletDBExists() {
c.log("wallet.db exists, skipping wallet creation.\n")
} else {
Expand Down
10 changes: 2 additions & 8 deletions cmd/dcrinstall/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@
package main

import (
"crypto/tls"
"fmt"
"io"
"net/http"
"os"
"strings"
)

func downloadToFile(url, filename string, skipVerify bool) error {
func downloadToFile(url, filename string) error {
f, err := os.OpenFile(filename, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0600)
if err != nil {
return err
Expand All @@ -31,12 +30,7 @@ func downloadToFile(url, filename string, skipVerify bool) error {
return err
}

tr := &http.Transport{}
if skipVerify {
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
}
client := &http.Client{Transport: tr}

var client http.Client
res, err := client.Get(url)
if err != nil {
return err
Expand Down
10 changes: 3 additions & 7 deletions cmd/dcrinstall/settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ import (

// latestVersion and latestManifest must be updated every release.
const (
latestManifest = "decred-v1.5.0-rc1-manifest.txt"
defaultURI = "https://github.com/decred/decred-binaries/releases/download/v1.5.0-rc1"
latestManifest = "decred-v1.5.0-rc2-manifest.txt"
defaultURI = "https://github.com/decred/decred-binaries/releases/download/v1.5.0-rc2"

netMain = "mainnet"
netTest = "testnet"
netTest = "testnet3"
netSim = "simnet"
walletDB = "wallet.db" // start using wallet package one
)
Expand All @@ -37,7 +37,6 @@ type Settings struct {
URI string // URI to manifest and sets
DownloadOnly bool // download files only
SkipDownload bool // requires path to files
SkipVerify bool // skip TLS and signature checks, internal use only
Quiet bool // quiet
Verbose bool // loudness
Version bool // show version.
Expand Down Expand Up @@ -80,9 +79,6 @@ func parseSettings() (*Settings, error) {
if *skip && *download {
return nil, fmt.Errorf("downloadonly and skip are mutually exclusive")
}
if *uri != defaultURI {
s.SkipVerify = true
}

switch *net {
case netMain, netTest, netSim:
Expand Down
3 changes: 1 addition & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ module github.com/decred/decred-release
go 1.12

require (
github.com/decred/dcrd v1.2.1-0.20191016204340-338ce9d7017d
github.com/decred/dcrd/dcrutil/v2 v2.0.1
github.com/marcopeereboom/go-homedir v0.0.0-20160809154605-56341bedd946
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8
golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f
)
56 changes: 2 additions & 54 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,86 +1,34 @@
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI=
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
github.com/btcsuite/goleveldb v1.0.0 h1:Tvd0BfvqX9o823q1j2UZ/epQo09eJh6dTcRp79ilIN4=
github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=
github.com/btcsuite/snappy-go v1.0.0 h1:ZxaA6lo2EpxGddsA8JwWOcxlzRybb444sgmeJQMJGQE=
github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4=
github.com/decred/base58 v1.0.1 h1:w5qTcb0hYpKuIBYIn4Ckirkj1aOWrSq8onPQpb3eGg8=
github.com/decred/base58 v1.0.1/go.mod h1:H2ENcsJjye1G7CbRa67kV9OFaui0LGr56ntKKoY5g9c=
github.com/decred/dcrd v1.2.1-0.20191016204340-338ce9d7017d h1:WzqUg8gbKU+X1p2PT9o1Y70O7h7cmuvDmt2mL9GpgCs=
github.com/decred/dcrd v1.2.1-0.20191016204340-338ce9d7017d/go.mod h1:0qYDrewV+wiR9Xd//76LCCbhOx3upTrOrFzD8FaHRMM=
github.com/decred/dcrd/addrmgr v1.1.0/go.mod h1:exghL+0+QeVvO4MXezWJ1C2tcpBn3ngfuP6S1R+adB8=
github.com/decred/dcrd/blockchain/stake/v2 v2.0.2/go.mod h1:o2TT/l/YFdrt15waUdlZ3g90zfSwlA0WgQqHV9UGJF4=
github.com/decred/dcrd/blockchain/standalone v1.1.0/go.mod h1:6K8ZgzlWM1Kz2TwXbrtiAvfvIwfAmlzrtpA7CVPCUPE=
github.com/decred/dcrd/blockchain/v2 v2.1.0/go.mod h1:DBmX26fUDTQocIozF44Ydo5+m+QzaC6aMYMBFFsCOJs=
github.com/decred/dcrd/certgen v1.1.0/go.mod h1:ivkPLChfjdAgFh7ZQOtl6kJRqVkfrCq67dlq3AbZBQE=
github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU=
github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60=
github.com/decred/dcrd/chaincfg/v2 v2.3.0 h1:ItmU+7DeUtyiabrcW+16MJFgY/BBeeYaPfkBLrFLyjo=
github.com/decred/dcrd/chaincfg/v2 v2.3.0/go.mod h1:7qUJTvn+y/kswSRZ4sT2+EmvlDTDyy2InvNFtX/hxk0=
github.com/decred/dcrd/connmgr/v2 v2.1.0/go.mod h1:a3cjZ9xP5Ulm/eptpqma2Is3wHcoUXYvx5gFoOou5J0=
github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
github.com/decred/dcrd/crypto/ripemd160 v1.0.0 h1:MciTnR4NfBqDFRFjFkrn8WPLP4Vo7t6ww6ghfn6wcXQ=
github.com/decred/dcrd/crypto/ripemd160 v1.0.0/go.mod h1:F0H8cjIuWTRoixr/LM3REB8obcWkmYx0gbxpQWR8RPg=
github.com/decred/dcrd/database/v2 v2.0.1/go.mod h1:ZOaWTv3IlNqCA+y7q3q5EozgmiDOmNwCSq3ntZn2CDo=
github.com/decred/dcrd/dcrec v1.0.0 h1:W+z6Es+Rai3MXYVoPAxYr5U1DGis0Co33scJ6uH2J6o=
github.com/decred/dcrd/dcrec v1.0.0/go.mod h1:HIaqbEJQ+PDzQcORxnqen5/V1FR3B4VpIfmePklt8Q8=
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 h1:E5KszxGgpjpmW8vN811G6rBAZg0/S/DftdGqN4FW5x4=
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0/go.mod h1:d0H8xGMWbiIQP7gN3v2rByWUcuZPm9YsgmnfoxgbINc=
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 h1:3GIJYXQDAKpLEFriGFN8SbSffak10UXHGdIcFaMPykY=
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0/go.mod h1:3s92l0paYkZoIHuj4X93Teg/HB7eGM9x/zokGw+u4mY=
github.com/decred/dcrd/dcrjson/v3 v3.0.1/go.mod h1:fnTHev/ABGp8IxFudDhjGi9ghLiXRff1qZz/wvq12Mg=
github.com/decred/dcrd/dcrutil/v2 v2.0.1 h1:aL+c7o7Q66HV1gIif+XkNYo9DeorN3l01Vns8mh0mqs=
github.com/decred/dcrd/dcrutil/v2 v2.0.1/go.mod h1:JdEgF6eh0TTohPeiqDxqDSikTSvAczq0J7tFMyyeD+k=
github.com/decred/dcrd/fees/v2 v2.0.0/go.mod h1:zp0T0FKK8glI272+V74X32Fv5XPYJH45U8aLrnovvoE=
github.com/decred/dcrd/gcs/v2 v2.0.0/go.mod h1:3XjKcrtvB+r2ezhIsyNCLk6dRnXRJVyYmsd1P3SkU3o=
github.com/decred/dcrd/gcs/v2 v2.0.1/go.mod h1:3XjKcrtvB+r2ezhIsyNCLk6dRnXRJVyYmsd1P3SkU3o=
github.com/decred/dcrd/hdkeychain/v2 v2.1.0/go.mod h1:DR+lD4uV8G0i3c9qnUJwjiGaaEWK+nSrbWCz1BRHBL8=
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
github.com/decred/dcrd/mempool/v3 v3.1.0/go.mod h1:ZBE82GEW3EQd2VT5wJVV2z/XLTpGNxpwo8KbyVvN024=
github.com/decred/dcrd/mining/v2 v2.0.1/go.mod h1:yYSx2phYPiulg7TyI3gTuDbF313MEulyx0bw/aYvRh8=
github.com/decred/dcrd/peer/v2 v2.1.0/go.mod h1:VBKE3Uv9nU5PXIf8W67Aetke0ywKagNVQL2Z8W6EuWo=
github.com/decred/dcrd/rpc/jsonrpc/types v1.0.1/go.mod h1:dJUp9PoyFYklzmlImpVkVLOr6j4zKuUv66YgemP2sd8=
github.com/decred/dcrd/rpc/jsonrpc/types/v2 v2.0.0/go.mod h1:c5S+PtQWNIA2aUakgrLhrlopkMadcOv51dWhCEdo49c=
github.com/decred/dcrd/rpcclient/v5 v5.0.0/go.mod h1:lg7e2kpulSpynHkS2JXJ+trQ4PWHaHLQcp/Q0eSIvBc=
github.com/decred/dcrd/txscript/v2 v2.1.0/go.mod h1:XaJAVrZU4NWRx4UEzTiDAs86op1m8GRJLz24SDBKOi0=
github.com/decred/dcrd/wire v1.3.0 h1:X76I2/a8esUmxXmFpJpAvXEi014IA4twgwcOBeIS8lE=
github.com/decred/dcrd/wire v1.3.0/go.mod h1:fnKGlUY2IBuqnpxx5dYRU5Oiq392OBqAuVjRVSkIoXM=
github.com/decred/dcrwallet/rpc/jsonrpc/types v1.3.0/go.mod h1:Xvekb43GtfMiRbyIY4ZJ9Uhd9HRIAcnp46f3q2eIExU=
github.com/decred/go-socks v1.1.0/go.mod h1:sDhHqkZH0X4JjSa02oYOGhcGHYp12FsY1jQ/meV8md0=
github.com/decred/slog v1.0.0 h1:Dl+W8O6/JH6n2xIFN2p3DNjCmjYwvrXsjlSJTQQ4MhE=
github.com/decred/slog v1.0.0/go.mod h1:zR98rEZHSnbZ4WHZtO0iqmSZjDLKhkXfrPTZQKtAonQ=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jrick/bitset v1.0.0 h1:Ws0PXV3PwXqWK2n7Vz6idCdrV/9OrBXgHEJi27ZB9Dw=
github.com/jrick/bitset v1.0.0/go.mod h1:ZOYB5Uvkla7wIEY4FEssPVi3IQXa02arznRaYaAEPe4=
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
github.com/marcopeereboom/go-homedir v0.0.0-20160809154605-56341bedd946 h1:erdoQKHPX/xtx9M76uvDMSzleShH3vMK3v5l+2h9hd8=
github.com/marcopeereboom/go-homedir v0.0.0-20160809154605-56341bedd946/go.mod h1:HpUsdYCQZryZt27WB8RmjmjvlHGJ8px/C+zxjm6l8lU=
github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.4.1 h1:PZSj/UFNaVp3KxrzHOcS7oyuWA7LoOY/77yCTEFu21U=
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU=
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f h1:kz4KIr+xcPUsI3VMoqWfPMvtnJ6MGfiVwsWSVzphMO4=
golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

0 comments on commit b2dadda

Please sign in to comment.