Skip to content

Commit 9443ec4

Browse files
authored
Add logging (#15)
* add logging * fix nil logger flag * add debugging print for change file paths * remove redundant prints * fix MR's comments * add test for logrus level * apply refactors in config tests * add default case * fix tests' flags initializations
1 parent a28934a commit 9443ec4

File tree

8 files changed

+100
-19
lines changed

8 files changed

+100
-19
lines changed

cmd/root.go

+6
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ func InitializeFlags() {
4545
"helm",
4646
"The name of the version analyzer you want to use",
4747
)
48+
rootCmd.Flags().StringP(
49+
"log-level",
50+
"l",
51+
"info",
52+
"Verbosity of Semangit logs. Options: trace, debug, info, warn, error, fatal, panic",
53+
)
4854
registerVersionAnalyzersArgumentsFlags(rootCmd)
4955
}
5056

cmd/run.go

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cmd
22

33
import (
44
"github.com/pkg/errors"
5+
"github.com/sirupsen/logrus"
56
"github.com/spf13/cobra"
67
"semangit/internal/config"
78
"semangit/internal/gitrepo"
@@ -11,17 +12,28 @@ import (
1112

1213
func runSemangit(cmd *cobra.Command, args []string) error {
1314
conf := utils.GetResultOrPanic(config.LoadConfig(cmd))
15+
logrus.Debug("Loaded config:\n", utils.InterfaceToString(conf))
1416
versionAnalyzer := repo.GetVersionAnalyzer(conf.CurrentVersionAnalyzerName)
1517
repoManager := gitrepo.NewGitRepoManger(conf.RepoDir)
1618

1719
if conf.NewRevision != gitrepo.RevisionNone {
1820
repoManager.Checkout(conf.NewRevision)
21+
logrus.Debug("Successfully checked out the new revision ", conf.NewRevision)
1922
}
23+
2024
newVersion := utils.GetResultOrPanic(versionAnalyzer.ReadVersion(conf.RepoDir, conf.GetCurrentVersionAnalyzerArgumentValues()))
25+
logrus.Info("New Version: ", newVersion)
26+
2127
repoManager.Checkout(conf.OldRevision)
28+
logrus.Debug("Successfully checked out the old revision ", conf.OldRevision)
2229
oldVersion := utils.GetResultOrPanic(versionAnalyzer.ReadVersion(conf.RepoDir, conf.GetCurrentVersionAnalyzerArgumentValues()))
30+
logrus.Info("Old Version: ", oldVersion)
31+
2332
changedFiles := repoManager.ListChangedFiles(conf.OldRevision, conf.NewRevision)
33+
logrus.Debug("Changed files: ", utils.InterfaceToString(changedFiles))
34+
2435
needsUpdate := versionAnalyzer.ChangeNeedsVersionUpdate(changedFiles, conf.GetCurrentVersionAnalyzerArgumentValues())
36+
logrus.Debug("Does the version need update: ", needsUpdate)
2537
if needsUpdate && versionAnalyzer.CompareVersions(oldVersion, newVersion) >= 0 {
2638
return errors.New("Version needs to be updated! Version analyzer: " + versionAnalyzer.GetName())
2739
}

go.mod

+4-6
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ go 1.19
55
require (
66
github.com/go-git/go-git/v5 v5.4.2
77
github.com/pkg/errors v0.9.1
8-
github.com/sirupsen/logrus v1.4.1
8+
github.com/sirupsen/logrus v1.9.0
99
github.com/spf13/cobra v1.6.1
1010
github.com/spf13/viper v1.13.0
11+
golang.org/x/mod v0.5.1
1112
)
1213

1314
require (
1415
github.com/fsnotify/fsnotify v1.5.4 // indirect
1516
github.com/hashicorp/hcl v1.0.0 // indirect
1617
github.com/inconshreveable/mousetrap v1.0.1 // indirect
17-
github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect
1818
github.com/magiconair/properties v1.8.6 // indirect
1919
github.com/mitchellh/mapstructure v1.5.0 // indirect
2020
github.com/pelletier/go-toml v1.9.5 // indirect
@@ -24,7 +24,6 @@ require (
2424
github.com/spf13/jwalterweatherman v1.1.0 // indirect
2525
github.com/spf13/pflag v1.0.5 // indirect
2626
github.com/subosito/gotenv v1.4.1 // indirect
27-
golang.org/x/mod v0.5.1 // indirect
2827
golang.org/x/text v0.3.7 // indirect
2928
gopkg.in/ini.v1 v1.67.0 // indirect
3029
gopkg.in/yaml.v2 v2.4.0 // indirect
@@ -44,12 +43,11 @@ require (
4443
github.com/mitchellh/go-homedir v1.1.0 // indirect
4544
github.com/pmezard/go-difflib v1.0.0 // indirect
4645
github.com/sergi/go-diff v1.1.0 // indirect
47-
github.com/stretchr/objx v0.4.0 // indirect
4846
github.com/stretchr/testify v1.8.0
4947
github.com/xanzy/ssh-agent v0.3.0 // indirect
5048
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
5149
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect
52-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
50+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
5351
gopkg.in/warnings.v0 v0.1.2 // indirect
54-
gopkg.in/yaml.v3 v3.0.1 // indirect
52+
gopkg.in/yaml.v3 v3.0.1
5553
)

go.sum

+16-8
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C6
4545
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
4646
github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk=
4747
github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
48+
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
4849
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
50+
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
4951
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
5052
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
5153
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
@@ -69,14 +71,17 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y
6971
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
7072
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
7173
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
74+
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
7275
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
7376
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
77+
github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=
7478
github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
7579
github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4=
7680
github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
7781
github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
7882
github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34=
7983
github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
84+
github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8=
8085
github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0=
8186
github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4=
8287
github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
@@ -119,6 +124,7 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
119124
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
120125
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
121126
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
127+
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
122128
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
123129
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
124130
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
@@ -155,16 +161,18 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X
155161
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck=
156162
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
157163
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
158-
github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
159164
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
160165
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
161166
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
162167
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
168+
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
163169
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
164170
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
171+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
165172
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
166173
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
167174
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
175+
github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=
168176
github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
169177
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
170178
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
@@ -183,11 +191,13 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
183191
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
184192
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
185193
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
194+
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
186195
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
187196
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
188197
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
189-
github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
190198
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
199+
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
200+
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
191201
github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo=
192202
github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=
193203
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
@@ -202,7 +212,6 @@ github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU=
202212
github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw=
203213
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
204214
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
205-
github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
206215
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
207216
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
208217
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -232,7 +241,6 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
232241
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
233242
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
234243
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
235-
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg=
236244
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
237245
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
238246
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA=
@@ -303,7 +311,6 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY
303311
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
304312
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
305313
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
306-
golang.org/x/net v0.0.0-20210326060303-6b1517762897 h1:KrsHThm5nFk34YtATK1LsThyGhGbGe1olrte/HInHvs=
307314
golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k=
308315
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 h1:NWy5+hlRbC7HK+PmcXVUmW1IMyFce7to56IUvhUFm7Y=
309316
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
@@ -363,13 +370,13 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w
363370
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
364371
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
365372
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
366-
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79 h1:RX8C8PRZc2hTIod4ds8ij+/4RQX3AqhYj3uOHmyaz4E=
367373
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
368374
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
369375
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
370-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
371-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
376+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
377+
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
372378
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
379+
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
373380
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
374381
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
375382
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -524,6 +531,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
524531
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
525532
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
526533
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
534+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
527535
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
528536
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
529537
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=

internal/config/config.go

+28-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package config
22

33
import (
4-
"fmt"
54
"github.com/pkg/errors"
5+
"github.com/sirupsen/logrus"
66
"github.com/spf13/cobra"
77
"github.com/spf13/viper"
88
"semangit/internal/models"
@@ -32,19 +32,43 @@ func LoadConfig(cmd *cobra.Command) (*Config, error) {
3232
viper.AutomaticEnv()
3333

3434
// Read Config from Flags
35+
logLevel := strings.ToLower(cmd.Flags().Lookup("log-level").Value.String())
36+
switch logLevel {
37+
case "trace":
38+
logrus.SetLevel(logrus.TraceLevel)
39+
case "debug":
40+
logrus.SetLevel(logrus.DebugLevel)
41+
case "info":
42+
logrus.SetLevel(logrus.InfoLevel)
43+
case "warn":
44+
logrus.SetLevel(logrus.WarnLevel)
45+
case "error":
46+
logrus.SetLevel(logrus.ErrorLevel)
47+
case "fatal":
48+
logrus.SetLevel(logrus.FatalLevel)
49+
case "panic":
50+
logrus.SetLevel(logrus.PanicLevel)
51+
default:
52+
logrus.Panic("Log level flag's value is invalid")
53+
}
54+
3555
if err := viper.BindPFlag("RepoDir", cmd.Flags().Lookup("repo-dir")); err != nil {
56+
logrus.WithError(err).Error()
3657
return nil, errors.WithStack(err)
3758
}
3859

3960
if err := viper.BindPFlag("OldRevision", cmd.Flags().Lookup("old-rev")); err != nil {
61+
logrus.WithError(err).Error()
4062
return nil, errors.WithStack(err)
4163
}
4264

4365
if err := viper.BindPFlag("NewRevision", cmd.Flags().Lookup("new-rev")); err != nil {
66+
logrus.WithError(err).Error()
4467
return nil, errors.WithStack(err)
4568
}
4669

4770
if err := viper.BindPFlag("CurrentVersionAnalyzerName", cmd.Flags().Lookup("version-analyzer-name")); err != nil {
71+
logrus.WithError(err).Error()
4872
return nil, errors.WithStack(err)
4973
}
5074

@@ -55,6 +79,7 @@ func LoadConfig(cmd *cobra.Command) (*Config, error) {
5579
viper.SetConfigFile(configFile)
5680

5781
if err := viper.ReadInConfig(); err != nil {
82+
logrus.WithError(err).Error()
5883
return nil, errors.WithStack(err)
5984
}
6085
}
@@ -63,6 +88,7 @@ func LoadConfig(cmd *cobra.Command) (*Config, error) {
6388

6489
err := viper.Unmarshal(&config)
6590
if err != nil {
91+
logrus.WithError(err).Error()
6692
return nil, errors.WithStack(err)
6793
}
6894

@@ -78,8 +104,7 @@ func extractVersionAnalyzersArguments(cmd *cobra.Command) {
78104
for _, argDefinition := range versionAnalyzer.GetExtraArgumentDefinitions() {
79105
argValue, err := cmd.Flags().GetString(argNamePrefix + argDefinition.Name)
80106
if err != nil {
81-
// TODO: add logger and write some error
82-
_ = fmt.Errorf("couldn't add %v flag: %v", argNamePrefix+argDefinition.Name, err.Error())
107+
logrus.Errorf("couldn't add %v flag: %v", argNamePrefix+argDefinition.Name, err.Error())
83108
continue
84109
}
85110
argValues[argDefinition.Name] = &argValue

internal/config/config_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package config
22

33
import (
4+
"github.com/sirupsen/logrus"
45
"github.com/spf13/cobra"
56
"github.com/stretchr/testify/suite"
67
"os"
@@ -36,6 +37,7 @@ func (s *ConfigTestSuite) AddRequiredFlags() {
3637
s.cmd.Flags().String("new-rev", "", "")
3738
s.cmd.Flags().String("version-analyzer-name", "", "")
3839
s.cmd.Flags().String("helm-root-dir", "", "")
40+
s.cmd.Flags().String("log-level", "info", "")
3941
}
4042

4143
func (s *ConfigTestSuite) TestExtraArguments() {
@@ -48,6 +50,7 @@ func (s *ConfigTestSuite) TestExtraArguments() {
4850
}
4951

5052
func (s *ConfigTestSuite) TestNilFlags() {
53+
s.cmd.Flags().String("log-level", "info", "")
5154
_, err := LoadConfig(s.cmd)
5255
s.Error(err)
5356
s.cmd.Flags().String("repo-dir", "", "")
@@ -78,3 +81,22 @@ func (s *ConfigTestSuite) TestConfigFile() {
7881
s.NoError(err)
7982
s.Equal(conf.RepoDir, "TEST_REPO_DIR")
8083
}
84+
85+
func (s *ConfigTestSuite) TestLogLevelFlag() {
86+
s.AddRequiredFlags()
87+
s.setLevelAndTestLogLevel("trace", logrus.TraceLevel)
88+
s.setLevelAndTestLogLevel("debug", logrus.DebugLevel)
89+
s.setLevelAndTestLogLevel("info", logrus.InfoLevel)
90+
s.setLevelAndTestLogLevel("warn", logrus.WarnLevel)
91+
s.setLevelAndTestLogLevel("error", logrus.ErrorLevel)
92+
s.setLevelAndTestLogLevel("fatal", logrus.FatalLevel)
93+
s.setLevelAndTestLogLevel("panic", logrus.PanicLevel)
94+
}
95+
96+
func (s *ConfigTestSuite) setLevelAndTestLogLevel(logLevel string, desiredLevel logrus.Level) {
97+
err := s.cmd.Flags().Set("log-level", logLevel)
98+
s.NoError(err)
99+
_, err = LoadConfig(s.cmd)
100+
s.NoError(err)
101+
s.Equal(logrus.GetLevel(), desiredLevel)
102+
}

internal/utils/error_utils.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package utils
22

3+
import "github.com/sirupsen/logrus"
4+
35
func GetResultOrPanic[TResult interface{}](result TResult, error error) TResult {
46
if error != nil {
5-
panic(error)
7+
logrus.Panic(error) // calls panic() after logging
68
}
79
return result
810
}
911

1012
func PanicError(error error) {
1113
if error != nil {
12-
panic(error)
14+
logrus.Panic(error) // calls panic() after logging
1315
}
1416
}

internal/utils/json_utils.go

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package utils
2+
3+
import "encoding/json"
4+
5+
func InterfaceToString(obj interface{}) string {
6+
bytes, _ := json.MarshalIndent(obj, "\t", "\t")
7+
return string(bytes)
8+
}

0 commit comments

Comments
 (0)