From 77ad7124e2cf3422873e02308c4edf105cc6025b Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 21:36:20 +0200 Subject: [PATCH 1/9] Update dependencies Signed-off-by: Jan Tytgat --- examples/sqr/embeddedSqlWithRepository/go.mod | 2 +- examples/sqr/embeddedSqlWithRepository/go.sum | 48 +++++++------------ .../sqr/embeddedSqlWithoutRepository/go.mod | 8 ++-- .../sqr/embeddedSqlWithoutRepository/go.sum | 32 ++++++------- go.mod | 2 + go.sum | 4 ++ 6 files changed, 45 insertions(+), 51 deletions(-) diff --git a/examples/sqr/embeddedSqlWithRepository/go.mod b/examples/sqr/embeddedSqlWithRepository/go.mod index e46d308..e8aa417 100644 --- a/examples/sqr/embeddedSqlWithRepository/go.mod +++ b/examples/sqr/embeddedSqlWithRepository/go.mod @@ -5,7 +5,7 @@ go 1.24.2 toolchain go1.24.3 require ( - git.flexabyte.io/flexabyte/go-kit v0.0.0-20250521190905-eff54c777985 + git.flexabyte.io/flexabyte/go-kit v0.1.0 github.com/golang-migrate/migrate/v4 v4.18.3 ) diff --git a/examples/sqr/embeddedSqlWithRepository/go.sum b/examples/sqr/embeddedSqlWithRepository/go.sum index 4be424b..6c68c9c 100644 --- a/examples/sqr/embeddedSqlWithRepository/go.sum +++ b/examples/sqr/embeddedSqlWithRepository/go.sum @@ -1,15 +1,13 @@ -git.flexabyte.io/flexabyte/go-kit v0.0.0-20250521190905-eff54c777985 h1:Q9mYadYgRyb0i89T2fvzJlViGMiKosUvBrBpK8pd/6w= -git.flexabyte.io/flexabyte/go-kit v0.0.0-20250521190905-eff54c777985/go.mod h1:dZ04ub68ACYiSHUrF+7mq4xg4xL/0C3MvnIUEfahdiU= +git.flexabyte.io/flexabyte/go-kit v0.1.0 h1:ATnnYfF9wl3mIxhGy1ki5k0lKqLftoCb+MjBGxUGbpA= +git.flexabyte.io/flexabyte/go-kit v0.1.0/go.mod h1:+ZXfaSKiX1m0zrIy9YIHAK+MpEOgHfheuPS/rM6AMlM= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/golang-migrate/migrate/v4 v4.18.2 h1:2VSCMz7x7mjyTXx3m2zPokOY82LTRgxK1yQYKo6wWQ8= -github.com/golang-migrate/migrate/v4 v4.18.2/go.mod h1:2CM6tJvn2kqPXwnXO/d3rAQYiyoIm180VsO8PRX6Rpk= github.com/golang-migrate/migrate/v4 v4.18.3 h1:EYGkoOsvgHHfm5U/naS1RP/6PL/Xv3S4B/swMiAmDLs= github.com/golang-migrate/migrate/v4 v4.18.3/go.mod h1:99BKpIi6ruaaXRM1A77eqZ+FWPQ3cfRa+ZVy5bmWMaY= -github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo= -github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= +github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -31,47 +29,37 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 h1:bsqhLWFR6G6xiQcb+JoGqdKdRU6WzPWmK8E0jxTjzo4= golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -modernc.org/cc/v4 v4.24.4 h1:TFkx1s6dCkQpd6dKurBNmpo+G8Zl4Sq/ztJ+2+DEsh0= -modernc.org/cc/v4 v4.24.4/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= -modernc.org/ccgo/v4 v4.23.16 h1:Z2N+kk38b7SfySC1ZkpGLN2vthNJP1+ZzGZIlH7uBxo= -modernc.org/ccgo/v4 v4.23.16/go.mod h1:nNma8goMTY7aQZQNTyN9AIoJfxav4nvTnvKThAeMDdo= -modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= -modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= -modernc.org/gc/v2 v2.6.3 h1:aJVhcqAte49LF+mGveZ5KPlsp4tdGdAOT4sipJXADjw= -modernc.org/gc/v2 v2.6.3/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/libc v1.61.13 h1:3LRd6ZO1ezsFiX1y+bHd1ipyEHIJKvuprv0sLTBwLW8= -modernc.org/libc v1.61.13/go.mod h1:8F/uJWL/3nNil0Lgt1Dpz+GgkApWh04N3el3hxJcA6E= +modernc.org/cc/v4 v4.26.1 h1:+X5NtzVBn0KgsBCBe+xkDC7twLb/jNVj9FPgiwSQO3s= +modernc.org/cc/v4 v4.26.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= +modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= +modernc.org/fileutil v1.3.3 h1:3qaU+7f7xxTUmvU1pJTZiDLAIoJVdUSSauJNHg9yXoA= +modernc.org/fileutil v1.3.3/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= +modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= +modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= modernc.org/libc v1.65.10 h1:ZwEk8+jhW7qBjHIT+wd0d9VjitRyQef9BnzlzGwMODc= modernc.org/libc v1.65.10/go.mod h1:StFvYpx7i/mXtBAfVOjaU0PWZOvIRoZSgXhrwXzr8Po= modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= -modernc.org/memory v1.8.2 h1:cL9L4bcoAObu4NkxOlKWBWtNHIsnnACGF/TbqQ6sbcI= -modernc.org/memory v1.8.2/go.mod h1:ZbjSvMO5NQ1A2i3bWeDiVMxIorXwdClKE/0SZ+BMotU= modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.35.0 h1:yQps4fegMnZFdphtzlfQTCNBWtS0CZv48pRpW3RFHRw= -modernc.org/sqlite v1.35.0/go.mod h1:9cr2sicr7jIaWTBKQmAxQLfBv9LL0su4ZTEV+utt3ic= modernc.org/sqlite v1.38.0 h1:+4OrfPQ8pxHKuWG4md1JpR/EYAh3Md7TdejuuzE7EUI= modernc.org/sqlite v1.38.0/go.mod h1:1Bj+yES4SVvBZ4cBOpVZ6QgesMCKpJZDq0nxYzOpmNE= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= diff --git a/examples/sqr/embeddedSqlWithoutRepository/go.mod b/examples/sqr/embeddedSqlWithoutRepository/go.mod index 55df0bf..e8aa417 100644 --- a/examples/sqr/embeddedSqlWithoutRepository/go.mod +++ b/examples/sqr/embeddedSqlWithoutRepository/go.mod @@ -5,7 +5,7 @@ go 1.24.2 toolchain go1.24.3 require ( - git.flexabyte.io/flexabyte/go-kit v0.0.0-20250521190905-eff54c777985 + git.flexabyte.io/flexabyte/go-kit v0.1.0 github.com/golang-migrate/migrate/v4 v4.18.3 ) @@ -18,10 +18,10 @@ require ( github.com/ncruces/go-strftime v0.1.9 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect go.uber.org/atomic v1.11.0 // indirect - golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect + golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 // indirect golang.org/x/sys v0.33.0 // indirect - modernc.org/libc v1.65.7 // indirect + modernc.org/libc v1.65.10 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect - modernc.org/sqlite v1.37.1 // indirect + modernc.org/sqlite v1.38.0 // indirect ) diff --git a/examples/sqr/embeddedSqlWithoutRepository/go.sum b/examples/sqr/embeddedSqlWithoutRepository/go.sum index af08765..6c68c9c 100644 --- a/examples/sqr/embeddedSqlWithoutRepository/go.sum +++ b/examples/sqr/embeddedSqlWithoutRepository/go.sum @@ -1,5 +1,5 @@ -git.flexabyte.io/flexabyte/go-kit v0.0.0-20250521190905-eff54c777985 h1:Q9mYadYgRyb0i89T2fvzJlViGMiKosUvBrBpK8pd/6w= -git.flexabyte.io/flexabyte/go-kit v0.0.0-20250521190905-eff54c777985/go.mod h1:dZ04ub68ACYiSHUrF+7mq4xg4xL/0C3MvnIUEfahdiU= +git.flexabyte.io/flexabyte/go-kit v0.1.0 h1:ATnnYfF9wl3mIxhGy1ki5k0lKqLftoCb+MjBGxUGbpA= +git.flexabyte.io/flexabyte/go-kit v0.1.0/go.mod h1:+ZXfaSKiX1m0zrIy9YIHAK+MpEOgHfheuPS/rM6AMlM= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -29,29 +29,29 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 h1:bsqhLWFR6G6xiQcb+JoGqdKdRU6WzPWmK8E0jxTjzo4= +golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= modernc.org/cc/v4 v4.26.1 h1:+X5NtzVBn0KgsBCBe+xkDC7twLb/jNVj9FPgiwSQO3s= modernc.org/cc/v4 v4.26.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= -modernc.org/fileutil v1.3.1 h1:8vq5fe7jdtEvoCf3Zf9Nm0Q05sH6kGx0Op2CPx1wTC8= -modernc.org/fileutil v1.3.1/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= +modernc.org/fileutil v1.3.3 h1:3qaU+7f7xxTUmvU1pJTZiDLAIoJVdUSSauJNHg9yXoA= +modernc.org/fileutil v1.3.3/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/libc v1.65.7 h1:Ia9Z4yzZtWNtUIuiPuQ7Qf7kxYrxP1/jeHZzG8bFu00= -modernc.org/libc v1.65.7/go.mod h1:011EQibzzio/VX3ygj1qGFt5kMjP0lHb0qCW5/D/pQU= +modernc.org/libc v1.65.10 h1:ZwEk8+jhW7qBjHIT+wd0d9VjitRyQef9BnzlzGwMODc= +modernc.org/libc v1.65.10/go.mod h1:StFvYpx7i/mXtBAfVOjaU0PWZOvIRoZSgXhrwXzr8Po= modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= @@ -60,8 +60,8 @@ modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.37.1 h1:EgHJK/FPoqC+q2YBXg7fUmES37pCHFc97sI7zSayBEs= -modernc.org/sqlite v1.37.1/go.mod h1:XwdRtsE1MpiBcL54+MbKcaDvcuej+IYSMfLN6gSKV8g= +modernc.org/sqlite v1.38.0 h1:+4OrfPQ8pxHKuWG4md1JpR/EYAh3Md7TdejuuzE7EUI= +modernc.org/sqlite v1.38.0/go.mod h1:1Bj+yES4SVvBZ4cBOpVZ6QgesMCKpJZDq0nxYzOpmNE= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= diff --git a/go.mod b/go.mod index 53edfc1..07bea05 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,9 @@ require ( ) require ( + github.com/Oudwins/zog v0.21.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/samber/lo v1.50.0 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/text v0.26.0 // indirect ) diff --git a/go.sum b/go.sum index f90d8bd..1296f2a 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/Oudwins/zog v0.21.1 h1:y6Ix9vNkDF8crLzOTU0A6kjT+uv5pgkHer9CBjYp93A= +github.com/Oudwins/zog v0.21.1/go.mod h1:c4ADJ2zNkJp37ZViNy1o3ZZoeMvO7UQVO7BaPtRoocg= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -18,6 +20,8 @@ github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= From 283d1dbf03c5fab874136235763d38f705c57005 Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 21:36:38 +0200 Subject: [PATCH 2/9] Remove ParseVersion() Signed-off-by: Jan Tytgat --- application/config.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/application/config.go b/application/config.go index add2b62..e368036 100644 --- a/application/config.go +++ b/application/config.go @@ -69,10 +69,6 @@ func (c Config) getRootCommand() (*cobra.Command, error) { return cmd, nil } -// func (c Config) ParseVersion() (semver.Version, error) { -// return semver.Parse(c.Version.Full) -// } - func (c Config) RegisterCommand(cmd Commander, f func(*cobra.Command)) { appCmd.AddCommand(cmd.Initialize(f)) } From a1f845309750bb2d226913c58d240bc4a72c4323 Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 21:37:08 +0200 Subject: [PATCH 3/9] Add package flagzog: - Add FlagValidator interface - Add BoolFlag - Add Int64Flag - Add StringFlag Signed-off-by: Jan Tytgat --- flagzog/flags.go | 109 +++++++++++++++++++++++++++++++++++++++++++ flagzog/validator.go | 27 +++++++++++ 2 files changed, 136 insertions(+) create mode 100644 flagzog/flags.go create mode 100644 flagzog/validator.go diff --git a/flagzog/flags.go b/flagzog/flags.go new file mode 100644 index 0000000..071d16f --- /dev/null +++ b/flagzog/flags.go @@ -0,0 +1,109 @@ +package flagzog + +import ( + "fmt" + + "github.com/Oudwins/zog" +) + +func NewBoolFlag(name string, schema *zog.BoolSchema[bool], usage string) BoolFlag { + return BoolFlag{ + name: name, + schema: schema, + usage: usage, + } +} + +type BoolFlag struct { + name string + schema *zog.BoolSchema[bool] + usage string + Value bool +} + +func (f BoolFlag) Name() string { + return f.name +} + +func (f BoolFlag) Usage() string { + return f.usage +} + +func (f BoolFlag) Validate() ([]string, error) { + var messages []string + if issues := f.schema.Validate(&f.Value); issues != nil { + for _, issue := range issues { + messages = append(messages, issue.Message) + } + return messages, fmt.Errorf("validation failed for flag '%s' with value '%s'", f.Name(), f.Value) + } + return messages, nil +} + +func NewInt64Flag(name string, schema *zog.NumberSchema[int64], usage string) Int64Flag { + return Int64Flag{ + name: name, + schema: schema, + usage: usage, + } +} + +type Int64Flag struct { + name string + schema *zog.NumberSchema[int64] + usage string + Value int64 +} + +func (f Int64Flag) Name() string { + return f.name +} + +func (f Int64Flag) Usage() string { + return f.usage +} + +func (f Int64Flag) Validate() ([]string, error) { + var messages []string + if issues := f.schema.Validate(&f.Value); issues != nil { + for _, issue := range issues { + messages = append(messages, issue.Message) + } + return messages, fmt.Errorf("validation failed for flag '%s' with value '%s'", f.Name(), f.Value) + } + return messages, nil +} + +func NewStringFlag(name string, schema *zog.StringSchema[string], usage string) StringFlag { + return StringFlag{ + name: name, + schema: schema, + usage: usage, + } +} + +type StringFlag struct { + name string + schema *zog.StringSchema[string] + usage string + Value string +} + +func (f StringFlag) Name() string { + return f.name +} + +func (f StringFlag) Usage() string { + return f.usage +} + +func (f StringFlag) Validate() ([]string, error) { + var messages []string + if issues := f.schema.Validate(&f.Value); issues != nil { + for _, issue := range issues { + messages = append(messages, issue.Message) + } + return messages, fmt.Errorf("validation failed for flag '%s' with value '%s'", f.Name(), f.Value) + } + return messages, nil +} diff --git a/flagzog/validator.go b/flagzog/validator.go new file mode 100644 index 0000000..c2c44b7 --- /dev/null +++ b/flagzog/validator.go @@ -0,0 +1,27 @@ +package flagzog + +import ( + "context" + "log/slog" +) + +type FlagValidator interface { + Name() string + Validate() ([]string, error) + Usage() string +} + +func ValidateFlags(ctx context.Context, logger *slog.Logger, flags []FlagValidator) ([]string, error) { + var validatedFlags []string + var err error + + for _, flag := range flags { + var issues []string + if issues, err = flag.Validate(); err != nil { + logger.Log(ctx, slog.LevelError, "validation failed", slog.String("flag", flag.Name()), slog.Any("issues", issues)) + return validatedFlags, err + } + validatedFlags = append(validatedFlags, flag.Name()) + } + return validatedFlags, nil +} From e63b41c5ff45fa9418f3573d1430ee0f46901804 Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 21:39:26 +0200 Subject: [PATCH 4/9] Update dependencies Signed-off-by: Jan Tytgat --- go.mod | 4 ++-- go.sum | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 07bea05..4968c30 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module git.flexabyte.io/flexabyte/go-kit go 1.24.2 require ( + github.com/Oudwins/zog v0.21.1 github.com/samber/slog-formatter v1.2.0 github.com/samber/slog-multi v1.4.0 github.com/spf13/cobra v1.9.1 @@ -10,9 +11,8 @@ require ( ) require ( - github.com/Oudwins/zog v0.21.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/samber/lo v1.50.0 // indirect - golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 // indirect golang.org/x/text v0.26.0 // indirect ) diff --git a/go.sum b/go.sum index 1296f2a..585ccfe 100644 --- a/go.sum +++ b/go.sum @@ -22,10 +22,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 h1:bsqhLWFR6G6xiQcb+JoGqdKdRU6WzPWmK8E0jxTjzo4= +golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From c2b17924e20e6c6261258a630f553efb264b89c7 Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 22:18:07 +0200 Subject: [PATCH 5/9] Add go.mod for simple example Signed-off-by: Jan Tytgat --- examples/application/simple/go.mod | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 examples/application/simple/go.mod diff --git a/examples/application/simple/go.mod b/examples/application/simple/go.mod new file mode 100644 index 0000000..b18fd55 --- /dev/null +++ b/examples/application/simple/go.mod @@ -0,0 +1,19 @@ +module simple + +go 1.24.2 + +toolchain go1.24.4 + +require ( + git.flexabyte.io/flexabyte/go-kit v0.1.1-0.20250609193926-e63b41c5ff45 + github.com/spf13/cobra v1.9.1 +) + +require ( + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/samber/lo v1.50.0 // indirect + github.com/samber/slog-formatter v1.2.0 // indirect + github.com/samber/slog-multi v1.4.0 // indirect + github.com/spf13/pflag v1.0.6 // indirect + golang.org/x/text v0.26.0 // indirect +) From 9adebbf0e2577a53fe2b6a629f0f4afc9ce6a3fd Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 22:18:25 +0200 Subject: [PATCH 6/9] Add go.mod for simple example Signed-off-by: Jan Tytgat --- examples/application/simple/go.sum | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 examples/application/simple/go.sum diff --git a/examples/application/simple/go.sum b/examples/application/simple/go.sum new file mode 100644 index 0000000..c0014a5 --- /dev/null +++ b/examples/application/simple/go.sum @@ -0,0 +1,27 @@ +git.flexabyte.io/flexabyte/go-kit v0.1.1-0.20250609193926-e63b41c5ff45 h1:VA4K969jlxvppt+WYHIMwTt5TnE9zgEynMu1reTFujQ= +git.flexabyte.io/flexabyte/go-kit v0.1.1-0.20250609193926-e63b41c5ff45/go.mod h1:GTo5se9ocEJfsdlpClpZMD8+eXsHdD5it35IILezNUc= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +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/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/samber/lo v1.50.0 h1:XrG0xOeHs+4FQ8gJR97zDz5uOFMW7OwFWiFVzqopKgY= +github.com/samber/lo v1.50.0/go.mod h1:RjZyNk6WSnUFRKK6EyOhsRJMqft3G+pg7dCWHQCWvsc= +github.com/samber/slog-formatter v1.2.0 h1:gTSHm4CxyySyhcxRkzk21CSKbGCdZVipbRMhINkNtQU= +github.com/samber/slog-formatter v1.2.0/go.mod h1:hgjhSd5Vf69XCOnVp0UW0QHCxJ8iDEm/qASjji6FNoI= +github.com/samber/slog-multi v1.4.0 h1:pwlPMIE7PrbTHQyKWDU+RIoxP1+HKTNOujk3/kdkbdg= +github.com/samber/slog-multi v1.4.0/go.mod h1:FsQ4Uv2L+E/8TZt+/BVgYZ1LoDWCbfCU21wVIoMMrO8= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From fa641b06b224b72caa8976c8d7b9ad23e28e56b7 Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 22:18:47 +0200 Subject: [PATCH 7/9] Refactor flags to use flagzog package Signed-off-by: Jan Tytgat --- application/globals.go | 9 +++++---- application/logging.go | 35 ++++++++++++++++++++++------------- application/output.go | 37 ++++++++++++++++++++++++------------- application/version.go | 17 ++++++++++------- 4 files changed, 61 insertions(+), 37 deletions(-) diff --git a/application/globals.go b/application/globals.go index 186db64..0fc03f8 100644 --- a/application/globals.go +++ b/application/globals.go @@ -7,6 +7,7 @@ import ( "os" "reflect" "runtime" + "strings" "syscall" "github.com/spf13/cobra" @@ -38,9 +39,9 @@ func normalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName { } func persistentPreRunFuncE(cmd *cobra.Command, args []string) error { - slogd.SetLevel(slogd.Level(logLevelFlag)) + slogd.SetLevel(slogd.Level(logLevelFlag.Value)) - if slogd.ActiveHandler() != slogd.HandlerJSON && noColorFlag { + if slogd.ActiveHandler() != slogd.HandlerJSON && noColorFlag.Value { slogd.UseHandler(slogd.HandlerText) cmd.SetContext(slogd.WithContext(cmd.Context())) } @@ -49,7 +50,7 @@ func persistentPreRunFuncE(cmd *cobra.Command, args []string) error { slogd.FromContext(cmd.Context()).Log(cmd.Context(), slogd.LevelTrace, "executing PersistentPreRun") // Make sure we can always get the version - if versionFlag || cmd.Use == versionName { + if versionFlag.Value || cmd.CommandPath() == strings.Join([]string{appName, versionName}, " ") { slogd.FromContext(cmd.Context()).LogAttrs(cmd.Context(), slogd.LevelTrace, "overriding command", slog.String("old_function", runtime.FuncForPC(reflect.ValueOf(cmd.RunE).Pointer()).Name()), slog.String("new_function", runtime.FuncForPC(reflect.ValueOf(versionRunFuncE).Pointer()).Name())) cmd.RunE = versionRunFuncE return nil @@ -64,7 +65,7 @@ func persistentPreRunFuncE(cmd *cobra.Command, args []string) error { } // TODO move to front?? - if quietFlag { + if quietFlag.Value { slogd.FromContext(cmd.Context()).LogAttrs(cmd.Context(), slogd.LevelTrace, "activating quiet mode") outWriter = io.Discard } diff --git a/application/logging.go b/application/logging.go index 0ee8c2b..740ae7a 100644 --- a/application/logging.go +++ b/application/logging.go @@ -1,38 +1,47 @@ package application import ( + "fmt" "log/slog" + "github.com/Oudwins/zog" "github.com/spf13/cobra" + "git.flexabyte.io/flexabyte/go-kit/flagzog" "git.flexabyte.io/flexabyte/go-kit/slogd" ) const ( - LogOutputStdOut = "stdout" - LogOutputStdErr = "stderr" - LogOutputFile = "file" + logLevelTrace = "trace" + logLevelDebug = "debug" + logLevelInfo = "info" + logLevelWarn = "warn" + logLevelError = "error" + logLevelFatal = "fatal" + logOutputStdout = "stdout" + logOutputStderr = "stderr" + logOutputFile = "file" + logTypeText = "text" + logTypeJson = "json" + logTypeColor = "color" ) var ( - logLevelFlagName string = "log-level" - logLevelFlag string - logOutputFlagName string = "log-output" - logOutputFlag string - logTypeFlagName = "log-type" - logTypeFlag string + logLevelFlag = flagzog.NewStringFlag("log-level", zog.String().OneOf([]string{logLevelTrace, logLevelDebug, logLevelInfo, logLevelWarn, logLevelError, logLevelFatal}), fmt.Sprintf("Set log level (%s, %s, %s, %s, %s, %s)", logLevelTrace, logLevelDebug, logLevelInfo, logLevelWarn, logLevelError, logLevelFatal)) + logOutputFlag = flagzog.NewStringFlag("log-output", zog.String().OneOf([]string{logOutputStdout, logOutputStderr, logOutputFile}), fmt.Sprintf("Set log output (%s, %s, %s)", logOutputStdout, logOutputStderr, logOutputFile)) + logTypeFlag = flagzog.NewStringFlag("log-type", zog.String().OneOf([]string{logTypeText, logTypeJson, logTypeColor}), fmt.Sprintf("Set log type (%s, %s, %s)", logTypeText, logTypeJson, logTypeColor)) ) func addLogLevelFlag(cmd *cobra.Command) { - cmd.PersistentFlags().StringVarP(&logLevelFlag, logLevelFlagName, "", "info", "Set log level (trace, debug, info, warn, error, fatal)") + cmd.PersistentFlags().StringVarP(&logLevelFlag.Value, logLevelFlag.Name(), "", logLevelInfo, logLevelFlag.Usage()) } func addLogOutputFlag(cmd *cobra.Command) { - cmd.PersistentFlags().StringVarP(&logOutputFlag, logOutputFlagName, "", "stderr", "Set log output (stdout, stderr, file)") + cmd.PersistentFlags().StringVarP(&logOutputFlag.Value, logOutputFlag.Name(), "", logOutputStderr, logOutputFlag.Usage()) } func addLogTypeFlag(cmd *cobra.Command) { - cmd.PersistentFlags().StringVarP(&logTypeFlag, logTypeFlagName, "", "text", "Set log type (text, json, color)") + cmd.PersistentFlags().StringVarP(&logTypeFlag.Value, logTypeFlag.Name(), "", logTypeText, logTypeFlag.Usage()) } func configureLoggingFlags(cmd *cobra.Command) { @@ -40,7 +49,7 @@ func configureLoggingFlags(cmd *cobra.Command) { addLogOutputFlag(cmd) addLogTypeFlag(cmd) - cmd.MarkFlagsMutuallyExclusive("no-color", "log-type") + cmd.MarkFlagsMutuallyExclusive("no-color", logTypeFlag.Name()) } func GetLogLevelFromArgs(args []string) slog.Level { diff --git a/application/output.go b/application/output.go index d9960c3..89c68b9 100644 --- a/application/output.go +++ b/application/output.go @@ -1,26 +1,38 @@ package application -import "github.com/spf13/cobra" +import ( + "github.com/Oudwins/zog" + "github.com/spf13/cobra" -var jsonOutputFlag bool -var noColorFlag bool -var quietFlag bool -var verboseFlag bool + "git.flexabyte.io/flexabyte/go-kit/flagzog" +) + +const ( + quietFlagShortCode = "q" + verboseFlagShortCode = "v" +) + +var ( + jsonOutputFlag = flagzog.NewBoolFlag("json", zog.Bool(), "Enable JSON output") + noColorFlag = flagzog.NewBoolFlag("no-color", zog.Bool(), "Disable colored output") + quietFlag = flagzog.NewBoolFlag("quiet", zog.Bool(), "Suppress output") + verboseFlag = flagzog.NewBoolFlag("verbose", zog.Bool(), "Enable verbose output") +) func addJsonOutputFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&jsonOutputFlag, "json", "", false, "Enable JSON outWriter") + cmd.PersistentFlags().BoolVarP(&jsonOutputFlag.Value, jsonOutputFlag.Name(), "", false, jsonOutputFlag.Usage()) } func addNoColorFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&noColorFlag, "no-color", "", false, "Disable color outWriter") + cmd.PersistentFlags().BoolVarP(&noColorFlag.Value, noColorFlag.Name(), "", false, noColorFlag.Usage()) } func addQuietFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&quietFlag, "quiet", "q", false, "Enable quiet mode") + cmd.PersistentFlags().BoolVarP(&quietFlag.Value, quietFlag.Name(), quietFlagShortCode, false, quietFlag.Usage()) } func addVerboseFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&verboseFlag, "verbose", "v", false, "Enable verbose outWriter") + cmd.PersistentFlags().BoolVarP(&verboseFlag.Value, verboseFlag.Name(), verboseFlagShortCode, false, verboseFlag.Usage()) } func configureOutputFlags(cmd *cobra.Command) { @@ -29,8 +41,7 @@ func configureOutputFlags(cmd *cobra.Command) { addVerboseFlag(cmd) addQuietFlag(cmd) - cmd.MarkFlagsMutuallyExclusive("verbose", "quiet", "json") - cmd.MarkFlagsMutuallyExclusive("json", "no-color") - cmd.MarkFlagsMutuallyExclusive("quiet", "no-color") - + cmd.MarkFlagsMutuallyExclusive(verboseFlag.Name(), quietFlag.Name(), jsonOutputFlag.Name()) + cmd.MarkFlagsMutuallyExclusive(jsonOutputFlag.Name(), noColorFlag.Name()) + cmd.MarkFlagsMutuallyExclusive(quietFlag.Name(), noColorFlag.Name()) } diff --git a/application/version.go b/application/version.go index eb79345..a223e65 100644 --- a/application/version.go +++ b/application/version.go @@ -4,18 +4,21 @@ import ( "encoding/json" "fmt" + "github.com/Oudwins/zog" "github.com/spf13/cobra" + + "git.flexabyte.io/flexabyte/go-kit/flagzog" ) const ( - versionName = "version" - versionShortHand = "V" - versionUsage = "Show version information" + versionName = "version" + versionFlagShortCode = "V" + versionUsage = "Show version information" ) var ( + versionFlag = flagzog.NewBoolFlag(versionName, zog.Bool(), versionUsage) version Version - versionFlag bool versionCmd = &cobra.Command{ Use: versionName, Short: versionUsage, @@ -37,7 +40,7 @@ type Version struct { } func addVersionFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&versionFlag, versionName, versionShortHand, false, versionUsage) + cmd.PersistentFlags().BoolVarP(&versionFlag.Value, versionFlag.Name(), versionFlagShortCode, false, versionFlag.Usage()) } func configureVersionFlag(cmd *cobra.Command, v Version) { @@ -48,11 +51,11 @@ func configureVersionFlag(cmd *cobra.Command, v Version) { func printVersion(v Version) string { var output string - if !verboseFlag { + if !verboseFlag.Value { output = v.Full } - if jsonOutputFlag { + if jsonOutputFlag.Value { var b []byte b, _ = json.Marshal(v) output = string(b) From ee7cb7e42272950cf8322deafbc9b3ab13dbad59 Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 22:36:32 +0200 Subject: [PATCH 8/9] Remove dependency on semver package Signed-off-by: Jan Tytgat --- application/config.go | 5 +---- application/version.go | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/application/config.go b/application/config.go index e368036..63cb67f 100644 --- a/application/config.go +++ b/application/config.go @@ -8,8 +8,6 @@ import ( "time" "github.com/spf13/cobra" - - "git.flexabyte.io/flexabyte/go-kit/semver" ) type Config struct { @@ -99,8 +97,7 @@ func (c Config) Validate() error { return errors.New("logger is required") } - var err error - if _, err = semver.Parse(c.Version.Full); err != nil { + if !c.Version.IsValid() { return fmt.Errorf("invalid version: %s", c.Version) } return nil diff --git a/application/version.go b/application/version.go index a223e65..679198b 100644 --- a/application/version.go +++ b/application/version.go @@ -3,6 +3,7 @@ package application import ( "encoding/json" "fmt" + "regexp" "github.com/Oudwins/zog" "github.com/spf13/cobra" @@ -11,19 +12,25 @@ import ( ) const ( - versionName = "version" + versionFlagName = "version" versionFlagShortCode = "V" - versionUsage = "Show version information" + versionFlagUsage = "Show version information" + versionFlagDefault = false + + // https://semver.org/ && https://regex101.com/r/Ly7O1x/3/ + validSemVer = `^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)(?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$` ) var ( - versionFlag = flagzog.NewBoolFlag(versionName, zog.Bool(), versionUsage) + versionFlag = flagzog.NewBoolFlag(versionFlagName, zog.Bool(), versionFlagUsage) version Version versionCmd = &cobra.Command{ - Use: versionName, - Short: versionUsage, + Use: versionFlagName, + Short: versionFlagUsage, RunE: versionRunFuncE, } + + regexSemver = regexp.MustCompile(validSemVer) ) type Version struct { @@ -39,8 +46,12 @@ type Version struct { PreRelease string } +func (v Version) IsValid() bool { + return regexSemver.MatchString(v.Full) +} + func addVersionFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&versionFlag.Value, versionFlag.Name(), versionFlagShortCode, false, versionFlag.Usage()) + cmd.PersistentFlags().BoolVarP(&versionFlag.Value, versionFlag.Name(), versionFlagShortCode, versionFlagDefault, versionFlag.Usage()) } func configureVersionFlag(cmd *cobra.Command, v Version) { From b37a283dfb3f9f9399569bd8038a8942fe75fbbc Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Mon, 9 Jun 2025 22:36:45 +0200 Subject: [PATCH 9/9] Refactor flags Signed-off-by: Jan Tytgat --- application/globals.go | 2 +- application/output.go | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/application/globals.go b/application/globals.go index 0fc03f8..67b5d37 100644 --- a/application/globals.go +++ b/application/globals.go @@ -50,7 +50,7 @@ func persistentPreRunFuncE(cmd *cobra.Command, args []string) error { slogd.FromContext(cmd.Context()).Log(cmd.Context(), slogd.LevelTrace, "executing PersistentPreRun") // Make sure we can always get the version - if versionFlag.Value || cmd.CommandPath() == strings.Join([]string{appName, versionName}, " ") { + if versionFlag.Value || cmd.CommandPath() == strings.Join([]string{appName, versionFlagName}, " ") { slogd.FromContext(cmd.Context()).LogAttrs(cmd.Context(), slogd.LevelTrace, "overriding command", slog.String("old_function", runtime.FuncForPC(reflect.ValueOf(cmd.RunE).Pointer()).Name()), slog.String("new_function", runtime.FuncForPC(reflect.ValueOf(versionRunFuncE).Pointer()).Name())) cmd.RunE = versionRunFuncE return nil diff --git a/application/output.go b/application/output.go index 89c68b9..553e836 100644 --- a/application/output.go +++ b/application/output.go @@ -8,8 +8,12 @@ import ( ) const ( - quietFlagShortCode = "q" - verboseFlagShortCode = "v" + jsonOutputFlagDefault = false + noColorFlagDefault = false + quietFlagDefault = false + quietFlagShortCode = "q" + verboseFlagDefault = false + verboseFlagShortCode = "v" ) var ( @@ -20,19 +24,19 @@ var ( ) func addJsonOutputFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&jsonOutputFlag.Value, jsonOutputFlag.Name(), "", false, jsonOutputFlag.Usage()) + cmd.PersistentFlags().BoolVarP(&jsonOutputFlag.Value, jsonOutputFlag.Name(), "", jsonOutputFlagDefault, jsonOutputFlag.Usage()) } func addNoColorFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&noColorFlag.Value, noColorFlag.Name(), "", false, noColorFlag.Usage()) + cmd.PersistentFlags().BoolVarP(&noColorFlag.Value, noColorFlag.Name(), "", noColorFlagDefault, noColorFlag.Usage()) } func addQuietFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&quietFlag.Value, quietFlag.Name(), quietFlagShortCode, false, quietFlag.Usage()) + cmd.PersistentFlags().BoolVarP(&quietFlag.Value, quietFlag.Name(), quietFlagShortCode, quietFlagDefault, quietFlag.Usage()) } func addVerboseFlag(cmd *cobra.Command) { - cmd.PersistentFlags().BoolVarP(&verboseFlag.Value, verboseFlag.Name(), verboseFlagShortCode, false, verboseFlag.Usage()) + cmd.PersistentFlags().BoolVarP(&verboseFlag.Value, verboseFlag.Name(), verboseFlagShortCode, verboseFlagDefault, verboseFlag.Usage()) } func configureOutputFlags(cmd *cobra.Command) {