feat: only inject cmd
This commit is contained in:
parent
9c8503082e
commit
f0fbcc680a
44
cmd/inject.go
Normal file
44
cmd/inject.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Qiniu Cloud (qiniu.com)
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/RickLeee/goc/v2/pkg/build"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
var injectCmd = &cobra.Command{
|
||||||
|
Use: "inject",
|
||||||
|
Run: injectAction,
|
||||||
|
//DisableFlagParsing: true, // build 命令需要用原生 go 的方式处理 flags
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
injectCmd.Flags().StringVarP(&gocmode, "gocmode", "", "count", "coverage mode: set, count, atomic, watch")
|
||||||
|
injectCmd.Flags().StringVarP(&gochost, "gochost", "", "127.0.0.1:7777", "specify the host of the goc sever")
|
||||||
|
rootCmd.AddCommand(injectCmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
func injectAction(cmd *cobra.Command, args []string) {
|
||||||
|
|
||||||
|
b := build.NewInject(
|
||||||
|
build.WithHost(gochost),
|
||||||
|
build.WithMode(gocmode),
|
||||||
|
build.WithArgs(args),
|
||||||
|
build.WithDebug(globalDebug),
|
||||||
|
)
|
||||||
|
b.OnlyInject()
|
||||||
|
|
||||||
|
}
|
19
go.mod
19
go.mod
@ -1,6 +1,8 @@
|
|||||||
module github.com/RickLeee/goc/v2
|
module github.com/RickLeee/goc/v2
|
||||||
|
|
||||||
go 1.22
|
go 1.22.0
|
||||||
|
|
||||||
|
toolchain go1.22.5
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gin-gonic/gin v1.7.2
|
github.com/gin-gonic/gin v1.7.2
|
||||||
@ -17,9 +19,9 @@ require (
|
|||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
github.com/tongjingran/copy v1.4.2
|
github.com/tongjingran/copy v1.4.2
|
||||||
go.uber.org/zap v1.17.0
|
go.uber.org/zap v1.17.0
|
||||||
golang.org/x/mod v0.4.2
|
golang.org/x/mod v0.21.0
|
||||||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d
|
golang.org/x/term v0.12.0
|
||||||
golang.org/x/tools v0.1.3
|
golang.org/x/tools v0.13.0
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
|
||||||
k8s.io/kubectl v0.21.2
|
k8s.io/kubectl v0.21.2
|
||||||
k8s.io/test-infra v0.0.0-20210618100605-34aa2f2aa75b
|
k8s.io/test-infra v0.0.0-20210618100605-34aa2f2aa75b
|
||||||
@ -54,13 +56,12 @@ require (
|
|||||||
github.com/ugorji/go/codec v1.1.7 // indirect
|
github.com/ugorji/go/codec v1.1.7 // indirect
|
||||||
go.uber.org/atomic v1.7.0 // indirect
|
go.uber.org/atomic v1.7.0 // indirect
|
||||||
go.uber.org/multierr v1.6.0 // indirect
|
go.uber.org/multierr v1.6.0 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect
|
golang.org/x/crypto v0.13.0 // indirect
|
||||||
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 // indirect
|
golang.org/x/net v0.15.0 // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 // indirect
|
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 // indirect
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
|
golang.org/x/sys v0.12.0 // indirect
|
||||||
golang.org/x/text v0.3.6 // indirect
|
golang.org/x/text v0.13.0 // indirect
|
||||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba // indirect
|
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba // indirect
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
|
||||||
google.golang.org/appengine v1.6.7 // indirect
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
google.golang.org/protobuf v1.26.0 // indirect
|
google.golang.org/protobuf v1.26.0 // indirect
|
||||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||||
|
24
go.sum
24
go.sum
@ -1320,8 +1320,9 @@ golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPh
|
|||||||
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g=
|
|
||||||
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||||
|
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
|
||||||
|
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||||
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
@ -1360,8 +1361,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
|
|||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
|
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
|
||||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
|
||||||
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
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=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@ -1417,8 +1418,9 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
|
|||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||||
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=
|
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
||||||
|
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
|
||||||
|
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||||
golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
@ -1524,12 +1526,13 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
|
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE=
|
|
||||||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=
|
||||||
|
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
|
||||||
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@ -1538,8 +1541,9 @@ golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5f
|
|||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
|
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
|
||||||
|
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
@ -1648,8 +1652,8 @@ golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4X
|
|||||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||||
golang.org/x/tools v0.1.3 h1:L69ShwSZEyCsLKoAxDKeMvLDZkumEe8gXUZAjab0tX8=
|
golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
|
||||||
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
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-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
@ -14,62 +14,86 @@
|
|||||||
package build
|
package build
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/RickLeee/goc/v2/pkg/log"
|
"github.com/RickLeee/goc/v2/pkg/log"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Build struct a build
|
// Build struct a build
|
||||||
type Build struct {
|
type Build struct {
|
||||||
Args []string // all goc + go command line args + flags
|
Args []string // all goc + go command line args + flags
|
||||||
FlagSets *pflag.FlagSet
|
FlagSets *pflag.FlagSet
|
||||||
BuildType int
|
BuildType int
|
||||||
|
|
||||||
Debug bool
|
Debug bool
|
||||||
Host string
|
Host string
|
||||||
Mode string // cover mode
|
Mode string // cover mode
|
||||||
|
|
||||||
GOPATH string
|
GOPATH string
|
||||||
GOBIN string
|
GOBIN string
|
||||||
CurWd string
|
CurWd string
|
||||||
TmpWd string
|
TmpWd string
|
||||||
CurModProjectDir string
|
CurModProjectDir string
|
||||||
TmpModProjectDir string
|
TmpModProjectDir string
|
||||||
|
|
||||||
Goflags []string // go command line flags
|
Goflags []string // go command line flags
|
||||||
GoArgs []string // go command line args
|
GoArgs []string // go command line args
|
||||||
Packages []string // go command line [packages]
|
Packages []string // go command line [packages]
|
||||||
|
|
||||||
IsVendorMod bool // vendor, readonly, or mod?
|
IsVendorMod bool // vendor, readonly, or mod?
|
||||||
IsModEdit bool // is mod file edited?
|
IsModEdit bool // is mod file edited?
|
||||||
|
|
||||||
ImportPath string // the whole import path of the project
|
ImportPath string // the whole import path of the project
|
||||||
Pkgs map[string]*Package
|
Pkgs map[string]*Package
|
||||||
GlobalCoverVarImportPath string
|
GlobalCoverVarImportPath string
|
||||||
GlobalCoverVarImportPathDir string
|
GlobalCoverVarImportPathDir string
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBuild creates a Build struct
|
// NewBuild creates a Build struct
|
||||||
func NewBuild(opts ...gocOption) *Build {
|
func NewBuild(opts ...gocOption) *Build {
|
||||||
b := &Build{}
|
b := &Build{}
|
||||||
|
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
opt(b)
|
opt(b)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. 解析 goc 命令行和 go 命令行
|
// 1. 解析 goc 命令行和 go 命令行
|
||||||
b.buildCmdArgsParse()
|
b.buildCmdArgsParse()
|
||||||
// 2. 解析 go 包位置
|
// 2. 解析 go 包位置
|
||||||
b.getPackagesDir()
|
b.getPackagesDir()
|
||||||
// 3. 读取工程元信息:go.mod, pkgs list ...
|
// 3. 读取工程元信息:go.mod, pkgs list ...
|
||||||
b.readProjectMetaInfo()
|
b.readProjectMetaInfo()
|
||||||
// 4. 展示元信息
|
// 4. 展示元信息
|
||||||
b.displayProjectMetaInfo()
|
b.displayProjectMetaInfo()
|
||||||
|
|
||||||
return b
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewInject(opts ...gocOption) *Build {
|
||||||
|
b := &Build{}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(b)
|
||||||
|
}
|
||||||
|
curWd, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("fail to get current working directory: %v", err)
|
||||||
|
}
|
||||||
|
b.CurWd = curWd
|
||||||
|
|
||||||
|
//// 1. 解析 goc 命令行和 go 命令行
|
||||||
|
//b.buildCmdArgsParse()
|
||||||
|
// 2. 解析 go 包位置
|
||||||
|
b.getPackagesDir()
|
||||||
|
// 3. 读取工程元信息:go.mod, pkgs list ...
|
||||||
|
b.readProjectMetaInfo(true)
|
||||||
|
// 4. 展示元信息
|
||||||
|
b.displayProjectMetaInfo()
|
||||||
|
|
||||||
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build starts go build
|
// Build starts go build
|
||||||
@ -78,69 +102,81 @@ func NewBuild(opts ...gocOption) *Build {
|
|||||||
// 2. inject cover variables and functions into the project,
|
// 2. inject cover variables and functions into the project,
|
||||||
// 3. build the project in temp.
|
// 3. build the project in temp.
|
||||||
func (b *Build) Build() {
|
func (b *Build) Build() {
|
||||||
// 1. 拷贝至临时目录
|
// 1. 拷贝至临时目录
|
||||||
b.copyProjectToTmp()
|
b.copyProjectToTmp()
|
||||||
defer b.clean()
|
defer b.clean()
|
||||||
|
|
||||||
log.Donef("project copied to temporary directory")
|
log.Donef("project copied to temporary directory")
|
||||||
|
|
||||||
// 2. update go.mod file if needed
|
// 2. update go.mod file if needed
|
||||||
b.updateGoModFile()
|
b.updateGoModFile()
|
||||||
// 3. inject cover vars
|
// 3. inject cover vars
|
||||||
b.Inject()
|
b.Inject()
|
||||||
|
|
||||||
if b.IsVendorMod && b.IsModEdit {
|
if b.IsVendorMod && b.IsModEdit {
|
||||||
b.reVendor()
|
b.reVendor()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. build in the temp project
|
// 4. build in the temp project
|
||||||
b.doBuildInTemp()
|
b.doBuildInTemp()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Build) OnlyInject() {
|
||||||
|
|
||||||
|
// 2. update go.mod file if needed
|
||||||
|
b.updateGoModFile()
|
||||||
|
// 3. inject cover vars
|
||||||
|
b.Inject()
|
||||||
|
|
||||||
|
if b.IsVendorMod && b.IsModEdit {
|
||||||
|
b.reVendor()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Build) doBuildInTemp() {
|
func (b *Build) doBuildInTemp() {
|
||||||
log.StartWait("building the injected project")
|
log.StartWait("building the injected project")
|
||||||
|
|
||||||
goflags := b.Goflags
|
goflags := b.Goflags
|
||||||
// 检查用户是否自定义了 -o
|
// 检查用户是否自定义了 -o
|
||||||
oSet := false
|
oSet := false
|
||||||
for _, flag := range goflags {
|
for _, flag := range goflags {
|
||||||
if flag == "-o" {
|
if flag == "-o" {
|
||||||
oSet = true
|
oSet = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果没被设置就加一个至原命令执行的目录
|
// 如果没被设置就加一个至原命令执行的目录
|
||||||
if !oSet {
|
if !oSet {
|
||||||
goflags = append(goflags, "-o", b.CurWd)
|
goflags = append(goflags, "-o", b.CurWd)
|
||||||
}
|
}
|
||||||
|
|
||||||
if b.IsVendorMod && b.IsModEdit {
|
if b.IsVendorMod && b.IsModEdit {
|
||||||
b.reVendor()
|
b.reVendor()
|
||||||
}
|
}
|
||||||
|
|
||||||
pacakges := b.Packages
|
pacakges := b.Packages
|
||||||
|
|
||||||
goflags = append(goflags, pacakges...)
|
goflags = append(goflags, pacakges...)
|
||||||
|
|
||||||
args := []string{"build"}
|
args := []string{"build"}
|
||||||
args = append(args, goflags...)
|
args = append(args, goflags...)
|
||||||
// go 命令行由 go build [-o output] [build flags] [packages] 组成
|
// go 命令行由 go build [-o output] [build flags] [packages] 组成
|
||||||
cmd := exec.Command("go", args...)
|
cmd := exec.Command("go", args...)
|
||||||
cmd.Dir = b.TmpWd
|
cmd.Dir = b.TmpWd
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
log.Infof("go build cmd is: %v, in path [%v]", nicePrintArgs(cmd.Args), cmd.Dir)
|
log.Infof("go build cmd is: %v, in path [%v]", nicePrintArgs(cmd.Args), cmd.Dir)
|
||||||
if err := cmd.Start(); err != nil {
|
if err := cmd.Start(); err != nil {
|
||||||
log.Fatalf("fail to execute go build: %v", err)
|
log.Fatalf("fail to execute go build: %v", err)
|
||||||
}
|
}
|
||||||
if err := cmd.Wait(); err != nil {
|
if err := cmd.Wait(); err != nil {
|
||||||
log.Fatalf("fail to execute go build: %v", err)
|
log.Fatalf("fail to execute go build: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// done
|
// done
|
||||||
log.StopWait()
|
log.StopWait()
|
||||||
log.Donef("go build done")
|
log.Donef("go build done")
|
||||||
}
|
}
|
||||||
|
|
||||||
// nicePrintArgs 优化 args 打印内容
|
// nicePrintArgs 优化 args 打印内容
|
||||||
@ -149,32 +185,32 @@ func (b *Build) doBuildInTemp() {
|
|||||||
//
|
//
|
||||||
// 实际输出会变为:go build -ldflags -X my/package/config.Version=1.0.0 -o /home/lyy/gitdown/gin-test/cmd .
|
// 实际输出会变为:go build -ldflags -X my/package/config.Version=1.0.0 -o /home/lyy/gitdown/gin-test/cmd .
|
||||||
func nicePrintArgs(args []string) []string {
|
func nicePrintArgs(args []string) []string {
|
||||||
output := make([]string, 0)
|
output := make([]string, 0)
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
if strings.Contains(arg, " ") {
|
if strings.Contains(arg, " ") {
|
||||||
output = append(output, "\""+arg+"\"")
|
output = append(output, "\""+arg+"\"")
|
||||||
} else {
|
} else {
|
||||||
output = append(output, arg)
|
output = append(output, arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Build) reVendor() {
|
func (b *Build) reVendor() {
|
||||||
log.StartWait("re-vendoring the project")
|
log.StartWait("re-vendoring the project")
|
||||||
cmd := exec.Command("go", "mod", "vendor")
|
cmd := exec.Command("go", "mod", "vendor")
|
||||||
cmd.Dir = b.TmpModProjectDir
|
cmd.Dir = b.TmpModProjectDir
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
if err := cmd.Start(); err != nil {
|
if err := cmd.Start(); err != nil {
|
||||||
log.Fatalf("fail to execute go vendor: %v", err)
|
log.Fatalf("fail to execute go vendor: %v", err)
|
||||||
}
|
}
|
||||||
if err := cmd.Wait(); err != nil {
|
if err := cmd.Wait(); err != nil {
|
||||||
log.Fatalf("fail to execute go vendor: %v", err)
|
log.Fatalf("fail to execute go vendor: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.StopWait()
|
log.StopWait()
|
||||||
log.Donef("re-vendor the project done")
|
log.Donef("re-vendor the project done")
|
||||||
}
|
}
|
||||||
|
@ -14,141 +14,143 @@
|
|||||||
package build
|
package build
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/RickLeee/goc/v2/pkg/log"
|
"github.com/RickLeee/goc/v2/pkg/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// readProjectMetaInfo reads all meta informations of the corresponding project
|
// readProjectMetaInfo reads all meta informations of the corresponding project
|
||||||
func (b *Build) readProjectMetaInfo() {
|
func (b *Build) readProjectMetaInfo(noTemp ...bool) {
|
||||||
// get gopath & gobin
|
// get gopath & gobin
|
||||||
b.GOPATH = b.readGOPATH()
|
b.GOPATH = b.readGOPATH()
|
||||||
b.GOBIN = b.readGOBIN()
|
b.GOBIN = b.readGOBIN()
|
||||||
// 获取 [packages] 及其依赖的 package list
|
// 获取 [packages] 及其依赖的 package list
|
||||||
pkgs := b.listPackages(b.CurWd)
|
pkgs := b.listPackages(b.CurWd)
|
||||||
|
|
||||||
// get mod info
|
// get mod info
|
||||||
for _, pkg := range pkgs {
|
for _, pkg := range pkgs {
|
||||||
// check if go modules is enabled
|
// check if go modules is enabled
|
||||||
if pkg.Module == nil {
|
if pkg.Module == nil {
|
||||||
log.Fatalf("Go module is not enabled, please set GO111MODULE=auto or on")
|
log.Fatalf("Go module is not enabled, please set GO111MODULE=auto or on")
|
||||||
}
|
}
|
||||||
// 工程根目录
|
// 工程根目录
|
||||||
b.CurModProjectDir = pkg.Module.Dir
|
b.CurModProjectDir = pkg.Module.Dir
|
||||||
b.ImportPath = pkg.Module.Path
|
b.ImportPath = pkg.Module.Path
|
||||||
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果当前目录不是工程根目录,那再次 go list 一次,获取整个工程的包信息
|
// 如果当前目录不是工程根目录,那再次 go list 一次,获取整个工程的包信息
|
||||||
if b.CurWd != b.CurModProjectDir {
|
if b.CurWd != b.CurModProjectDir {
|
||||||
b.Pkgs = b.listPackages(b.CurModProjectDir)
|
b.Pkgs = b.listPackages(b.CurModProjectDir)
|
||||||
} else {
|
} else {
|
||||||
b.Pkgs = pkgs
|
b.Pkgs = pkgs
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if project is in vendor mod
|
// check if project is in vendor mod
|
||||||
b.checkIfVendorMod()
|
b.checkIfVendorMod()
|
||||||
|
|
||||||
// get tmp folder name
|
// get tmp folder name
|
||||||
b.TmpModProjectDir = filepath.Join(os.TempDir(), TmpFolderName(b.CurModProjectDir))
|
b.TmpModProjectDir = filepath.Join(os.TempDir(), TmpFolderName(b.CurModProjectDir))
|
||||||
// get working dir in the corresponding tmp dir
|
if len(noTemp) != 0 && noTemp[0] {
|
||||||
b.TmpWd = filepath.Join(b.TmpModProjectDir, b.CurWd[len(b.CurModProjectDir):])
|
b.TmpModProjectDir = b.CurModProjectDir
|
||||||
// get GlobalCoverVarImportPath
|
}
|
||||||
b.GlobalCoverVarImportPath = path.Join(b.ImportPath, TmpFolderName(b.CurModProjectDir))
|
// get working dir in the corresponding tmp dir
|
||||||
log.Donef("project meta information parsed")
|
b.TmpWd = filepath.Join(b.TmpModProjectDir, b.CurWd[len(b.CurModProjectDir):])
|
||||||
|
// get GlobalCoverVarImportPath
|
||||||
|
b.GlobalCoverVarImportPath = path.Join(b.ImportPath, TmpFolderName(b.CurModProjectDir))
|
||||||
|
log.Donef("project meta information parsed")
|
||||||
}
|
}
|
||||||
|
|
||||||
// displayProjectMetaInfo prints basic infomation of this project to stdout
|
// displayProjectMetaInfo prints basic infomation of this project to stdout
|
||||||
func (b *Build) displayProjectMetaInfo() {
|
func (b *Build) displayProjectMetaInfo() {
|
||||||
log.Infof("GOPATH: %v", b.GOPATH)
|
log.Infof("GOPATH: %v", b.GOPATH)
|
||||||
log.Infof("GOBIN: %v", b.GOBIN)
|
log.Infof("GOBIN: %v", b.GOBIN)
|
||||||
log.Infof("Project Directory: %v", b.CurModProjectDir)
|
log.Infof("Project Directory: %v", b.CurModProjectDir)
|
||||||
log.Infof("GOC_REGISTER_EXTRA from env: %v", os.Getenv("GOC_REGISTER_EXTRA"))
|
log.Infof("Temporary Project Directory: %v", b.TmpModProjectDir)
|
||||||
log.Infof("Temporary Project Directory: %v", b.TmpModProjectDir)
|
if b.IsVendorMod {
|
||||||
if b.IsVendorMod {
|
log.Infof("Project in vendor mod")
|
||||||
log.Infof("Project in vendor mod")
|
}
|
||||||
}
|
log.Infof("")
|
||||||
log.Infof("")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// readGOPATH reads GOPATH use go env GOPATH command
|
// readGOPATH reads GOPATH use go env GOPATH command
|
||||||
func (b *Build) readGOPATH() string {
|
func (b *Build) readGOPATH() string {
|
||||||
out, err := exec.Command("go", "env", "GOPATH").Output()
|
out, err := exec.Command("go", "env", "GOPATH").Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("fail to read GOPATH: %v", err)
|
log.Fatalf("fail to read GOPATH: %v", err)
|
||||||
}
|
}
|
||||||
return strings.TrimSpace(string(out))
|
return strings.TrimSpace(string(out))
|
||||||
}
|
}
|
||||||
|
|
||||||
// readGOBIN reads GOBIN use go env GOBIN command
|
// readGOBIN reads GOBIN use go env GOBIN command
|
||||||
func (b *Build) readGOBIN() string {
|
func (b *Build) readGOBIN() string {
|
||||||
out, err := exec.Command("go", "env", "GOBIN").Output()
|
out, err := exec.Command("go", "env", "GOBIN").Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("fail to read GOBIN: %v", err)
|
log.Fatalf("fail to read GOBIN: %v", err)
|
||||||
}
|
}
|
||||||
return strings.TrimSpace(string(out))
|
return strings.TrimSpace(string(out))
|
||||||
}
|
}
|
||||||
|
|
||||||
// listPackages list all packages under specific via go list command.
|
// listPackages list all packages under specific via go list command.
|
||||||
func (b *Build) listPackages(dir string) map[string]*Package {
|
func (b *Build) listPackages(dir string) map[string]*Package {
|
||||||
listArgs := []string{"list", "-json"}
|
listArgs := []string{"list", "-json"}
|
||||||
if goflags.BuildTags != "" {
|
if goflags.BuildTags != "" {
|
||||||
listArgs = append(listArgs, "-tags", goflags.BuildTags)
|
listArgs = append(listArgs, "-tags", goflags.BuildTags)
|
||||||
}
|
}
|
||||||
listArgs = append(listArgs, "./...")
|
listArgs = append(listArgs, "./...")
|
||||||
|
|
||||||
cmd := exec.Command("go", listArgs...)
|
cmd := exec.Command("go", listArgs...)
|
||||||
cmd.Dir = dir
|
cmd.Dir = dir
|
||||||
|
|
||||||
var errBuf bytes.Buffer
|
var errBuf bytes.Buffer
|
||||||
cmd.Stderr = &errBuf
|
cmd.Stderr = &errBuf
|
||||||
out, err := cmd.Output()
|
out, err := cmd.Output()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("execute go list -json failed, err: %v, stdout: %v, stderr: %v", err, string(out), errBuf.String())
|
log.Fatalf("execute go list -json failed, err: %v, stdout: %v, stderr: %v", err, string(out), errBuf.String())
|
||||||
}
|
}
|
||||||
// 有些时候 go 命令会打印一些信息到 stderr,但其实命令整体是成功运行了
|
// 有些时候 go 命令会打印一些信息到 stderr,但其实命令整体是成功运行了
|
||||||
if errBuf.String() != "" {
|
if errBuf.String() != "" {
|
||||||
log.Errorf("%v", errBuf.String())
|
log.Errorf("%v", errBuf.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
dec := json.NewDecoder(bytes.NewBuffer(out))
|
dec := json.NewDecoder(bytes.NewBuffer(out))
|
||||||
pkgs := make(map[string]*Package)
|
pkgs := make(map[string]*Package)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
var pkg Package
|
var pkg Package
|
||||||
if err := dec.Decode(&pkg); err != nil {
|
if err := dec.Decode(&pkg); err != nil {
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
log.Fatalf("reading go list output error: %v", err)
|
log.Fatalf("reading go list output error: %v", err)
|
||||||
}
|
}
|
||||||
if pkg.Error != nil {
|
if pkg.Error != nil {
|
||||||
log.Fatalf("list package %s failed with output: %v", pkg.ImportPath, pkg.Error)
|
log.Fatalf("list package %s failed with output: %v", pkg.ImportPath, pkg.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
pkgs[pkg.ImportPath] = &pkg
|
pkgs[pkg.ImportPath] = &pkg
|
||||||
}
|
}
|
||||||
|
|
||||||
return pkgs
|
return pkgs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Build) checkIfVendorMod() {
|
func (b *Build) checkIfVendorMod() {
|
||||||
if b.IsVendorMod == true {
|
if b.IsVendorMod == true {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
vendorDir := filepath.Join(b.CurModProjectDir, "vendor")
|
vendorDir := filepath.Join(b.CurModProjectDir, "vendor")
|
||||||
if _, err := os.Stat(vendorDir); err != nil {
|
if _, err := os.Stat(vendorDir); err != nil {
|
||||||
b.IsVendorMod = false
|
b.IsVendorMod = false
|
||||||
}
|
}
|
||||||
|
|
||||||
b.IsVendorMod = true
|
b.IsVendorMod = true
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,6 @@ func (b *Build) injectGocAgent(where string, covers []*PackageCover) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("get git branch Error: %v", err)
|
log.Errorf("get git branch Error: %v", err)
|
||||||
} else {
|
} else {
|
||||||
log.Infof("[goc][info] raw branch: %v ", br)
|
|
||||||
branch = fmtBranch(br)
|
branch = fmtBranch(br)
|
||||||
}
|
}
|
||||||
log.Infof("[goc][info] branch: %v --- commitID: %v", branch, commitID)
|
log.Infof("[goc][info] branch: %v --- commitID: %v", branch, commitID)
|
||||||
|
Loading…
Reference in New Issue
Block a user