Skip to content

Commit ff1d451

Browse files
authored
Merge pull request #117 from essentialkaos/develop
Version 2.7.5
2 parents dacc998 + 2a10e6e commit ff1d451

File tree

9 files changed

+88
-82
lines changed

9 files changed

+88
-82
lines changed

.github/workflows/ci.yml

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ concurrency:
2424
group: ${{ github.workflow }}-${{ github.ref }}
2525
cancel-in-progress: true
2626

27-
env:
28-
SRC_DIR: src/github.com/${{ github.repository }}
29-
3027
jobs:
3128
Go:
3229
name: Go
@@ -37,22 +34,18 @@ jobs:
3734
go: [ '1.19.x', '1.20.x' ]
3835

3936
steps:
37+
- name: Checkout
38+
uses: actions/checkout@v3
39+
4040
- name: Set up Go
4141
uses: actions/setup-go@v4
4242
with:
4343
go-version: ${{ matrix.go }}
4444

45-
- name: Checkout
46-
uses: actions/checkout@v3
47-
with:
48-
path: ${{env.SRC_DIR}}
49-
5045
- name: Download dependencies
51-
working-directory: ${{env.SRC_DIR}}
5246
run: make deps
5347

5448
- name: Build binary
55-
working-directory: ${{env.SRC_DIR}}
5649
run: make all
5750

5851
Aligo:
@@ -62,24 +55,20 @@ jobs:
6255
needs: Go
6356

6457
steps:
58+
- name: Checkout
59+
uses: actions/checkout@v3
60+
6561
- name: Set up Go
6662
uses: actions/setup-go@v4
6763
with:
6864
go-version: '1.19.x'
6965

70-
- name: Checkout
71-
uses: actions/checkout@v3
72-
with:
73-
path: ${{env.SRC_DIR}}
74-
7566
- name: Download dependencies
76-
working-directory: ${{env.SRC_DIR}}
7767
run: make deps
7868

7969
- name: Check Golang sources with Aligo
80-
uses: essentialkaos/aligo-action@v1
70+
uses: essentialkaos/aligo-action@v2
8171
with:
82-
path: ${{env.SRC_DIR}}
8372
files: ./...
8473

8574
Perfecto:
@@ -119,6 +108,19 @@ jobs:
119108
with:
120109
files: .docker/*.docker
121110

111+
Typos:
112+
name: Typos
113+
runs-on: ubuntu-latest
114+
115+
needs: Go
116+
117+
steps:
118+
- name: Checkout
119+
uses: actions/checkout@v3
120+
121+
- name: Check spelling
122+
uses: crate-ci/typos@master
123+
122124
DockerBuild:
123125
name: Docker Build Check
124126
runs-on: ubuntu-latest

.typos.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[files]
2+
extend-exclude = ["go.sum"]

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818

1919
### Usage demo
2020

21-
[![demo](https://gh.kaos.st/sslcli-200.gif)](#usage-demo)
21+
[![demo](https://gh.kaos.st/sslcli-275.gif)](#usage-demo)
2222

2323
### Installation
2424

2525
#### From source
2626

27-
To build the SSLScan Client from scratch, make sure you have a working Go 1.19+ workspace ([instructions](https://golang.org/doc/install)), then:
27+
To build the SSLScan Client from scratch, make sure you have a working Go 1.19+ workspace ([instructions](https://go.dev/doc/install)), then:
2828

2929
```
3030
go install github.com/essentialkaos/sslcli@latest
@@ -50,10 +50,8 @@ bash <(curl -fsSL https://apps.kaos.st/get) sslcli
5050
The latest version of `sslcli` also available as container image on [GitHub Container Registry](https://kaos.sh/p/sslcli) and [Docker Hub](https://kaos.sh/d/sslcli):
5151

5252
```bash
53-
podman pull ghcr.io/essentialkaos/sslcli:latest
5453
podman run --rm -it ghcr.io/essentialkaos/sslcli:latest mydomain.com
5554
# or
56-
docker pull ghcr.io/essentialkaos/sslcli:latest
5755
docker run --rm -it ghcr.io/essentialkaos/sslcli:latest mydomain.com
5856
```
5957

cli/cli.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import (
3838

3939
const (
4040
APP = "SSLScan Client"
41-
VER = "2.7.4"
41+
VER = "2.7.5"
4242
DESC = "Command-line client for the SSL Labs API"
4343
)
4444

@@ -85,9 +85,9 @@ type HostCheckInfo struct {
8585
}
8686

8787
type EndpointCheckInfo struct {
88-
IPAdress string `json:"ipAddress"`
89-
Grade string `json:"grade"`
90-
GradeNum float64 `json:"gradeNum"`
88+
IPAddress string `json:"ipAddress"`
89+
Grade string `json:"grade"`
90+
GradeNum float64 `json:"gradeNum"`
9191
}
9292

9393
// ////////////////////////////////////////////////////////////////////////////////// //
@@ -104,7 +104,7 @@ var optMap = options.Map{
104104
OPT_NOTIFY: {Type: options.BOOL},
105105
OPT_NO_COLOR: {Type: options.BOOL},
106106
OPT_HELP: {Type: options.BOOL},
107-
OPT_VER: {Type: options.BOOL},
107+
OPT_VER: {Type: options.MIXED},
108108

109109
OPT_VERB_VER: {Type: options.BOOL},
110110
OPT_COMPLETION: {},
@@ -154,7 +154,7 @@ func Run(gitRev string, gomod []byte) {
154154
printMan()
155155
os.Exit(0)
156156
case options.GetB(OPT_VER):
157-
genAbout(gitRev).Print()
157+
genAbout(gitRev).Print(options.GetS(OPT_VER))
158158
os.Exit(0)
159159
case options.GetB(OPT_VERB_VER):
160160
support.Print(APP, VER, gitRev, gomod)
@@ -182,10 +182,6 @@ func preConfigureUI() {
182182
}
183183
}
184184

185-
if !fsutil.IsCharacterDevice("/dev/stdout") && os.Getenv("FAKETTY") == "" {
186-
fmtc.DisableColors = true
187-
}
188-
189185
if os.Getenv("NO_COLOR") != "" {
190186
fmtc.DisableColors = true
191187
}
@@ -477,7 +473,7 @@ func getColoredGrades(endpoints []*sslscan.EndpointInfo) string {
477473
var result string
478474

479475
for _, endpoint := range endpoints {
480-
result += getColoredGrade(endpoint.Grade) + "{s-}/" + endpoint.IPAdress + "{!} "
476+
result += getColoredGrade(endpoint.Grade) + "{s-}/" + endpoint.IPAddress + "{!} "
481477
}
482478

483479
return result
@@ -572,9 +568,9 @@ func appendEndpointsInfo(checkInfo *HostCheckInfo, endpoints []*sslscan.Endpoint
572568
grade := getNormGrade(endpoint.Grade)
573569

574570
checkInfo.Endpoints = append(checkInfo.Endpoints, &EndpointCheckInfo{
575-
IPAdress: endpoint.IPAdress,
576-
Grade: grade,
577-
GradeNum: gradeNumMap[grade],
571+
IPAddress: endpoint.IPAddress,
572+
Grade: grade,
573+
GradeNum: gradeNumMap[grade],
578574
})
579575
}
580576
}

cli/details.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414

1515
"github.com/essentialkaos/ek/v12/fmtc"
1616
"github.com/essentialkaos/ek/v12/fmtutil"
17+
"github.com/essentialkaos/ek/v12/httputil"
1718
"github.com/essentialkaos/ek/v12/pluralize"
1819
"github.com/essentialkaos/ek/v12/sliceutil"
1920
"github.com/essentialkaos/ek/v12/strutil"
@@ -74,7 +75,7 @@ func printDetailedInfo(ap *sslscan.AnalyzeProgress, fromCache bool) {
7475
printCertificateInfo(info.Certs, info.Endpoints)
7576

7677
for index, endpoint := range info.Endpoints {
77-
fmtc.Printf("\n{c*} %s {!*}#%d (%s){!}\n", info.Host, index+1, endpoint.IPAdress)
78+
fmtc.Printf("\n{c*} %s {!*}#%d (%s){!}\n", info.Host, index+1, endpoint.IPAddress)
7879
printDetailedEndpointInfo(endpoint, info.Certs)
7980
}
8081
}
@@ -333,8 +334,9 @@ func printCertValidityInfo(cert *sslscan.Cert) {
333334
)
334335
} else {
335336
fmtc.Printf(
336-
"%s {s-}(expires in %s){!}\n",
337+
"%s {s-}(expires in %s %s){!}\n",
337338
timeutil.Format(validUntilDate, "%Y/%m/%d %H:%M:%S"),
339+
fmtutil.PrettyNum(validDays),
338340
pluralize.Pluralize(int(validDays), "day", "days"),
339341
)
340342
}
@@ -503,8 +505,9 @@ func printChainCertInfo(cert *sslscan.Cert) {
503505
fmtc.Printf(" %-24s {s}|{!} {s-}Pin: %s{!}\n", "", cert.PINSHA256)
504506

505507
fmtc.Printf(
506-
" %-24s {s}|{!} %s {s-}(expires in %s){!}\n", "Valid until",
508+
" %-24s {s}|{!} %s {s-}(expires in %s %s){!}\n", "Valid until",
507509
timeutil.Format(validUntilDate, "%Y/%m/%d %H:%M:%S"),
510+
fmtutil.PrettyNum(validDays),
508511
pluralize.Pluralize(int(validDays), "day", "days"),
509512
)
510513

@@ -637,9 +640,19 @@ func printSimulationInfo(sim *sslscan.SIM, suites []*sslscan.ProtocolSuites) {
637640
}
638641

639642
if sim.Client.IsReference {
640-
fmtc.Printf(" %-29s {s}|{!} ", sim.Client.Name+" "+sim.Client.Version+" "+fmtc.Sprintf("{g}R"))
643+
fmtc.Printf(
644+
" %s {s}|{!} ",
645+
fmtutil.Align(fmtc.Sprintf(
646+
"%s %s {g}R{!}", sim.Client.Name, sim.Client.Version,
647+
), fmtutil.LEFT, 20),
648+
)
641649
} else {
642-
fmtc.Printf(" %-20s {s}|{!} ", sim.Client.Name+" "+sim.Client.Version)
650+
fmtc.Printf(
651+
" %s {s}|{!} ",
652+
fmtutil.Align(fmtc.Sprintf(
653+
"%s %s", sim.Client.Name, sim.Client.Version,
654+
), fmtutil.LEFT, 20),
655+
)
643656
}
644657

645658
switch protocolsNames[sim.ProtocolID] {
@@ -1178,7 +1191,11 @@ func printTestInfo(info *sslscan.EndpointInfo) {
11781191
if details.HTTPStatusCode == 0 {
11791192
fmtc.Printf(" %-24s {s}|{!} {y}Request failed{!}\n", "HTTP status code")
11801193
} else {
1181-
fmtc.Printf(" %-24s {s}|{!} %d\n", "HTTP status code", details.HTTPStatusCode)
1194+
fmtc.Printf(
1195+
" %-24s {s}|{!} %d {s-}(%s){!}\n", "HTTP status code",
1196+
details.HTTPStatusCode,
1197+
httputil.GetDescByCode(details.HTTPStatusCode),
1198+
)
11821199
}
11831200
}
11841201

@@ -1506,7 +1523,8 @@ func getExpiryMessage(ap *sslscan.AnalyzeProgress, dur int64) string {
15061523
validDays := (validUntilDate.Unix() - time.Now().Unix()) / 86400
15071524

15081525
return fmt.Sprintf(
1509-
" {r}(expires in %s){!}",
1526+
" {r}(expires in %s %s){!}",
1527+
fmtutil.PrettyNum(validDays),
15101528
pluralize.Pluralize(int(validDays), "day", "days"),
15111529
)
15121530
}

cli/encoder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func encodeAsXML(checksInfo []*HostCheckInfo) {
5757
for _, endpoint := range info.Endpoints {
5858
fmt.Printf(
5959
" <endpoint ip=\"%s\" grade=\"%s\" grade=\"%.1f\" />\n",
60-
endpoint.IPAdress, endpoint.Grade, endpoint.GradeNum,
60+
endpoint.IPAddress, endpoint.Grade, endpoint.GradeNum,
6161
)
6262
}
6363

@@ -84,7 +84,7 @@ func encodeAsYAML(checksInfo []*HostCheckInfo) {
8484
fmt.Println(" -")
8585
fmt.Printf(" grade: %s\n", endpoint.Grade)
8686
fmt.Printf(" gradeNum: %.1f\n", endpoint.GradeNum)
87-
fmt.Printf(" ipAddress: \"%s\"\n", endpoint.IPAdress)
87+
fmt.Printf(" ipAddress: \"%s\"\n", endpoint.IPAddress)
8888
}
8989

9090
fmt.Printf(" host: %s\n", info.Host)

common/sslcli.spec

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
Summary: Pretty awesome command-line client for public SSLLabs API
1212
Name: sslcli
13-
Version: 2.7.4
13+
Version: 2.7.5
1414
Release: 0%{?dist}
1515
Group: Applications/System
1616
License: Apache License, Version 2.0
@@ -22,7 +22,7 @@ Source100: checksum.sha512
2222

2323
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
2424

25-
BuildRequires: golang >= 1.19
25+
BuildRequires: golang >= 1.20
2626

2727
Provides: %{name} = %{version}-%{release}
2828

@@ -101,6 +101,11 @@ fi
101101
################################################################################
102102

103103
%changelog
104+
* Thu Apr 27 2023 Anton Novojilov <andy@essentialkaos.com> - 2.7.5-0
105+
- Fixed the bug with showing the number of certificate validity days
106+
- Fixed the bug with text alignment if colors are disabled
107+
- Typos fixed
108+
104109
* Mon Mar 06 2023 Anton Novojilov <andy@essentialkaos.com> - 2.7.4-0
105110
- Added verbose info output
106111
- Dependencies update
@@ -212,7 +217,7 @@ fi
212217

213218
* Tue Oct 11 2016 Anton Novojilov <andy@essentialkaos.com> - 1.1.0-0
214219
- EK package updated to v5
215-
- SSLScan package udated to v2
220+
- SSLScan package updated to v2
216221

217222
* Fri Sep 23 2016 Anton Novojilov <andy@essentialkaos.com> - 1.0.2-0
218223
- Minor UI improvements

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ module github.com/essentialkaos/sslcli
33
go 1.19
44

55
require (
6-
github.com/essentialkaos/depsy v1.0.0
7-
github.com/essentialkaos/ek/v12 v12.63.0
8-
github.com/essentialkaos/sslscan/v13 v13.1.4
6+
github.com/essentialkaos/depsy v1.1.0
7+
github.com/essentialkaos/ek/v12 v12.67.0
8+
github.com/essentialkaos/sslscan/v13 v13.2.0
99
)
1010

1111
require (
1212
github.com/andybalholm/brotli v1.0.5 // indirect
13-
github.com/klauspost/compress v1.16.0 // indirect
13+
github.com/klauspost/compress v1.16.5 // indirect
1414
github.com/valyala/bytebufferpool v1.0.0 // indirect
15-
github.com/valyala/fasthttp v1.44.0 // indirect
16-
golang.org/x/sys v0.6.0 // indirect
15+
github.com/valyala/fasthttp v1.47.0 // indirect
16+
golang.org/x/sys v0.8.0 // indirect
1717
)

go.sum

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,20 @@
1-
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
21
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
32
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
43
github.com/essentialkaos/check v1.4.0 h1:kWdFxu9odCxUqo1NNFNJmguGrDHgwi3A8daXX1nkuKk=
5-
github.com/essentialkaos/depsy v1.0.0 h1:FikBtTnNhk+xFO/hFr+CfiKs6QnA3wMD6tGL0XTEUkc=
6-
github.com/essentialkaos/depsy v1.0.0/go.mod h1:XVsB2eVUonEzmLKQP3ig2P6v2+WcHVgJ10zm0JLqFMM=
7-
github.com/essentialkaos/ek/v12 v12.63.0 h1:9yaEu5W3bx//9y52ShqYCoFDKOcwEdrnvgSkUYyatgI=
8-
github.com/essentialkaos/ek/v12 v12.63.0/go.mod h1:9MlSuHpewu7OZ9tM9dLFHvoA8dflBIUPCA0Ctt97wRs=
9-
github.com/essentialkaos/sslscan/v13 v13.1.4 h1:MQaaVdp7TRBP92ci90vIq1x9BZfKfrfdMMdhAOSrrsY=
10-
github.com/essentialkaos/sslscan/v13 v13.1.4/go.mod h1:xAzDhR8d+QyugSLJoWvUH1MCz7seaLUwayIqRCEjFGg=
11-
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
12-
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
13-
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
4+
github.com/essentialkaos/depsy v1.1.0 h1:U6dp687UkQwXlZU17Hg2KMxbp3nfZAoZ8duaeUFYvJI=
5+
github.com/essentialkaos/depsy v1.1.0/go.mod h1:kpiTAV17dyByVnrbNaMcZt2jRwvuXClUYOzpyJQwtG8=
6+
github.com/essentialkaos/ek/v12 v12.67.0 h1:ii15t0O+3Mu7uI3Te5X5BIqYXi1V7ovtSIYi5LyiltU=
7+
github.com/essentialkaos/ek/v12 v12.67.0/go.mod h1:sRgw+F7PeeoNsmLLVMKy5ccugwGSljk8/rTXC9dyT+M=
8+
github.com/essentialkaos/sslscan/v13 v13.2.0 h1:myHahuvrPkjIL9PKGeaBz+8NglpWE55WsvRgQ1QDS8A=
9+
github.com/essentialkaos/sslscan/v13 v13.2.0/go.mod h1:8gPBJnA41juOmUsqGol0dJysXJ1+baXNgGqGp0AYvZs=
10+
github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
11+
github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
1412
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
1513
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
16-
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
14+
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
1715
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
1816
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
19-
github.com/valyala/fasthttp v1.44.0 h1:R+gLUhldIsfg1HokMuQjdQ5bh9nuXHPIfvkYUu9eR5Q=
20-
github.com/valyala/fasthttp v1.44.0/go.mod h1:f6VbjjoI3z1NDOZOv17o6RvtRSWxC77seBFc2uWtgiY=
21-
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
22-
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
23-
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
24-
golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
25-
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
26-
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
27-
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
28-
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
29-
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
30-
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
31-
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
32-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
33-
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
34-
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
35-
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
17+
github.com/valyala/fasthttp v1.47.0 h1:y7moDoxYzMooFpT5aHgNgVOQDrS3qlkfiP9mDtGGK9c=
18+
github.com/valyala/fasthttp v1.47.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
19+
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
20+
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

0 commit comments

Comments
 (0)