github.com/sijibomii/docker@v0.0.0-20231230191044-5cf6ca554647/pkg/discovery/generator.go (about)

     1  package discovery
     2  
     3  import (
     4  	"fmt"
     5  	"regexp"
     6  	"strconv"
     7  )
     8  
     9  // Generate takes care of IP generation
    10  func Generate(pattern string) []string {
    11  	re, _ := regexp.Compile(`\[(.+):(.+)\]`)
    12  	submatch := re.FindStringSubmatch(pattern)
    13  	if submatch == nil {
    14  		return []string{pattern}
    15  	}
    16  
    17  	from, err := strconv.Atoi(submatch[1])
    18  	if err != nil {
    19  		return []string{pattern}
    20  	}
    21  	to, err := strconv.Atoi(submatch[2])
    22  	if err != nil {
    23  		return []string{pattern}
    24  	}
    25  
    26  	template := re.ReplaceAllString(pattern, "%d")
    27  
    28  	var result []string
    29  	for val := from; val <= to; val++ {
    30  		entry := fmt.Sprintf(template, val)
    31  		result = append(result, entry)
    32  	}
    33  
    34  	return result
    35  }