Skip to content

Commit 13b2268

Browse files
ci: add GitHub Actions workflow (format/vet/lint/test) (#27)
* chore: run gofmt on several files * ci: add GitHub Actions workflow (format/vet/lint/test) * chore(go): bump module Go version to 1.23 and update docs Signed-off-by: Aryan Sharma <aryan@example.com> * ci(template): update GitHub Actions Go setup to 1.23 in template Signed-off-by: Aryan Sharma <aryan@example.com> * ci: upgrade toolchain and fix docker workflow Signed-off-by: aryansharma9917 <sharmaaryan9837@gmail.com> * ci: rerun checks --------- Signed-off-by: Aryan Sharma <aryan@example.com> Signed-off-by: aryansharma9917 <sharmaaryan9837@gmail.com>
1 parent d58b167 commit 13b2268

15 files changed

Lines changed: 220 additions & 66 deletions

File tree

.github/workflows/ci.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
ci:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
with:
17+
fetch-depth: 0
18+
19+
- name: Set up Go
20+
uses: actions/setup-go@v5
21+
with:
22+
go-version: '1.25'
23+
24+
- name: Check formatting
25+
run: |
26+
unformatted=$(gofmt -l .)
27+
if [ -n "$unformatted" ]; then
28+
echo "Unformatted files detected:"; echo "$unformatted"; exit 1
29+
fi
30+
31+
- name: Run go vet
32+
run: go vet ./...
33+
34+
- name: Install golangci-lint
35+
run: |
36+
mkdir -p ./bin
37+
GOBIN=$(pwd)/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
38+
39+
- name: Run golangci-lint (verbose) and save log
40+
run: |
41+
set +e
42+
mkdir -p artifacts
43+
./bin/golangci-lint run ./... --verbose > artifacts/golangci.log 2>&1 || true
44+
rc=$?
45+
cat artifacts/golangci.log
46+
echo $rc > artifacts/golangci_exit
47+
48+
- name: Upload golangci-lint log
49+
uses: actions/upload-artifact@v4
50+
with:
51+
name: golangci-log
52+
path: artifacts/golangci.log
53+
54+
- name: Fail if golangci-lint reported issues
55+
run: |
56+
rc=$(cat artifacts/golangci_exit || echo 0)
57+
if [ "$rc" != "0" ]; then
58+
echo "golangci-lint failed with exit code $rc"
59+
exit $rc
60+
fi
61+
62+
- name: Tidy modules
63+
run: go mod tidy
64+
65+
- name: Build
66+
run: go build -v -o codewise main.go
67+
68+
- name: Test
69+
run: go test ./... -v

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Stage 1: Build the Go binary
2-
FROM golang:1.22-alpine AS builder
2+
FROM golang:1.25-alpine AS builder
33

44
# Set the working directory
55
WORKDIR /app
@@ -15,7 +15,7 @@ COPY . .
1515
RUN go build -o codewise main.go
1616

1717
# Stage 2: Minimal runtime image
18-
FROM alpine:latest
18+
FROM alpine:3.22
1919

2020
# Create a non-root user for better security (optional)
2121
RUN adduser -D appuser

PROJECT_OVERVIEW.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Terminal User
8080
## Tech Stack
8181

8282
Primary:
83-
- Go 1.20
83+
- Go 1.22
8484
- Cobra CLI framework (`github.com/spf13/cobra`)
8585
- YAML support (`gopkg.in/yaml.v3`)
8686
- TOML support (`github.com/BurntSushi/toml`)

cmd/docker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ var dockerBuildCmd = &cobra.Command{
4040
Short: "Build Docker image",
4141
RunE: func(cmd *cobra.Command, args []string) error {
4242
if err := docker.BuildDockerImage(imageTag); err != nil {
43-
return LogError("Docker build failed: %v", err)
43+
return LogErrorf("Docker build failed: %v", err)
4444
}
4545
LogSuccess("Docker image built successfully")
4646
return nil

cmd/env_create.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ var envCreateCmd = &cobra.Command{
2020

2121
if interactive {
2222
if err := createEnvInteractive(name); err != nil {
23-
return LogError("error: %v", err)
23+
return LogErrorf("error: %v", err)
2424
}
2525
LogSuccess("environment %s created", name)
2626
return nil
2727
}
2828

2929
if err := env.CreateEnv(name, env.CreateOptions{}); err != nil {
30-
return LogError("error: %v", err)
30+
return LogErrorf("error: %v", err)
3131
}
3232
LogSuccess("environment %s created", name)
3333
return nil

cmd/env_delete.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ var envDeleteCmd = &cobra.Command{
2323
Message: fmt.Sprintf("Delete environment %q?", name),
2424
}
2525
if err := survey.AskOne(prompt, &confirm); err != nil {
26-
return LogError("error: %v", err)
26+
return LogErrorf("error: %v", err)
2727
}
2828
if !confirm {
2929
return LogError("aborted")
3030
}
3131
}
3232

3333
if err := env.DeleteEnv(name, env.DeleteOptions{Force: yes}); err != nil {
34-
return LogError("error: %v", err)
34+
return LogErrorf("error: %v", err)
3535
}
3636

3737
LogSuccess("environment %s deleted", name)

cmd/errors.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
package cmd
22

33
import (
4+
"errors"
45
"fmt"
56
"os"
67
)
78

89
// ExitError prints an error message and exits with status code 1.
9-
func ExitError(format string, args ...interface{}) error {
10-
fmt.Fprintf(os.Stderr, "error: %s\n", fmt.Sprintf(format, args...))
11-
return fmt.Errorf(format, args...)
10+
func ExitError(message string) error {
11+
fmt.Fprintf(os.Stderr, "error: %s\n", message)
12+
return errors.New(message)
1213
}
1314

1415
// LogError prints an info/warning message but does not exit.
15-
func LogError(format string, args ...interface{}) error {
16+
func LogError(message string) error {
17+
fmt.Fprintf(os.Stderr, "info: %s\n", message)
18+
return errors.New(message)
19+
}
20+
21+
// LogErrorf prints a formatted info/warning message but does not exit.
22+
func LogErrorf(format string, args ...interface{}) error {
1623
msg := fmt.Sprintf(format, args...)
1724
fmt.Fprintf(os.Stderr, "info: %s\n", msg)
18-
return fmt.Errorf(msg)
25+
return errors.New(msg)
1926
}
2027

2128
// LogInfo prints an info message to stderr.

cmd/template.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,30 @@ var templateCmd = &cobra.Command{
1919
var githubActionCmd = &cobra.Command{
2020
Use: "github-action",
2121
Short: "Generate a GitHub Actions CI workflow",
22-
Run: func(cmd *cobra.Command, args []string) {
22+
RunE: func(cmd *cobra.Command, args []string) error {
2323
data := generator.TemplateData{
2424
AppName: appName,
2525
Repo: repoURL,
2626
}
27-
generator.RenderTemplate("github-action", outputPath, data)
27+
if err := generator.RenderTemplate("github-action", outputPath, data); err != nil {
28+
return ExitError(err.Error())
29+
}
30+
return nil
2831
},
2932
}
3033

3134
var argoAppCmd = &cobra.Command{
3235
Use: "argo-app",
3336
Short: "Generate an ArgoCD application manifest",
34-
Run: func(cmd *cobra.Command, args []string) {
37+
RunE: func(cmd *cobra.Command, args []string) error {
3538
data := generator.TemplateData{
3639
AppName: appName,
3740
Repo: repoURL,
3841
}
39-
generator.RenderTemplate("argo-app", outputPath, data)
42+
if err := generator.RenderTemplate("argo-app", outputPath, data); err != nil {
43+
return ExitError(err.Error())
44+
}
45+
return nil
4046
},
4147
}
4248

@@ -52,6 +58,8 @@ func init() {
5258
cmd.Flags().StringVarP(&outputPath, "output", "o", "", "Output file path (required)")
5359
cmd.Flags().StringVar(&appName, "app-name", "myapp", "Application name for template")
5460
cmd.Flags().StringVar(&repoURL, "repo", "https://github.com/example/repo", "Repository URL for template")
55-
cmd.MarkFlagRequired("output")
61+
if err := cmd.MarkFlagRequired("output"); err != nil {
62+
panic(err)
63+
}
5664
}
5765
}

go.mod

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,39 @@
11
module github.com/aryansharma9917/codewise-cli
22

3-
go 1.20
3+
go 1.25.0
44

55
require (
66
github.com/AlecAivazis/survey/v2 v2.3.7
77
github.com/clbanning/mxj/v2 v2.7.0
8-
github.com/spf13/cobra v1.6.1
8+
github.com/spf13/cobra v1.10.2
99
github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e
1010
)
1111

1212
replace github.com/aryansharma9917/codewise-cli => ./
1313

1414
require (
1515
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
16-
github.com/mattn/go-colorable v0.1.2 // indirect
17-
github.com/mattn/go-isatty v0.0.8 // indirect
18-
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
19-
golang.org/x/sys v0.5.0 // indirect
20-
golang.org/x/term v0.5.0 // indirect
21-
golang.org/x/text v0.7.0 // indirect
16+
github.com/mattn/go-colorable v0.1.14 // indirect
17+
github.com/mattn/go-isatty v0.0.22 // indirect
18+
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
19+
golang.org/x/sys v0.45.0 // indirect
20+
golang.org/x/term v0.43.0 // indirect
21+
golang.org/x/text v0.37.0 // indirect
2222
)
2323

2424
require (
25-
github.com/BurntSushi/toml v1.5.0
25+
github.com/BurntSushi/toml v1.6.0
2626
github.com/kr/pretty v0.3.0 // indirect
2727
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
2828
)
2929

3030
require (
31-
github.com/google/go-cmp v0.6.0 // indirect
3231
github.com/google/go-github v17.0.0+incompatible // indirect
33-
github.com/google/go-querystring v1.1.0 // indirect
34-
github.com/hashicorp/go-version v1.6.0 // indirect
35-
github.com/inconshreveable/mousetrap v1.0.1 // indirect
36-
github.com/spf13/pflag v1.0.5 // indirect
37-
golang.org/x/net v0.6.0 // indirect
32+
github.com/google/go-querystring v1.2.0 // indirect
33+
github.com/hashicorp/go-version v1.9.0 // indirect
34+
github.com/inconshreveable/mousetrap v1.1.0 // indirect
35+
github.com/spf13/pflag v1.0.10 // indirect
36+
golang.org/x/net v0.55.0 // indirect
3837
gopkg.in/yaml.v3 v3.0.1
3938
)
4039

go.sum

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,30 @@
11
github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
22
github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo=
3-
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
4-
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
3+
github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
4+
github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
55
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s=
66
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
77
github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
88
github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
9-
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
9+
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
1010
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
1111
github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI=
1212
github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
1313
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1414
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1515
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
16-
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
1716
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
1817
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
1918
github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=
2019
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
21-
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
22-
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
23-
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
24-
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
20+
github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0=
21+
github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU=
22+
github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA=
23+
github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
2524
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog=
2625
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
27-
github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
28-
github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
26+
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
27+
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
2928
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
3029
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
3130
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -35,35 +34,40 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
3534
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
3635
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
3736
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
38-
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
3937
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
40-
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
38+
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
39+
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
4140
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
42-
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
41+
github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
42+
github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
4343
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
44+
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
45+
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
4446
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4547
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4648
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
4749
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
4850
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
49-
github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=
50-
github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY=
51-
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
52-
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
51+
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
52+
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
53+
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
54+
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
55+
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
5356
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
5457
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
5558
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
5659
github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e h1:IWllFTiDjjLIf2oeKxpIUmtiDV5sn71VgeQgg6vcE7k=
5760
github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e/go.mod h1:d7u6HkTYKSv5m6MCKkOQlHwaShTMl3HjqSGW3XtVhXM=
5861
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
62+
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
5963
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
6064
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
6165
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
6266
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
6367
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
6468
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
65-
golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q=
66-
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
69+
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
70+
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
6771
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
6872
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
6973
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -72,23 +76,22 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
7276
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
7377
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
7478
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
75-
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
76-
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
79+
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
80+
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
7781
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
7882
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
79-
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
80-
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
83+
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
84+
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
8185
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
8286
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
8387
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
8488
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
85-
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
86-
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
89+
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
90+
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
8791
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
8892
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
8993
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
9094
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
91-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
9295
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
9396
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
9497
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

0 commit comments

Comments
 (0)