working on the commit system

This commit is contained in:
2020-09-08 20:44:02 -04:00
parent cb24c6f2c8
commit 951cda3b25
26 changed files with 378 additions and 31 deletions

BIN
client/.gvc/gvc Normal file

Binary file not shown.

Binary file not shown.

0
client/.gvc/gvc.db.lock Normal file
View File

View File

@@ -1,16 +1,248 @@
{"level":"info","message":"Creating new Manager..."}
{"level":"info","module":"database","message":"Fetching last commit on branch: master"}
{"level":"info","message":"Creating new Manager..."}
{"level":"info","module":"database","message":"Fetching last commit on branch: master"}
{"level":"info","module":"database","message":"Last commit was of number: 1 Last Commit Hash was: E\ufffd\ufffd>\ufffd\ufffd˵\ufffd\u0012V\ufffd\ufffdϟw\ufffd`#,FU(\ufffd\ufffdQ\ufffd}\ufffd1 \ufffd Last commit occurred on date: 2020-07-06 14:50:09.4015985 -0400 EDT m=+0.027025401"}
{"level":"info","message":"Creating new Manager..."}
{"level":"info","module":"database","message":"Fetching last commit on branch: master"}
{"level":"info","module":"database","message":"Last commit was of number: 1 Last Commit Hash was: 45d0ec3eabe1cbb5901256d0cecf9f779460232c465528a1d351987d8f31208b Last commit occurred on date: 2020-07-06 14:50:09.4015985 -0400 EDT m=+0.027025401"}
{"level":"info","message":"Creating new Manager..."}
{"level":"info","module":"database","message":"Fetching last commit on branch: master"}
{"level":"info","module":"database","message":"Last commit was of number: 1 Last Commit Hash was: 45d0ec3eabe1cbb5901256d0cecf9f779460232c465528a1d351987d8f31208b Last commit occurred on date: 2020-07-06 14:50:09.4015985 -0400 EDT m=+0.027025401"}
{"level":"info","message":"Creating new Manager..."}
{"level":"info","module":"database","message":"Fetching last commit on branch: master"}
{"level":"info","module":"database","message":"Last commit was of number: 1 Last Commit Hash was: 45d0ec3eabe1cbb5901256d0cecf9f779460232c465528a1d351987d8f31208b Last commit occurred on date: 2020-07-06 14:50:09.4015985 -0400 EDT m=+0.027025401"}
{"level":"info","message":"Starting commit number: %!s(int=2) on branch: master"}
{"level":"info","message":"Total number of files to commit: %!s(int=16)"}
{"level":"info","message":"Number of new Files: 240"}
{"level":"info","message":"Starting commit number: 2 on branch: master"}
{"level":"info","message":"Total number of files to commit: 16"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test2.go"}
{"level":"info","message":"Converting changed file: client.go"}
{"level":"info","message":"Converting changed file: add.go"}
{"level":"info","message":"Converting changed file: branch.go"}
{"level":"info","message":"Converting changed file: commit.go"}
{"level":"info","message":"Converting changed file: commonlib.go"}
{"level":"info","message":"Converting changed file: ignore.go"}
{"level":"info","message":"Converting changed file: info.go"}
{"level":"info","message":"Converting changed file: init.go"}
{"level":"info","message":"Converting changed file: lock.go"}
{"level":"info","message":"Converting changed file: refresh.go"}
{"level":"info","message":"Converting changed file: remote.go"}
{"level":"info","message":"Converting changed file: switch.go"}
{"level":"info","message":"Converting changed file: config.go"}
{"level":"info","message":"Converting changed file: structures.go"}
{"level":"info","message":"Converting changed file: test.go.old"}
{"level":"info","module":"database","message":"Writing new commit: %!s(int=2) on branch: master"}

View File

@@ -36,6 +36,7 @@ func (m *Manager) CreateInitialCommit(fileList []database.File, branch string, c
for _, file := range fileList {
filename, err := ConvertFileForStorage(&file, folder)
if err != nil {
fmt.Println("Failure converting file for storage! ", file)
// TODO: roll back commit on error (folders/files created need to be deleted)
return err
}
@@ -51,7 +52,7 @@ func (m *Manager) CreateInitialCommit(fileList []database.File, branch string, c
}
// CreateCommit creates a new commit by running diffs on files, compressing, etc, as needed
func (m *Manager) CreateCommit(changedFiles []database.File, trackedFiles []database.File, branch string, commitMessage string, commitNumber int) error {
func (m *Manager) CreateCommit(changedFiles, trackedFiles, newFiles []database.File, branch string, commitMessage string, commitNumber int) error {
m.Info().Msgf("Starting commit number: %d on branch: %s", commitNumber, branch)
//Need to deduplicate so we aren't storing duplicates of files, storing all the files in one folder won't work, will need something like git
//For initial commit no changes are made to files, so don't store anything, just save the list so you can send to server
@@ -63,7 +64,7 @@ func (m *Manager) CreateCommit(changedFiles []database.File, trackedFiles []data
}
currentTime := time.Now()
newCommit.CommitHash = hashBytes
newCommit.Number = 1
newCommit.Number = commitNumber
newCommit.TrackedFiles = trackedFiles
newCommit.Date = currentTime.String()
folder := m.FilePaths.ObjectFolder + string(filepath.Separator) + hex.EncodeToString(hashBytes)
@@ -71,13 +72,20 @@ func (m *Manager) CreateCommit(changedFiles []database.File, trackedFiles []data
if err != nil {
return fmt.Errorf("unable to create commit directory in object dir: %s err: %s", folder, err)
}
// TODO: Do a full file copy every 5 commits
m.Info().Msgf("Total number of files to commit: %d", len(trackedFiles))
fmt.Println("Total number of files to commit: ", len(trackedFiles))
// TODO: CHeck for NEW Files and convert to starage, not changed files
for _, file := range changedFiles {
m.Info().Msgf("Converting changed fi")
// Find NEW files that need to be converted for storage
var changedandNewFiles []database.File
changedandNewFiles = append(changedFiles, newFiles...)
for _, file := range changedandNewFiles {
m.Info().Msgf("Converting changed file: %s", file.Name)
filename, err := ConvertFileForStorage(&file, folder)
if err != nil {
fmt.Println("Error converting changed file! ", file.Name)
m.Info().Msgf("error converting file for storage: %s err: %s", file.Name, err)
// TODO: roll back commit on error (folders/files created need to be deleted)
return err
}

View File

@@ -19,12 +19,12 @@ type SomeStruct struct {
}
// CompressFile uses pgzip to compress a file for storage
func CompressFile(path string) error {
func CompressFile(path string, newPath string) error {
fileBytes, err := ioutil.ReadFile(path)
if err != nil {
return fmt.Errorf("unable to read file: %s", path)
}
file, err := os.Create(path)
file, err := os.Create(newPath)
if err != nil {
return err
}

View File

@@ -69,8 +69,8 @@ func ExpandToIntArray(length int64, arry []byte, intArray *[]int64) error {
// ConvertFileForStorage opens the original file and dumps the bytes to pgzip to compress it for storage
func ConvertFileForStorage(file *database.File, folder string) (fileName string, err error) {
filename := folder + string(filepath.Separator) + file.Name //fileName is under the object folder then the hash, then the filename
err = CompressFile(filename)
filename := folder + string(filepath.Separator) + file.Name //fileName (for compressed object) is under the object folder then the hash, then the filename
err = CompressFile(file.Path, filename) // Path to the original file so we can compress, and the expected new compressed file
if err != nil {
return filename, err
}

View File

@@ -210,11 +210,11 @@ func (m *Manager) BeginCommit(branch string, commitMessage string) error {
return err
}
if len(trackedFiles) == 0 {
return fmt.Errorf("no files show as tracked in repo, cannot commit, aborting...")
return fmt.Errorf("no files show as tracked in repo, cannot commit, aborting")
}
commit, err := m.dB.FetchLastCommitOnBranch(branch) //Check for previous commits
lastCommit, err := m.dB.FetchLastCommitOnBranch(branch) //Check for previous commits
if err != nil {
m.Info().Msgf("unable to fetch last commit on branch, assuming first commit on branch", err)
m.Info().Msgf("unable to fetch last commit on branch, assuming first commit on branch: %s", err)
err := m.CreateInitialCommit(trackedFiles, branch, commitMessage) // Create the initial commit
if err != nil {
m.Err(err).Msgf("unable to create initial commit: %s", err)
@@ -223,7 +223,7 @@ func (m *Manager) BeginCommit(branch string, commitMessage string) error {
m.Info().Msgf("Initial Commit Created, returning...")
return nil
}
var filesToDiff []database.File // Contains the list of files that have changed since the initial commit
var changedFiles []database.File // Contains the list of files that have changed since the initial commit
for _, trackedFile := range trackedFiles {
fmt.Println("Working on file: ", trackedFile.Path)
if trackedFile.Path == "" {
@@ -245,19 +245,32 @@ func (m *Manager) BeginCommit(branch string, commitMessage string) error {
fmt.Printf("No changes found in file: %s when compared to file: %s\n", currentFile.Name(), trackedFile.Name)
continue
}
filesToDiff = append(filesToDiff, trackedFile)
changedFiles = append(changedFiles, trackedFile)
}
var newFiles []database.File // Comparing old tracked files with current to find new tracked files
for _, oldFile := range lastCommit.TrackedFiles {
for _, newFile := range trackedFiles {
if oldFile.Path == newFile.Path {
continue
} else {
newFiles = append(newFiles, newFile)
}
}
}
m.Info().Msgf("Number of new Files: %d", len(newFiles))
//diffChannel := make(chan database.DiffObject)
//diffContext := context.Background()
//m.WaitGroup.Add(2)
fmt.Println("Changed Files: ", filesToDiff)
if len(filesToDiff) == 0 {
for _, changedFile := range changedFiles {
fmt.Println("Changed File: ", changedFile.Path)
}
if len(changedFiles) == 0 {
m.Info().Msgf("No changed files found to commit on branch: %s", branch)
return fmt.Errorf("no changed files, cannot commit on branch: %s", branch)
}
fmt.Println("COMMIT: ", hex.EncodeToString(commit.CommitHash))
newCommitNumber := commit.Number + 1
err = m.CreateCommit(filesToDiff, trackedFiles, branch, commitMessage, newCommitNumber)
newCommitNumber := lastCommit.Number + 1
err = m.CreateCommit(changedFiles, trackedFiles, newFiles, branch, commitMessage, newCommitNumber)
if err != nil {
return err
}

14
go.mod
View File

@@ -8,13 +8,20 @@ require (
github.com/amlwwalker/fdelta v0.0.0-20200513211915-3b53ff25eff6
github.com/apsdehal/go-logger v0.0.0-20190515212710-b0d6ccfee0e6
github.com/asdine/storm v2.1.2+incompatible
github.com/boltdb/bolt v1.3.1 // indirect
github.com/boltdb/boltd v0.0.0-20150220181201-1f04e2021e45 // indirect
github.com/cbergoon/merkletree v0.2.0 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
github.com/deranjer/clir v1.0.5
github.com/deranjer/store v0.0.0-20200526205429-464dd59c6031
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
github.com/elazarl/go-bindata-assetfs v1.0.1 // indirect
github.com/evnix/boltdbweb v0.0.0-20191029203843-5b16e6623bd9 // indirect
github.com/gin-gonic/gin v1.6.3 // indirect
github.com/go-resty/resty/v2 v2.3.0
github.com/golang/protobuf v1.4.2 // indirect
github.com/golang/snappy v0.0.1 // indirect
github.com/hasit/bolter v0.0.0-20200427155054-832cf37fbaf6 // indirect
github.com/imdario/mergo v0.3.9
github.com/kalafut/imohash v1.0.0
github.com/klauspost/compress v1.10.10 // indirect
@@ -22,11 +29,18 @@ require (
github.com/labstack/echo v3.3.10+incompatible
github.com/labstack/gommon v0.3.0 // indirect
github.com/mattn/go-colorable v0.1.6 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/olekukonko/tablewriter v0.0.4 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/r3labs/diff v1.1.0 // indirect
github.com/radovskyb/watcher v1.0.7
github.com/rs/zerolog v1.19.0
github.com/sirupsen/logrus v1.6.0 // indirect
github.com/urfave/cli v1.22.4 // indirect
github.com/valyala/fasttemplate v1.1.0 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
go.etcd.io/bbolt v1.3.4 // indirect
golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d // indirect
golang.org/x/sys v0.0.0-20200908134130-d2e65c121b96 // indirect
google.golang.org/appengine v1.6.6 // indirect
)

80
go.sum
View File

@@ -10,20 +10,45 @@ github.com/apsdehal/go-logger v0.0.0-20190515212710-b0d6ccfee0e6 h1:qISSdUEX4sjD
github.com/apsdehal/go-logger v0.0.0-20190515212710-b0d6ccfee0e6/go.mod h1:U3/8D6R9+bVpX0ORZjV+3mU9pQ86m7h1lESgJbXNvXA=
github.com/asdine/storm v2.1.2+incompatible h1:dczuIkyqwY2LrtXPz8ixMrU/OFgZp71kbKTHGrXYt/Q=
github.com/asdine/storm v2.1.2+incompatible/go.mod h1:RarYDc9hq1UPLImuiXK3BIWPJLdIygvV3PsInK0FbVQ=
github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
github.com/boltdb/boltd v0.0.0-20150220181201-1f04e2021e45 h1:ep0QrTbZFgXa8e4lTAdd/NPY9ZiSP/ysDf26+UNPogo=
github.com/boltdb/boltd v0.0.0-20150220181201-1f04e2021e45/go.mod h1:512MO8jN3usqrPdyZ8YtG6vLsQ8wGV5W9cykDwCy1WI=
github.com/cbergoon/merkletree v0.2.0 h1:Bttqr3OuoiZEo4ed1L7fTasHka9II+BF9fhBfbNEEoQ=
github.com/cbergoon/merkletree v0.2.0/go.mod h1:5c15eckUgiucMGDOCanvalj/yJnD+KAZj1qyJtRW5aM=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deranjer/clir v1.0.5 h1:tEunZj5qJLYNBtzMQ/vH8hEAIv4NptWFmTldsP9U2qY=
github.com/deranjer/clir v1.0.5/go.mod h1:x/FAjr5CHGsBT0yjs+NYxX3qFxx8G15gbeCcN6FFuyU=
github.com/deranjer/store v0.0.0-20200526205429-464dd59c6031 h1:sPjxPMNILoBbu6uhDfa97AhlUhTgtPY2HqySAzuLd4o=
github.com/deranjer/store v0.0.0-20200526205429-464dd59c6031/go.mod h1:wPOs9IJ77lRTXyjEOQeegCFjIlm21qOFcv33lXmU7gE=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/elazarl/go-bindata-assetfs v1.0.1 h1:m0kkaHRKEu7tUIUFVwhGGGYClXvyl4RE03qmvRTNfbw=
github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
github.com/evnix/boltdbweb v0.0.0-20191029203843-5b16e6623bd9 h1:dC7Oop5DzcTumNzd05DmaeRKFTbnmoFcMI0mDTq9YOQ=
github.com/evnix/boltdbweb v0.0.0-20191029203843-5b16e6623bd9/go.mod h1:bgR50h2xH9mkOK8usjyWvaOtA2hUAHDTXSc72t2lvT8=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY=
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So=
github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
@@ -37,18 +62,33 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/hasit/bolter v0.0.0-20200427155054-832cf37fbaf6 h1:YJo92OCdfUKr9ojl1bjuZ0QZLEgFFeT68eeRVaUeOis=
github.com/hasit/bolter v0.0.0-20200427155054-832cf37fbaf6/go.mod h1:QeiIIsu6N8sVPeSHpo1i9cID5fjR5/9nEgumickazDo=
github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg=
github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/kalafut/imohash v1.0.0 h1:LgCJ+p/BwM2HKpOxFopkeddpzVCfm15EtXMroXD1SYE=
github.com/kalafut/imohash v1.0.0/go.mod h1:c3RHT80ZAp5C/aYgQI92ZlrOymqkZnRDprU87kg75HI=
github.com/klauspost/compress v1.10.10 h1:a/y8CglcM7gLGYmlbP/stPE5sR3hbhFRUjCBfd/0B3I=
github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/pgzip v1.2.4 h1:TQ7CNpYKovDOmqzRHKxJh0BeaBI7UdQZYc6p7pMQh1A=
github.com/klauspost/pgzip v1.2.4/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kval-access-language/kval-boltdb v0.0.0-20170330045345-f3797777c95e h1:6eQQkLvMgIY9ecZKVtEsKdUeApg6qkNl8IwJp6cZBNg=
github.com/kval-access-language/kval-boltdb v0.0.0-20170330045345-f3797777c95e/go.mod h1:CJfrSSteer+JJgIkdw/LU7Ss1CiZ6G/+oIfo4nJ1P/s=
github.com/kval-access-language/kval-parse v0.0.0-20170504112528-b96aa5a26330 h1:u+bu63lKw/77wcyhzRB9YwipGEa4l3et/hu4xkcX2cQ=
github.com/kval-access-language/kval-parse v0.0.0-20170504112528-b96aa5a26330/go.mod h1:sIViryZLFGwtty1cz01GVfqCzHR2j5O7ZCcuYiGJAJA=
github.com/kval-access-language/kval-scanner v0.0.0-20170504112421-4f097cacd289 h1:xp6dE/eMUsoTqp/A4p846HSDlETgYPcW+gmtSW7G0tc=
github.com/kval-access-language/kval-scanner v0.0.0-20170504112421-4f097cacd289/go.mod h1:YAawD4QhDnNbLB6455T6SheCYnZh90kII4jhq5HWzAQ=
github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg=
github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s=
github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0=
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
@@ -56,19 +96,55 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.2 h1:sq53g+DWf0J6/ceFUHpQ0nAEb6WgM++fq16MZ91cS6o=
github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ=
github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8=
github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/r3labs/diff v1.1.0 h1:V53xhrbTHrWFWq3gI4b94AjgEJOerO1+1l0xyHOBi8M=
github.com/r3labs/diff v1.1.0/go.mod h1:7WjXasNzi0vJetRcB/RqNl5dlIsmXcTTLmF5IoH6Xig=
github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE=
github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.19.0 h1:hYz4ZVdUgjXTBUmrkrw55j1nHx68LfOKIQk5IYtyScg=
github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli v1.22.4 h1:u7tSpNPPswAFymm8IehJhy4uJMlUuU/GmqSkvJ1InXA=
github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
@@ -90,6 +166,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/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-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -97,6 +174,8 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepx
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200908134130-d2e65c121b96 h1:gJciq3lOg0eS9fSZJcoHfv7q1BfC6cJfnmSSKL1yu3Q=
golang.org/x/sys v0.0.0-20200908134130-d2e65c121b96/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
@@ -119,5 +198,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/tylerb/is.v1 v1.1.2 h1:AB/MANFml2ySf+adwcinvajyHvsYltAOD+rb/8njfSU=
gopkg.in/tylerb/is.v1 v1.1.2/go.mod h1:9yQB2tyIhZ5oph6Kk5Sq7cJMd9c5Jpa1p3hr9kxzPqo=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=