Skip to content

Commit 443d892

Browse files
committed
simplify os partition approach + bug fixes
1 parent 09393e8 commit 443d892

File tree

3 files changed

+119
-4
lines changed

3 files changed

+119
-4
lines changed

go.mod

+92-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,103 @@
11
module hurracloud.io/agent
22

3-
go 1.14
3+
go 1.21
4+
5+
toolchain go1.22.5
46

57
require (
68
github.com/golang/protobuf v1.4.2
7-
github.com/jaypipes/ghw v0.6.1
9+
github.com/jaypipes/ghw v0.12.0
810
github.com/labstack/gommon v0.3.0
911
github.com/mackerelio/go-osstat v0.2.0
1012
github.com/sirupsen/logrus v1.6.0
1113
google.golang.org/grpc v1.32.0
12-
google.golang.org/grpc/examples v0.0.0-20200910201057-6591123024b3 // indirect
1314
google.golang.org/protobuf v1.25.0
1415
)
16+
17+
require (
18+
cloud.google.com/go v0.63.0 // indirect
19+
cloud.google.com/go/bigquery v1.8.0 // indirect
20+
cloud.google.com/go/datastore v1.1.0 // indirect
21+
cloud.google.com/go/pubsub v1.3.1 // indirect
22+
cloud.google.com/go/storage v1.10.0 // indirect
23+
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 // indirect
24+
github.com/BurntSushi/toml v0.3.1 // indirect
25+
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 // indirect
26+
github.com/StackExchange/wmi v1.2.1 // indirect
27+
github.com/census-instrumentation/opencensus-proto v0.2.1 // indirect
28+
github.com/chzyer/logex v1.1.10 // indirect
29+
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
30+
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 // indirect
31+
github.com/client9/misspell v0.3.4 // indirect
32+
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f // indirect
33+
github.com/davecgh/go-spew v1.1.1 // indirect
34+
github.com/envoyproxy/go-control-plane v0.9.4 // indirect
35+
github.com/envoyproxy/protoc-gen-validate v0.1.0 // indirect
36+
github.com/ghodss/yaml v1.0.0 // indirect
37+
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 // indirect
38+
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 // indirect
39+
github.com/go-ole/go-ole v1.3.0 // indirect
40+
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
41+
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
42+
github.com/golang/mock v1.4.4 // indirect
43+
github.com/google/btree v1.0.0 // indirect
44+
github.com/google/go-cmp v0.5.1 // indirect
45+
github.com/google/martian v2.1.0+incompatible // indirect
46+
github.com/google/martian/v3 v3.0.0 // indirect
47+
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 // indirect
48+
github.com/google/renameio v0.1.0 // indirect
49+
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
50+
github.com/hashicorp/golang-lru v0.5.1 // indirect
51+
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 // indirect
52+
github.com/inconshreveable/mousetrap v1.0.0 // indirect
53+
github.com/jaypipes/pcidb v1.0.1 // indirect
54+
github.com/jessevdk/go-flags v1.4.0 // indirect
55+
github.com/jstemmer/go-junit-report v0.9.1 // indirect
56+
github.com/kisielk/gotool v1.0.0 // indirect
57+
github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect
58+
github.com/kr/pretty v0.1.0 // indirect
59+
github.com/kr/pty v1.1.1 // indirect
60+
github.com/kr/text v0.1.0 // indirect
61+
github.com/mattn/go-colorable v0.1.2 // indirect
62+
github.com/mattn/go-isatty v0.0.9 // indirect
63+
github.com/mitchellh/go-homedir v1.1.0 // indirect
64+
github.com/pkg/errors v0.9.1 // indirect
65+
github.com/pmezard/go-difflib v1.0.0 // indirect
66+
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect
67+
github.com/rogpeppe/go-internal v1.3.0 // indirect
68+
github.com/spf13/cobra v0.0.3 // indirect
69+
github.com/spf13/pflag v1.0.2 // indirect
70+
github.com/stretchr/objx v0.1.0 // indirect
71+
github.com/stretchr/testify v1.4.0 // indirect
72+
github.com/valyala/bytebufferpool v1.0.0 // indirect
73+
github.com/valyala/fasttemplate v1.0.1 // indirect
74+
github.com/yuin/goldmark v1.1.32 // indirect
75+
go.opencensus.io v0.22.4 // indirect
76+
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect
77+
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 // indirect
78+
golang.org/x/image v0.0.0-20190802002840-cff245a6509b // indirect
79+
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
80+
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 // indirect
81+
golang.org/x/mod v0.3.0 // indirect
82+
golang.org/x/net v0.0.0-20200707034311-ab3426394381 // indirect
83+
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect
84+
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 // indirect
85+
golang.org/x/sys v0.22.0 // indirect
86+
golang.org/x/text v0.3.3 // indirect
87+
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
88+
golang.org/x/tools v0.0.0-20200806022845-90696ccdc692 // indirect
89+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
90+
google.golang.org/api v0.30.0 // indirect
91+
google.golang.org/appengine v1.6.6 // indirect
92+
google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98 // indirect
93+
google.golang.org/grpc/examples v0.0.0-20200910201057-6591123024b3 // indirect
94+
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
95+
gopkg.in/errgo.v2 v2.1.0 // indirect
96+
gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0 // indirect
97+
gopkg.in/yaml.v2 v2.4.0 // indirect
98+
honnef.co/go/tools v0.0.1-2020.1.4 // indirect
99+
howett.net/plist v1.0.1 // indirect
100+
rsc.io/binaryregexp v0.2.0 // indirect
101+
rsc.io/quote/v3 v3.1.0 // indirect
102+
rsc.io/sampler v1.3.0 // indirect
103+
)

go.sum

+22
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7
3434
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
3535
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
3636
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
37+
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
38+
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
3739
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
3840
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
3941
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
@@ -52,6 +54,9 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9
5254
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
5355
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
5456
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
57+
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
58+
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
59+
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
5560
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
5661
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
5762
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -104,8 +109,12 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
104109
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
105110
github.com/jaypipes/ghw v0.6.1 h1:Ewt3mdpiyhWotGyzg1ursV/6SnToGcG4215X6rR2af8=
106111
github.com/jaypipes/ghw v0.6.1/go.mod h1:QOXppNRCLGYR1H+hu09FxZPqjNt09bqUZUnOL3Rcero=
112+
github.com/jaypipes/ghw v0.12.0 h1:xU2/MDJfWmBhJnujHY9qwXQLs3DBsf0/Xa9vECY0Tho=
113+
github.com/jaypipes/ghw v0.12.0/go.mod h1:jeJGbkRB2lL3/gxYzNYzEDETV1ZJ56OKr+CSeSEym+g=
107114
github.com/jaypipes/pcidb v0.5.0 h1:4W5gZ+G7QxydevI8/MmmKdnIPJpURqJ2JNXTzfLxF5c=
108115
github.com/jaypipes/pcidb v0.5.0/go.mod h1:L2RGk04sfRhp5wvHO0gfRAMoLY/F3PKv/nwJeVoho0o=
116+
github.com/jaypipes/pcidb v1.0.1 h1:WB2zh27T3nwg8AE8ei81sNRb9yWBii3JGNJtT7K9Oic=
117+
github.com/jaypipes/pcidb v1.0.1/go.mod h1:6xYUz/yYEyOkIkUt2t2J2folIuZ4Yg6uByCGFXMCeE4=
109118
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
110119
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
111120
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
@@ -125,8 +134,12 @@ github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg
125134
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
126135
github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0=
127136
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
137+
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
138+
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
128139
github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
129140
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
141+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
142+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
130143
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
131144
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
132145
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@@ -235,6 +248,7 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w
235248
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
236249
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
237250
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
251+
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
238252
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
239253
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
240254
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -254,6 +268,9 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 h1:B6caxRw+hozq68X2MY7jEpZh/
254268
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
255269
golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78 h1:nVuTkr9L6Bq62qpUqKo/RnZCFfzDBL0bYo6w9OJUqZY=
256270
golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
271+
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
272+
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
273+
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
257274
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
258275
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
259276
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -389,9 +406,12 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
389406
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
390407
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
391408
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
409+
gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg=
392410
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
393411
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
394412
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
413+
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
414+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
395415
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
396416
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
397417
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -401,6 +421,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
401421
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
402422
howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M=
403423
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
424+
howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM=
425+
howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g=
404426
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
405427
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
406428
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

server.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ func (s *hurraAgentServer) GetDrives(ctx context.Context, drive *pb.GetDrivesReq
6767

6868
response := &pb.GetDrivesResponse{}
6969
for _, disk := range block.Disks {
70+
if disk.SerialNumber == "unknown" {
71+
log.Trace("Warning Found Disk with unknown serial number, will skip it: ", disk)
72+
continue
73+
}
7074
log.Trace("Found Disk: ", disk)
7175
drive := &pb.Drive{
7276
Name: disk.Name,
@@ -106,7 +110,7 @@ func (s *hurraAgentServer) GetDrives(ctx context.Context, drive *pb.GetDrivesReq
106110
// Determine available space (if partition is mounted, no way to know otherwise)
107111
if partition.MountPoint != "" {
108112
log.Tracef("Partition %s is mounted at '%s'. Attempting to find free space.", partition.Name, partition.MountPoint)
109-
cmd := exec.Command("sh", "-c", fmt.Sprintf("df -h %s | tail -n +2 | awk '{print $4}'", partition.MountPoint))
113+
cmd := exec.Command("sh", "-c", fmt.Sprintf("df %s | tail -n +2 | awk '{print $4}'", partition.MountPoint))
110114
output, err := cmd.Output()
111115
if err == nil {
112116
freespace, err := strconv.ParseUint(strings.Trim(strings.Trim(string(output), "Gi\n"), "G"), 10, 64)

0 commit comments

Comments
 (0)