(ctx *cli.Context)
| 142 | } |
| 143 | |
| 144 | func 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 { |
nothing calls this directly
no test coverage detected
searching dependent graphs…