filepath 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 filepath namespace - see also the path documentation.

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

filepath.Base

Returns the last element of path. Trailing path separators are removed before extracting the last element. If the path is empty, Base returns .. If the path consists entirely of separators, Base returns a single separator.

A wrapper for Go’s filepath.Base function.

Usage

filepath.Base path 
path | filepath.Base  

Arguments

name description
path (required) The input path

Examples

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

filepath.Clean

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

A wrapper for Go’s filepath.Clean function.

Usage

filepath.Clean path 
path | filepath.Clean  

Arguments

name description
path (required) The input path

Examples

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

filepath.Dir

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

A wrapper for Go’s filepath.Dir function.

Usage

filepath.Dir path 
path | filepath.Dir  

Arguments

name description
path (required) The input path

Examples

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

filepath.Ext

Returns the file name extension used by path.

A wrapper for Go’s filepath.Ext function.

Usage

filepath.Ext path 
path | filepath.Ext  

Arguments

name description
path (required) The input path

Examples

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

filepath.FromSlash

Returns the result of replacing each slash (/) character in the path with the platform’s separator character.

A wrapper for Go’s filepath.FromSlash function.

Usage

filepath.FromSlash path 
path | filepath.FromSlash  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ filepath.FromSlash "/foo/bar" }}'
/foo/bar
C:\> gomplate.exe -i '{{ filepath.FromSlash "/foo/bar" }}'
C:\foo\bar

filepath.IsAbs

Reports whether the path is absolute.

A wrapper for Go’s filepath.IsAbs function.

Usage

filepath.IsAbs path 
path | filepath.IsAbs  

Arguments

name description
path (required) The input path

Examples

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

filepath.Join

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

A wrapper for Go’s filepath.Join function.

Usage

filepath.Join elem... 

Arguments

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

Examples

$ gomplate -i '{{ filepath.Join "/tmp" "foo" "bar" }}'
/tmp/foo/bar
C:\> gomplate.exe -i '{{ filepath.Join "C:\tmp" "foo" "bar" }}'
C:\tmp\foo\bar

filepath.Match

Reports whether name matches the shell file name pattern.

A wrapper for Go’s filepath.Match function.

Usage

filepath.Match pattern path 

Arguments

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

Examples

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

filepath.Rel

Returns a relative path that is lexically equivalent to targetpath when joined to basepath with an intervening separator.

A wrapper for Go’s filepath.Rel function.

Usage

filepath.Rel basepath targetpath 

Arguments

name description
basepath (required) The base path
targetpath (required) The target path

Examples

$ gomplate -i '{{ filepath.Rel "/a" "/a/b/c" }}'
b/c

filepath.Split

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

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

A wrapper for Go’s filepath.Split function.

Usage

filepath.Split path 
path | filepath.Split  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ $p := filepath.Split "/tmp/foo" }}{{ $dir := index $p 0 }}{{ $file := index $p 1 }}dir is {{$dir}}, file is {{$file}}'
dir is /tmp/, file is foo
C:\> gomplate.exe -i '{{ $p := filepath.Split `C:\tmp\foo` }}{{ $dir := index $p 0 }}{{ $file := index $p 1 }}dir is {{$dir}}, file is {{$file}}'
dir is C:\tmp\, file is foo

filepath.ToSlash

Returns the result of replacing each separator character in path with a slash (/) character.

A wrapper for Go’s filepath.ToSlash function.

Usage

filepath.ToSlash path 
path | filepath.ToSlash  

Arguments

name description
path (required) The input path

Examples

$ gomplate -i '{{ filepath.ToSlash "/foo/bar" }}'
/foo/bar
C:\> gomplate.exe -i '{{ filepath.ToSlash `foo\bar\baz` }}'
foo/bar/baz

filepath.VolumeName

Returns the leading volume name. Given C:\foo\bar it returns C: on Windows. Given a UNC like \\host\share\foo it returns \\host\share. On other platforms it returns an empty string.

A wrapper for Go’s filepath.VolumeName function.

Usage

filepath.VolumeName path 
path | filepath.VolumeName  

Arguments

name description
path (required) The input path

Examples

C:\> gomplate.exe -i 'volume is {{ filepath.VolumeName "C:/foo/bar" }}'
volume is C:
$ gomplate -i 'volume is {{ filepath.VolumeName "/foo/bar" }}'
volume is