mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-03 18:53:13 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			27 lines
		
	
	
		
			671 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			671 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package durations
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"strconv"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
// NewDurationFromArg returns a time.Duration from a configuration argument
 | 
						|
// (string) which has come from the Corefile. The argument has some basic
 | 
						|
// validation applied before returning a time.Duration. If the argument has no
 | 
						|
// time unit specified and is numeric the argument will be treated as seconds
 | 
						|
// rather than GO's default of nanoseconds.
 | 
						|
func NewDurationFromArg(arg string) (time.Duration, error) {
 | 
						|
	_, err := strconv.Atoi(arg)
 | 
						|
	if err == nil {
 | 
						|
		arg = arg + "s"
 | 
						|
	}
 | 
						|
 | 
						|
	d, err := time.ParseDuration(arg)
 | 
						|
	if err != nil {
 | 
						|
		return 0, fmt.Errorf("failed to parse duration '%s'", arg)
 | 
						|
	}
 | 
						|
 | 
						|
	return d, nil
 | 
						|
}
 |