pathutil

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 15, 2019 License: MIT Imports: 19 Imported by: 5

README

pathutil

Release Software License Travis Go Report Card GoDoc codecov.io Sourcegraph

Pathutil is I/O utility primary inspired by David Golden's Path::Tiny. It is friendlier to use than path, filepath and provides many of other functions which isn't in core libraries (like Copy for example)

SYNOPSIS
import (
	"fmt"
	"github.com/JaSei/pathutil-go"
)

// creating pathutil objects
dir, _ := pathutil.New("/tmp")
foo, _ := pathutil.New("foo.txt")

subdir, _ := dir.Child("foo")
bar, _ := subdir.Child("bar.txt")

// stringifies as cleaned up path
file, _ := pathutil.New("./foo.txt")
fmt.Println(file) // "foo.txt"

// reading files
guts, _ := file.Slurp()
lines, _ := file.Lines()

// writing files
bar.Spew(data)

// reading directories
children, _ := dir.Children()
for _, child := range children {
}
SEE ALSO

BREAKING CHANGE 0.3.1 -> 1.0.0

  1. NewTempFile or NewTempDir don't need TempOpt struct

    //0.3.1 default pathutil.NewTempFile(pathutil.TempOpt{}) //0.3.1 custom pathutil.NewTempFile(pathutil.TempOpt{Dir: "/test", Prefix: "pre"})

    //1.0.0 default pathutil.NewTempFile() //1.0.0 custom pathutil.NewTempFile(Dir("/test"), Prefix("pre"))

  2. New method parameter allowed string type or type implements fmt.Stringer interface

    //0.3.1 pathutil.New(otherPath.String(), "test")

    //1.0.0 pathutil.New(otherPath, "test")

This shouldn't be breaking change, but if you use in some code variadic parameter as input of pathutil.New, then can be problem

//0.3.1
func(p ...string) {
	pathutil.New(p...)
}("a", "b")

//1.0.0
func(p ...string) {
	n := make([]interface{}, len(p))
	for i, v := range p {
		n[i] = v
	}
	pathutil.New(n...)
}("a", "b")
  1. There is new (more handfull) crypto API

    //0.3.1 import ( "crypto" "github.com/JaSei/pathutil-go" ) ...

    hash, err := path.Crypto(crypto.SHA256) if err == nil { fmt.Printf("%s\t%s\n", hash.HexSum(), path.String()) }

    //1.0.0 import ( "github.com/JaSei/pathutil-go" ) ...

    hash, err := path.CryptoSha256() if err == nil { fmt.Printf("%s\t%s\n", hash, path.String()) }

This new crypto API return hashutil struct which is more handfull for compare, transformation and next hash manipulation.

Usage

type LinesFunc
type LinesFunc func(string)
type Path
type Path interface {
	String() string
	Canonpath() string
	Basename() string

	Chdir() (Path, error)
	Rename(string) (Path, error)

	Stat() (os.FileInfo, error)

	IsDir() bool
	Exists() bool
	IsFile() bool
	IsRegularFile() bool

	Remove() error
	RemoveTree() error

	Visit(VisitFunc, VisitOpt)
	CopyFile(string) (Path, error)

	CopyFrom(io.Reader) (int64, error)

	CryptoMd5() (hashutil.Md5, error)
	CryptoSha1() (hashutil.Sha1, error)
	CryptoSha256() (hashutil.Sha256, error)
	CryptoSha384() (hashutil.Sha384, error)
	CryptoSha512() (hashutil.Sha512, error)

	MakePath() error
	MakePathMode(os.FileMode) error

	OpenReader() (ReadSeekCloser, error)
	OpenWriter() (*os.File, error)
	OpenWriterAppend() (*os.File, error)

	Slurp() (string, error)
	SlurpBytes() ([]byte, error)

	Spew(string) error
	SpewBytes([]byte) error

	Lines() ([]string, error)
	LinesWalker(LinesFunc) error

	Child(...string) (Path, error)
	Children() ([]Path, error)

	Parent() Path

	Append(string) error
	AppendBytes([]byte) error
}
func Cwd
func Cwd(subpath ...string) (Path, error)

Cwd create new Path from current working directory optional is possible to set subpath

for example

gitConfigPath, err := pathutil.Cwd('.git/config')
func Home
func Home(subpath ...string) (Path, error)

Home create new Path from home directory optional is possible to set subpath

for example

initPath, err := pathutil.Home('.config/nvim/init.vim')

(internally use https://github.com/mitchellh/go-homedir library)

func New
func New(path ...interface{}) (Path, error)

New construct Path

for example

path := New("/home/test", ".vimrc")

input can be string or type implements fmt.Stringer interface

func NewTempDir
func NewTempDir(options ...TempOpt) (Path, error)

NewTempDir create temp directory

for cleanup use defer

	tempdir, err := pathutil.NewTempDir()
 defer tempdir.RemoveTree()

if you need set directory or prefix, then use TempDir and/or TempPrefix

temp, err := NewTempFile(TempDir("/home/my/test"), TempPrefix("myfile"))
...
func NewTempFile
func NewTempFile(options ...TempOpt) (p Path, err error)

NewTempFile create temp file

for cleanup use defer

temp, err := NewTempFile(TempOpt{})
defer temp.Remove()

if you need only temp file name, you must delete file

temp, err := NewTempFile()
temp.Remove()

if you need set directory or prefix, then use TempDir and/or TempPrefix

temp, err := NewTempFile(TempDir("/home/my/test"), TempPrefix("myfile"))
...
type PathImpl
type PathImpl struct {
}

type PathImpl implements Path interface

func (PathImpl) Append
func (path PathImpl) Append(data string) error
func (PathImpl) AppendBytes
func (path PathImpl) AppendBytes(data []byte) (err error)
func (PathImpl) Basename
func (path PathImpl) Basename() string

Basename like path/filepath.Base

func (PathImpl) Canonpath
func (path PathImpl) Canonpath() string

Canonpath retrun path with right os separator

func (PathImpl) Chdir
func (path PathImpl) Chdir() (Path, error)

Chdir change current working directory do the path and return old current working directory

func (PathImpl) Child
func (path PathImpl) Child(childName ...string) (Path, error)
func (PathImpl) Children
func (path PathImpl) Children() ([]Path, error)
func (PathImpl) CopyFile
func (srcPath PathImpl) CopyFile(dst string) (p Path, err error)
func (PathImpl) CopyFrom
func (path PathImpl) CopyFrom(reader io.Reader) (copyied int64, err error)

CopyFrom copy stream from reader to path (file after copy close and sync)

func (PathImpl) CryptoMd5
func (path PathImpl) CryptoMd5() (hashutil.Md5, error)

CryptoMd5 method access hash funcionality like Path::Tiny Digest return hashutil.Md5 type

for example print of Md5 hexstring

hash, err := path.CryptoMd5()
fmt.Println(hash)
func (PathImpl) CryptoSha1
func (path PathImpl) CryptoSha1() (hashutil.Sha1, error)

CryptoSha1 method access hash funcionality like Path::Tiny Digest return hashutil.Sha1 type

for example print of Sha1 hexstring

hash, err := path.CryptoSha1()
fmt.Println(hash)
func (PathImpl) CryptoSha256
func (path PathImpl) CryptoSha256() (hashutil.Sha256, error)

CryptoSha256 method access hash funcionality like Path::Tiny Digest return hashutil.Sha256 type

for example print of Sha256 hexstring

hash, err := path.CryptoSha256()
fmt.Println(hash)
func (PathImpl) CryptoSha384
func (path PathImpl) CryptoSha384() (hashutil.Sha384, error)

CryptoSha384 method access hash funcionality like Path::Tiny Digest return hashutil.Sha384 type

for example print of Sha284 hexstring

hash, err := path.CryptoSha284()
fmt.Println(hash)
func (PathImpl) CryptoSha512
func (path PathImpl) CryptoSha512() (hashutil.Sha512, error)

CryptoSha512 method access hash funcionality like Path::Tiny Digest return hashutil.Sha512 type

for example print of Sha512 hexstring

hash, err := path.CryptoSha512()
fmt.Println(hash)
func (PathImpl) Exists
func (path PathImpl) Exists() bool
func (PathImpl) IsDir
func (path PathImpl) IsDir() bool

IsDir return true if path is dir

func (PathImpl) IsFile
func (path PathImpl) IsFile() bool

IsFile return true is path exists and not dir (symlinks, devs, regular files)

func (PathImpl) IsRegularFile
func (path PathImpl) IsRegularFile() bool

IsRegularFile return true if path is regular file (wihtout devs, symlinks, ...)

func (PathImpl) Lines
func (path PathImpl) Lines() ([]string, error)

Read all lines and return as array of lines

func (PathImpl) LinesWalker
func (path PathImpl) LinesWalker(linesFunc LinesFunc) (err error)

LinesWalker read lines in file and call LinesFunc with line parameter

for example:

lines := make([]string, 0)

linesFuncError := path.LinesWalker(func(line string) {
	lines = append(lines, line)
})
func (PathImpl) MakePath
func (path PathImpl) MakePath() error

Make path create directory(ies) in path if not exists (like mkdir -p) with default 0777 mode if you need set mode, use MakePathMode

func (PathImpl) MakePathMode
func (path PathImpl) MakePathMode(mode os.FileMode) error

Make path create directory(ies) in path if not exists (like mkdir -p) with default given mode

func (PathImpl) OpenReader
func (path PathImpl) OpenReader() (ReadSeekCloser, error)

OpenReader retun ReadSeekCloser interface

for example:

path, _ := New("/bla/bla")
r, err := path.OpenReader()
if err != nil {
	panic(err)
}
defer r.Close()
func (PathImpl) OpenWriter
func (path PathImpl) OpenWriter() (*os.File, error)

OpenWriter retun *os.File as new file (like >>)

for example:

	path, _ := NewFilePath(FilePathOpt{})
	file, err := path.OpenWriter()
	if err != nil {
		panic(err)
	}
	defer func(){
		file.Close()
		file.Sync()
	}()

 writer.Write(some_bytes)
func (PathImpl) OpenWriterAppend
func (path PathImpl) OpenWriterAppend() (*os.File, error)

OpenWriterAppend create new writer, similar as OpenWriter but append (like >)

func (PathImpl) Parent
func (path PathImpl) Parent() Path
	path,_ := New("foo/bar/baz"); parent := path.Parent()   // foo/bar
 path,_ := New("foo/wible.txt"); parent := path.Parent() // foo

Returns a Path of corresponding to the parent directory of the original directory or file

func (PathImpl) Remove
func (path PathImpl) Remove() error

Remove file

err := path.Remove()

like os.Remove

func (PathImpl) RemoveTree
func (path PathImpl) RemoveTree() error

Remove tree of directory(ies) include files

err := path.RemoveTree

like os.RemoveAll

func (PathImpl) Rename
func (old PathImpl) Rename(new string) (Path, error)

Rename path to new path

func (PathImpl) Slurp
func (path PathImpl) Slurp() (string, error)

Slurp read all file like ioutil.ReadFile

func (PathImpl) SlurpBytes
func (path PathImpl) SlurpBytes() ([]byte, error)
func (PathImpl) Spew
func (path PathImpl) Spew(content string) (err error)

Spew write string to file

func (PathImpl) SpewBytes
func (path PathImpl) SpewBytes(bytes []byte) (err error)

SpewBytes write bytes to file

func (PathImpl) Stat
func (path PathImpl) Stat() (os.FileInfo, error)

Stat return os.FileInfo

func (PathImpl) String
func (path PathImpl) String() string

String return stable string representation of path this representation is linux like (slash as separator) for os specific string use Canonpath method

func (PathImpl) Visit
func (path PathImpl) Visit(visitFunc VisitFunc, visitOpt VisitOpt)
type ReadSeekCloser
type ReadSeekCloser interface {
	io.Reader
	io.Seeker
	io.Closer
}
type TempOpt
type TempOpt func(*tempOpt)

TempOpt is func for configure tempdir or tempfile

func TempDir
func TempDir(dir string) TempOpt

TempDir set directory where is temp file/dir create, empty string "" (default) means TEMPDIR (os.TempDir)

func TempPrefix
func TempPrefix(prefix string) TempOpt

TempPrefix set name beginning with prefix

type VisitFunc
type VisitFunc func(path Path)
type VisitOpt
type VisitOpt struct {
	Recurse bool
}

Contributing

Contributions are very much welcome.

Makefile

Makefile provides several handy rules, like README.md generator , setup for prepare build/dev environment, test, cover, etc...

Try make help for more information.

Before pull request

please try:

  • run tests (make test)
  • run linter (make lint)
  • if your IDE don't automaticaly do go fmt, run go fmt (make fmt)
README

README.md are generate from template .godocdown.tmpl and code documentation via godocdown.

Never edit README.md direct, because your change will be lost.

Documentation

Overview

Pathutil is I/O utility primary inspired by David Golden's [Path::Tiny](https://metacpan.org/pod/Path::Tiny). It is friendlier to use than path(https://golang.org/pkg/path/), filepath(https://golang.org/pkg/path/filepath/) and provides many of other functions which isn't in core libraries (like `Copy` for example)

SYNOPSIS

import (
	"fmt"
	"github.com/JaSei/pathutil-go"
)

// creating pathutil objects
dir, _ := pathutil.New("/tmp")
foo, _ := pathutil.New("foo.txt")

subdir, _ := dir.Child("foo")
bar, _ := subdir.Child("bar.txt")

// stringifies as cleaned up path
file, _ := pathutil.New("./foo.txt")
fmt.Println(file) // "foo.txt"

// reading files
guts, _ := file.Slurp()
lines, _ := file.Lines()

// writing files
bar.Spew(data)

// reading directories
children, _ := dir.Children()
for _, child := range children {
}

SEE ALSO

* [Path::Tiny](https://metacpan.org/pod/Path::Tiny) for Perl

* [better files](https://github.com/pathikrit/better-files) for Scala

* [pathlib](https://docs.python.org/3/library/pathlib.html) for python

BREAKING CHANGE 0.3.1 -> 1.0.0

1. `NewTempFile` or `NewTempDir` don't need TempOpt struct

//0.3.1 default
pathutil.NewTempFile(pathutil.TempOpt{})
//0.3.1 custom
pathutil.NewTempFile(pathutil.TempOpt{Dir: "/test", Prefix: "pre"})

//1.0.0 default
pathutil.NewTempFile()
//1.0.0 custom
pathutil.NewTempFile(Dir("/test"), Prefix("pre"))

2. `New` method parameter allowed `string` type or type implements `fmt.Stringer` interface

//0.3.1
pathutil.New(otherPath.String(), "test")

//1.0.0
pathutil.New(otherPath, "test")

This shouldn't be breaking change, but if you use in some code variadic parameter as input of `pathutil.New`, then can be problem

//0.3.1
func(p ...string) {
	pathutil.New(p...)
}("a", "b")

//1.0.0
func(p ...string) {
	n := make([]interface{}, len(p))
	for i, v := range p {
		n[i] = v
	}
	pathutil.New(n...)
}("a", "b")

3. There is new (more handfull) crypto API

//0.3.1
import (
	"crypto"
	"github.com/JaSei/pathutil-go"
)
...

hash, err := path.Crypto(crypto.SHA256)
if err == nil {
	fmt.Printf("%s\t%s\n", hash.HexSum(), path.String())
}

//1.0.0
import (
	"github.com/JaSei/pathutil-go"
)
...

hash, err := path.CryptoSha256()
if err == nil {
	fmt.Printf("%s\t%s\n", hash, path.String())
}

This new crypto API return hashutil(github.com/JaSei/hashutil-go) struct which is more handfull for compare, transformation and next hash manipulation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LinesFunc

type LinesFunc func(string)

type Path

type Path interface {
	String() string
	Canonpath() string
	Basename() string

	Chdir() (Path, error)
	Rename(string) (Path, error)

	Stat() (os.FileInfo, error)

	IsDir() bool
	Exists() bool
	IsFile() bool
	IsRegularFile() bool

	Remove() error
	RemoveTree() error

	Visit(VisitFunc, VisitOpt)
	CopyFile(string) (Path, error)

	CopyFrom(io.Reader) (int64, error)

	CryptoMd5() (hashutil.Md5, error)
	CryptoSha1() (hashutil.Sha1, error)
	CryptoSha256() (hashutil.Sha256, error)
	CryptoSha384() (hashutil.Sha384, error)
	CryptoSha512() (hashutil.Sha512, error)

	MakePath() error
	MakePathMode(os.FileMode) error

	OpenReader() (ReadSeekCloser, error)
	OpenWriter() (*os.File, error)
	OpenWriterAppend() (*os.File, error)

	Slurp() (string, error)
	SlurpBytes() ([]byte, error)

	Spew(string) error
	SpewBytes([]byte) error

	Lines() ([]string, error)
	LinesWalker(LinesFunc) error

	Child(...string) (Path, error)
	Children() ([]Path, error)

	Parent() Path

	Append(string) error
	AppendBytes([]byte) error
}

func Cwd

func Cwd(subpath ...string) (Path, error)

Cwd create new Path from current working directory optional is possible to set subpath

for example

gitConfigPath, err := pathutil.Cwd('.git/config')

func Home

func Home(subpath ...string) (Path, error)

Home create new Path from home directory optional is possible to set subpath

for example

initPath, err := pathutil.Home('.config/nvim/init.vim')

(internally use https://github.com/mitchellh/go-homedir library)

func New

func New(path ...interface{}) (Path, error)

New construct Path

for example

path := New("/home/test", ".vimrc")

input can be `string` or type implements `fmt.Stringer` interface

func NewTempDir

func NewTempDir(options ...TempOpt) (Path, error)

NewTempDir create temp directory

for cleanup use `defer`

	tempdir, err := pathutil.NewTempDir()
 defer tempdir.RemoveTree()

if you need set directory or prefix, then use `TempDir` and/or `TempPrefix`

temp, err := NewTempFile(TempDir("/home/my/test"), TempPrefix("myfile"))
...

func NewTempFile

func NewTempFile(options ...TempOpt) (p Path, err error)

NewTempFile create temp file

for cleanup use defer

temp, err := NewTempFile(TempOpt{})
defer temp.Remove()

if you need only temp file name, you must delete file

temp, err := NewTempFile()
temp.Remove()

if you need set directory or prefix, then use `TempDir` and/or `TempPrefix`

temp, err := NewTempFile(TempDir("/home/my/test"), TempPrefix("myfile"))
...

type PathImpl

type PathImpl struct {
	// contains filtered or unexported fields
}

type PathImpl implements Path interface

func (PathImpl) Append

func (path PathImpl) Append(data string) error

func (PathImpl) AppendBytes

func (path PathImpl) AppendBytes(data []byte) (err error)

func (PathImpl) Basename

func (path PathImpl) Basename() string

Basename like path/filepath.Base

func (PathImpl) Canonpath

func (path PathImpl) Canonpath() string

Canonpath retrun path with right os separator

func (PathImpl) Chdir

func (path PathImpl) Chdir() (Path, error)

Chdir change current working directory do the path and return old current working directory

func (PathImpl) Child

func (path PathImpl) Child(childName ...string) (Path, error)

func (PathImpl) Children

func (path PathImpl) Children() ([]Path, error)

func (PathImpl) CopyFile

func (srcPath PathImpl) CopyFile(dst string) (p Path, err error)

func (PathImpl) CopyFrom

func (path PathImpl) CopyFrom(reader io.Reader) (copyied int64, err error)

CopyFrom copy stream from reader to path (file after copy close and sync)

func (PathImpl) CryptoMd5 added in v1.0.0

func (path PathImpl) CryptoMd5() (hashutil.Md5, error)

CryptoMd5 method access hash funcionality like Path::Tiny Digest return hashutil.Md5(github.com/JaSei/hashutil-go) type

for example print of Md5 hexstring

hash, err := path.CryptoMd5()
fmt.Println(hash)

func (PathImpl) CryptoSha1 added in v1.0.0

func (path PathImpl) CryptoSha1() (hashutil.Sha1, error)

CryptoSha1 method access hash funcionality like Path::Tiny Digest return hashutil.Sha1(github.com/JaSei/hashutil-go) type

for example print of Sha1 hexstring

hash, err := path.CryptoSha1()
fmt.Println(hash)

func (PathImpl) CryptoSha256 added in v1.0.0

func (path PathImpl) CryptoSha256() (hashutil.Sha256, error)

CryptoSha256 method access hash funcionality like Path::Tiny Digest return hashutil.Sha256(github.com/JaSei/hashutil-go) type

for example print of Sha256 hexstring

hash, err := path.CryptoSha256()
fmt.Println(hash)

func (PathImpl) CryptoSha384 added in v1.0.0

func (path PathImpl) CryptoSha384() (hashutil.Sha384, error)

CryptoSha384 method access hash funcionality like Path::Tiny Digest return hashutil.Sha384(github.com/JaSei/hashutil-go) type

for example print of Sha284 hexstring

hash, err := path.CryptoSha284()
fmt.Println(hash)

func (PathImpl) CryptoSha512 added in v1.0.0

func (path PathImpl) CryptoSha512() (hashutil.Sha512, error)

CryptoSha512 method access hash funcionality like Path::Tiny Digest return hashutil.Sha512(github.com/JaSei/hashutil-go) type

for example print of Sha512 hexstring

hash, err := path.CryptoSha512()
fmt.Println(hash)

func (PathImpl) Exists

func (path PathImpl) Exists() bool

func (PathImpl) IsDir

func (path PathImpl) IsDir() bool

IsDir return true if path is dir

func (PathImpl) IsFile

func (path PathImpl) IsFile() bool

IsFile return true is path exists and not dir (symlinks, devs, regular files)

func (PathImpl) IsRegularFile

func (path PathImpl) IsRegularFile() bool

IsRegularFile return true if path is regular file (wihtout devs, symlinks, ...)

func (PathImpl) Lines

func (path PathImpl) Lines() ([]string, error)

Read all lines and return as array of lines

func (PathImpl) LinesWalker

func (path PathImpl) LinesWalker(linesFunc LinesFunc) (err error)

LinesWalker read lines in file and call LinesFunc with line parameter

for example:

lines := make([]string, 0)

linesFuncError := path.LinesWalker(func(line string) {
	lines = append(lines, line)
})

func (PathImpl) MakePath

func (path PathImpl) MakePath() error

Make path create directory(ies) in path if not exists (like `mkdir -p`) with default 0777 mode if you need set mode, use `MakePathMode`

func (PathImpl) MakePathMode

func (path PathImpl) MakePathMode(mode os.FileMode) error

Make path create directory(ies) in path if not exists (like `mkdir -p`) with default given mode

func (PathImpl) OpenReader

func (path PathImpl) OpenReader() (ReadSeekCloser, error)

OpenReader retun ReadSeekCloser interface

for example:

path, _ := New("/bla/bla")
r, err := path.OpenReader()
if err != nil {
	panic(err)
}
defer r.Close()

func (PathImpl) OpenWriter

func (path PathImpl) OpenWriter() (*os.File, error)

OpenWriter retun *os.File as new file (like `>>`)

for example:

	path, _ := NewFilePath(FilePathOpt{})
	file, err := path.OpenWriter()
	if err != nil {
		panic(err)
	}
	defer func(){
		file.Close()
		file.Sync()
	}()

 writer.Write(some_bytes)

func (PathImpl) OpenWriterAppend

func (path PathImpl) OpenWriterAppend() (*os.File, error)

OpenWriterAppend create new writer, similar as `OpenWriter` but append (like `>`)

func (PathImpl) Parent

func (path PathImpl) Parent() Path
	path,_ := New("foo/bar/baz"); parent := path.Parent()   // foo/bar
 path,_ := New("foo/wible.txt"); parent := path.Parent() // foo

Returns a `Path` of corresponding to the parent directory of the original directory or file

func (PathImpl) Remove

func (path PathImpl) Remove() error

Remove file

err := path.Remove()

like os.Remove

func (PathImpl) RemoveTree

func (path PathImpl) RemoveTree() error

Remove tree of directory(ies) include files

err := path.RemoveTree

like os.RemoveAll

func (PathImpl) Rename

func (old PathImpl) Rename(new string) (Path, error)

Rename path to new path

func (PathImpl) Slurp

func (path PathImpl) Slurp() (string, error)

Slurp read all file like ioutil.ReadFile

func (PathImpl) SlurpBytes

func (path PathImpl) SlurpBytes() ([]byte, error)

func (PathImpl) Spew

func (path PathImpl) Spew(content string) (err error)

Spew write string to file

func (PathImpl) SpewBytes

func (path PathImpl) SpewBytes(bytes []byte) (err error)

SpewBytes write bytes to file

func (PathImpl) Stat

func (path PathImpl) Stat() (os.FileInfo, error)

Stat return os.FileInfo

func (PathImpl) String

func (path PathImpl) String() string

String return stable string representation of path this representation is linux like (slash as separator) for os specific string use Canonpath method

func (PathImpl) Visit

func (path PathImpl) Visit(visitFunc VisitFunc, visitOpt VisitOpt)

type ReadSeekCloser

type ReadSeekCloser interface {
	io.Reader
	io.Seeker
	io.Closer
}

type TempOpt

type TempOpt func(*tempOpt)

TempOpt is func for configure tempdir or tempfile

func TempDir added in v1.0.0

func TempDir(dir string) TempOpt

TempDir set directory where is temp file/dir create, empty string `""` (default) means TEMPDIR (`os.TempDir`)

func TempPrefix added in v1.0.0

func TempPrefix(prefix string) TempOpt

TempPrefix set name beginning with prefix

type VisitFunc

type VisitFunc func(path Path)

type VisitOpt

type VisitOpt struct {
	Recurse bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL