diff --git a/build.go b/build.go index b35a81da3..f9c9b248f 100644 --- a/build.go +++ b/build.go @@ -202,18 +202,6 @@ var targets = map[string]target{ }, } -// These are repos we need to clone to run "go generate" - -type dependencyRepo struct { - path string - repo string - commit string -} - -var dependencyRepos = []dependencyRepo{ - {path: "xdr", repo: "https://github.com/calmh/xdr.git", commit: "08e072f9cb16"}, -} - func initTargets() { all := targets["all"] pkgs, _ := filepath.Glob("cmd/*") @@ -871,28 +859,24 @@ func shouldRebuildAssets(target, srcdir string) bool { func proto() { pv := protobufVersion() - dependencyRepos = append(dependencyRepos, - dependencyRepo{path: "protobuf", repo: "https://github.com/gogo/protobuf.git", commit: pv}, - ) + repo := "https://github.com/gogo/protobuf.git" + path := filepath.Join("repos", "protobuf") runPrint(goCmd, "get", fmt.Sprintf("github.com/gogo/protobuf/protoc-gen-gogofast@%v", pv)) os.MkdirAll("repos", 0755) - for _, dep := range dependencyRepos { - path := filepath.Join("repos", dep.path) - if _, err := os.Stat(path); err != nil { - runPrintInDir("repos", "git", "clone", dep.repo, dep.path) - } else { - runPrintInDir(path, "git", "fetch") - } - runPrintInDir(path, "git", "checkout", dep.commit) + + if _, err := os.Stat(path); err != nil { + runPrint("git", "clone", repo, path) + } else { + runPrintInDir(path, "git", "fetch") } + runPrintInDir(path, "git", "checkout", pv) + runPrint(goCmd, "generate", "github.com/syncthing/syncthing/cmd/stdiscosrv") runPrint(goCmd, "generate", "proto/generate.go") } func testmocks() { - runPrint(goCmd, "get", "golang.org/x/tools/cmd/goimports") - runPrint(goCmd, "get", "github.com/maxbrunsfeld/counterfeiter/v6") args := []string{ "generate", "github.com/syncthing/syncthing/lib/config", diff --git a/go.mod b/go.mod index 757b10b7a..4fbeeb09e 100644 --- a/go.mod +++ b/go.mod @@ -31,10 +31,9 @@ require ( github.com/lucas-clemente/quic-go v0.19.3 github.com/maruel/panicparse v1.6.1 github.com/mattn/go-isatty v0.0.12 + github.com/maxbrunsfeld/counterfeiter/v6 v6.3.0 github.com/minio/sha256-simd v1.0.0 github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 - github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect - github.com/onsi/gomega v1.10.3 // indirect github.com/oschwald/geoip2-golang v1.5.0 github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/pkg/errors v0.9.1 @@ -53,8 +52,8 @@ require ( golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 golang.org/x/text v0.3.6 golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba + golang.org/x/tools v0.1.0 google.golang.org/protobuf v1.26.0 - gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect ) go 1.14 diff --git a/go.sum b/go.sum index 32b4abc2f..d3e36d170 100644 --- a/go.sum +++ b/go.sum @@ -273,6 +273,8 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/maxbrunsfeld/counterfeiter/v6 v6.3.0 h1:8E6DrFvII6QR4eJ3PkFvV+lc03P+2qwqTPLm1ax7694= +github.com/maxbrunsfeld/counterfeiter/v6 v6.3.0/go.mod h1:fcEyUyXZXoV4Abw8DX0t7wyL8mCDxXyU4iAFZfT3IHw= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -393,6 +395,8 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.2.0 h1:lMqc+fUb7RrFS3gQLtoQsJ7/6TV/pAIFvBsqX73DK8Y= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= +github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8= +github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil/v3 v3.21.4 h1:XB/+p+kVnyYLuPHCfa99lxz2aJyvVhnyd+FxZqH/k7M= @@ -501,6 +505,7 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -528,6 +533,7 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= @@ -577,6 +583,7 @@ golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210217105451-b926d437f341/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -613,7 +620,10 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/lib/config/wrapper.go b/lib/config/wrapper.go index 356e15d95..3482b135a 100644 --- a/lib/config/wrapper.go +++ b/lib/config/wrapper.go @@ -4,6 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 //go:generate counterfeiter -o mocks/mocked_wrapper.go --fake-name Wrapper . Wrapper package config diff --git a/lib/connections/service.go b/lib/connections/service.go index 9ecefebd0..d038c7fe7 100644 --- a/lib/connections/service.go +++ b/lib/connections/service.go @@ -4,6 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 //go:generate counterfeiter -o mocks/service.go --fake-name Service . Service package connections diff --git a/lib/discover/manager.go b/lib/discover/manager.go index c5e4023db..ec43e889c 100644 --- a/lib/discover/manager.go +++ b/lib/discover/manager.go @@ -4,6 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 //go:generate counterfeiter -o mocks/manager.go --fake-name Manager . Manager package discover diff --git a/lib/events/events.go b/lib/events/events.go index ba5343d83..53976f59a 100644 --- a/lib/events/events.go +++ b/lib/events/events.go @@ -4,6 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 //go:generate counterfeiter -o mocks/buffered_subscription.go --fake-name BufferedSubscription . BufferedSubscription // Package events provides event subscription and polling functionality. diff --git a/lib/logger/logger.go b/lib/logger/logger.go index 309495239..cd3e3f237 100644 --- a/lib/logger/logger.go +++ b/lib/logger/logger.go @@ -1,6 +1,7 @@ // Copyright (C) 2014 Jakob Borg. All rights reserved. Use of this source code // is governed by an MIT-style license that can be found in the LICENSE file. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 //go:generate counterfeiter -o mocks/logger.go --fake-name Recorder . Recorder // Package logger implements a standardized logger with callback functionality diff --git a/lib/model/folder_summary.go b/lib/model/folder_summary.go index 3b47c47d0..c9d229b50 100644 --- a/lib/model/folder_summary.go +++ b/lib/model/folder_summary.go @@ -4,6 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 //go:generate counterfeiter -o mocks/folderSummaryService.go --fake-name FolderSummaryService . FolderSummaryService package model diff --git a/lib/model/model.go b/lib/model/model.go index 708f571a3..884c49144 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -4,6 +4,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at https://mozilla.org/MPL/2.0/. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 //go:generate counterfeiter -o mocks/model.go --fake-name Model . Model package model diff --git a/lib/protocol/protocol.go b/lib/protocol/protocol.go index 188822d37..4c89c76b6 100644 --- a/lib/protocol/protocol.go +++ b/lib/protocol/protocol.go @@ -1,5 +1,7 @@ // Copyright (C) 2014 The Protocol Authors. +//go:generate -command counterfeiter go run github.com/maxbrunsfeld/counterfeiter/v6 + // Prevents import loop, for internal testing //go:generate counterfeiter -o mocked_connection_info_test.go --fake-name mockedConnectionInfo . ConnectionInfo //go:generate go run ../../script/prune_mocks.go -t mocked_connection_info_test.go diff --git a/lib/relay/protocol/packets.go b/lib/relay/protocol/packets.go index ea790883a..a817812d6 100644 --- a/lib/relay/protocol/packets.go +++ b/lib/relay/protocol/packets.go @@ -1,6 +1,6 @@ // Copyright (C) 2015 Audrius Butkevicius and Contributors (see the CONTRIBUTORS file). -//go:generate -command genxdr go run ../../../repos/xdr/cmd/genxdr/main.go +//go:generate -command genxdr go run github.com/calmh/xdr/cmd/genxdr //go:generate genxdr -o packets_xdr.go packets.go package protocol diff --git a/script/prune_mocks.go b/script/prune_mocks.go index 00e5f73b5..ccc10cee9 100644 --- a/script/prune_mocks.go +++ b/script/prune_mocks.go @@ -35,7 +35,7 @@ func main() { if err != nil { log.Fatal(err) } - err = exec.Command("goimports", "-w", path).Run() + err = exec.Command("go", "run", "golang.org/x/tools/cmd/goimports", "-w", path).Run() if err != nil { log.Fatal(err) } diff --git a/tools.go b/tools.go new file mode 100644 index 000000000..345c4c55b --- /dev/null +++ b/tools.go @@ -0,0 +1,14 @@ +// This file is never built. It serves to establish dependencies on tools +// used by go generate and build.go. See +// https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module + +// +build tools + +package tools + +import ( + _ "github.com/calmh/xdr" + _ "github.com/gogo/protobuf/protoc-gen-gogofast" + _ "github.com/maxbrunsfeld/counterfeiter/v6" + _ "golang.org/x/tools/cmd/goimports" +)