@@ -10,10 +10,8 @@ package cli
1010import (
1111 "errors"
1212 "fmt"
13- "io/ioutil"
1413 "os"
1514 "runtime"
16- "strconv"
1715 "strings"
1816 "time"
1917
@@ -23,6 +21,7 @@ import (
2321 "github.com/essentialkaos/ek/v12/options"
2422 "github.com/essentialkaos/ek/v12/pager"
2523 "github.com/essentialkaos/ek/v12/strutil"
24+ "github.com/essentialkaos/ek/v12/timeutil"
2625 "github.com/essentialkaos/ek/v12/usage"
2726 "github.com/essentialkaos/ek/v12/usage/completion/bash"
2827 "github.com/essentialkaos/ek/v12/usage/completion/fish"
@@ -129,7 +128,7 @@ var gradeNumMap = map[string]float64{
129128}
130129
131130var api * sslscan.API
132- var maxLeftToExpiry int64
131+ var maxLeftToExpiry time. Duration
133132var serverMessageShown bool
134133
135134var colorTagApp , colorTagVer string
@@ -148,7 +147,6 @@ func Run(gitRev string, gomod []byte) {
148147 }
149148
150149 configureUI ()
151- prepare ()
152150
153151 switch {
154152 case options .Has (OPT_COMPLETION ):
@@ -167,7 +165,22 @@ func Run(gitRev string, gomod []byte) {
167165 os .Exit (0 )
168166 }
169167
170- process (args )
168+ err := prepare ()
169+
170+ if err != nil {
171+ printError (err .Error ())
172+ os .Exit (1 )
173+ }
174+
175+ err , ok := process (args )
176+
177+ if err != nil {
178+ printError (err .Error ())
179+ }
180+
181+ if ! ok {
182+ os .Exit (1 )
183+ }
171184}
172185
173186// configureUI configures user interface
@@ -185,28 +198,29 @@ func configureUI() {
185198 case fmtc .Is256ColorsSupported ():
186199 colorTagApp , colorTagVer = "{*}{#99}" , "{#99}"
187200 default :
188- colorTagApp , colorTagVer = "{*}{b}" , "{c }"
201+ colorTagApp , colorTagVer = "{*}{b}" , "{b }"
189202 }
190203}
191204
192205// prepare prepares utility for processing data
193- func prepare () {
206+ func prepare () error {
194207 if ! options .Has (OPT_MAX_LEFT ) {
195- return
208+ return nil
196209 }
197210
198211 var err error
199212
200- maxLeftToExpiry , err = parseMaxLeft (options .GetS (OPT_MAX_LEFT ))
213+ maxLeftToExpiry , err = timeutil . ParseDuration (options .GetS (OPT_MAX_LEFT ), 'd' )
201214
202215 if err != nil {
203- printError (err .Error ())
204- os .Exit (1 )
216+ return err
205217 }
218+
219+ return nil
206220}
207221
208222// process starting request processing
209- func process (args options.Arguments ) {
223+ func process (args options.Arguments ) ( error , bool ) {
210224 var ok bool
211225 var err error
212226 var hosts []string
@@ -215,20 +229,23 @@ func process(args options.Arguments) {
215229
216230 if err != nil {
217231 if ! options .GetB (OPT_FORMAT ) {
218- printError ( err . Error ())
232+ return err , false
219233 }
220234
221- os . Exit ( 1 )
235+ return nil , false
222236 }
223237
224238 ok = true // By default everything is fine
225239
226240 if fsutil .CheckPerms ("FR" , args .Get (0 ).String ()) {
227241 hosts , err = readHostList (args .Get (0 ).String ())
228242
229- if err != nil && options .GetB (OPT_FORMAT ) {
230- printError (err .Error ())
231- os .Exit (1 )
243+ if err != nil {
244+ if ! options .GetB (OPT_FORMAT ) {
245+ return err , false
246+ }
247+
248+ return nil , false
232249 }
233250 } else {
234251 hosts = args .Strings ()
@@ -268,8 +285,10 @@ func process(args options.Arguments) {
268285 }
269286
270287 if ! ok {
271- os . Exit ( 1 )
288+ return nil , false
272289 }
290+
291+ return nil , true
273292}
274293
275294// check check some host
@@ -528,25 +547,17 @@ func getStatusInProgress(endpoints []*sslscan.EndpointInfo) string {
528547 return ""
529548}
530549
531- // readHostList read file with hosts
550+ // readHostList reads file with hosts
532551func readHostList (file string ) ([]string , error ) {
533552 var result []string
534553
535- fd , err := os .OpenFile (file , os .O_RDONLY , 0 )
536-
537- if err != nil {
538- return result , err
539- }
540-
541- defer fd .Close ()
542-
543- listData , err := ioutil .ReadAll (fd )
554+ listData , err := os .ReadFile (file )
544555
545556 if err != nil {
546- return result , err
557+ return nil , err
547558 }
548559
549- list := strings .Split (string (listData [:] ), "\n " )
560+ list := strings .Split (string (listData ), "\n " )
550561
551562 for _ , host := range list {
552563 if host != "" {
@@ -574,28 +585,6 @@ func appendEndpointsInfo(checkInfo *HostCheckInfo, endpoints []*sslscan.Endpoint
574585 }
575586}
576587
577- // parseMaxLeft parses max left option value
578- func parseMaxLeft (dur string ) (int64 , error ) {
579- tm := strutil .Tail (dur , 1 )
580- t := strings .Trim (dur , "dwmy" )
581- ti , err := strconv .ParseInt (t , 10 , 64 )
582-
583- if err != nil {
584- return - 1 , fmt .Errorf ("Invalid value for --max-left option: %s" , dur )
585- }
586-
587- switch strings .ToLower (tm ) {
588- case "w" :
589- return ti * 604800 , nil
590- case "m" :
591- return ti * 2592000 , nil
592- case "y" :
593- return ti * 31536000 , nil
594- default :
595- return ti * 86400 , nil
596- }
597- }
598-
599588// getNormGrade return grade or error
600589func getNormGrade (grade string ) string {
601590 switch grade {
0 commit comments