github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/utils/path/join.go (about)

     1  package path
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/lmorg/murex/utils/consts"
     8  )
     9  
    10  func Join(a []string) (s string) {
    11  	switch {
    12  	case len(a) == 0:
    13  		return consts.PathSlash
    14  
    15  	case a[0] == consts.PathSlash:
    16  		s = strings.Join(a[1:], consts.PathSlash)
    17  		s = consts.PathSlash + s
    18  
    19  	default:
    20  		s = strings.Join(a, consts.PathSlash)
    21  	}
    22  
    23  	if s != consts.PathSlash {
    24  		if f, _ := os.Stat(s); f != nil && f.IsDir() {
    25  			s += consts.PathSlash
    26  		}
    27  	}
    28  	return s
    29  }