MCPcopy
hub / github.com/smallstep/cli / needsRenewalAction

Function needsRenewalAction

command/certificate/needsRenewal.go:144–228  ·  view source on GitHub ↗
(ctx *cli.Context)

Source from the content-addressed store, hash-verified

142}
143
144func needsRenewalAction(ctx *cli.Context) error {
145 if err := errs.NumberOfArguments(ctx, 1); err != nil {
146 return errs.NewExitError(err, 255)
147 }
148
149 var (
150 err error
151 certFile = ctx.Args().Get(0)
152 expiresIn = ctx.String("expires-in")
153 roots = ctx.String("roots")
154 serverName = ctx.String("servername")
155 bundle = ctx.Bool("bundle")
156 isVerbose = ctx.Bool("verbose")
157 )
158
159 var certs []*x509.Certificate
160 switch addr, isURL, err := trimURL(certFile); {
161 case err != nil:
162 return errs.NewExitError(err, 255)
163 case isURL:
164 certs, err = getPeerCertificates(addr, serverName, roots, false)
165 if err != nil {
166 return errs.NewExitError(err, 255)
167 }
168 default:
169 _, err = os.Stat(certFile)
170 switch {
171 case os.IsNotExist(err):
172 return errs.NewExitError(err, 2)
173 case err != nil:
174 return errs.NewExitError(err, 255)
175 default:
176 certs, err = pemutil.ReadCertificateBundle(certFile)
177 if err != nil {
178 return errs.NewExitError(err, 255)
179 }
180 }
181 }
182
183 var (
184 percentThreshold int
185 duration time.Duration
186 isPercent = expiresIn == "" || strings.HasSuffix(expiresIn, "%")
187 )
188
189 if isPercent {
190 if expiresIn == "" {
191 percentThreshold = defaultPercentUsedThreshold
192 } else {
193 percentThreshold, err = strconv.Atoi(strings.TrimSuffix(expiresIn, "%"))
194 if err != nil {
195 return errs.NewExitError(errs.InvalidFlagValue(ctx, "expires-in", expiresIn, ""), 255)
196 }
197 }
198 if percentThreshold > 100 || percentThreshold < 0 {
199 return errs.NewExitError(errs.InvalidFlagValueMsg(ctx, "expires-in", expiresIn, "value must be in range 0-100%"), 255)
200 }
201 } else {

Callers

nothing calls this directly

Calls 4

trimURLFunction · 0.85
getPeerCertificatesFunction · 0.85
isVerboseExitFunction · 0.70
StringMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…