path functions

gomplate’s path functions are split into 2 namespaces: - path, which is useful for manipulating slash-based (/) paths, such as in URLs - filepath, which should be used for local filesystem paths, especially when Windows paths may be involved.

This page documents the path namespace - see also the filepath documentation.

These functions are wrappers for Go’s path and path/filepath packages.

path.Base

Returns the last element of path. Trailing slashes are removed before extracting the last element. If the path is empty, Base returns .. If the path consists entirely of slashes, Base returns /.

A wrapper for Go’s path.Base function.

Usage

path.Base path 
path | path.Base  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ path.Base "/tmp/foo" }}'
foo

path.Clean

Clean returns the shortest path name equivalent to path by purely lexical processing.

A wrapper for Go’s path.Clean function.

Usage

path.Clean path 
path | path.Clean  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ path.Clean "/tmp//foo/../" }}'
/tmp

path.Dir

Returns all but the last element of path, typically the path’s directory.

A wrapper for Go’s path.Dir function.

Usage

path.Dir path 
path | path.Dir  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ path.Dir "/tmp/foo" }}'
/tmp

path.Ext

Returns the file name extension used by path.

A wrapper for Go’s path.Ext function.

Usage

path.Ext path 
path | path.Ext  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ path.Ext "/tmp/foo.csv" }}'
.csv

path.IsAbs

Reports whether the path is absolute.

A wrapper for Go’s path.IsAbs function.

Usage

path.IsAbs path 
path | path.IsAbs  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i 'the path is {{ if (path.IsAbs "/tmp/foo.csv") }}absolute{{else}}relative{{end}}'
the path is absolute
$ gomplate -i 'the path is {{ if (path.IsAbs "../foo.csv") }}absolute{{else}}relative{{end}}'
the path is relative

path.Join

Joins any number of path elements into a single path, adding a separating slash if necessary.

A wrapper for Go’s path.Join function.

Usage

path.Join elem... 

Arguments

name description
elem... (required) The path elements to join (0 or more)

Examples

$ gomplate -i '{{ path.Join "/tmp" "foo" "bar" }}'
/tmp/foo/bar

path.Match

Reports whether name matches the shell file name pattern.

A wrapper for Go’s path.Match function.

Usage

path.Match pattern path 

Arguments

name description
pattern (required) The pattern to match on
path (required) The path to match

Examples

$ gomplate -i '{{ path.Match "*.csv" "foo.csv" }}'
true

path.Split

Splits path immediately following the final slash, separating it into a directory and file name component.

The function returns an array with two values, the first being the directory, and the second the file.

A wrapper for Go’s path.Split function.

Usage

path.Split path 
path | path.Split  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ $p := path.Split "/tmp/foo" }}{{ $dir := index $p 0 }}{{ $file := index $p 1 }}dir is {{$dir}}, file is {{$file}}'
dir is /tmp/, file is foo