tools

package
v2.1.1+incompatible Latest Latest
Warning

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

Go to latest
Published: May 19, 2017 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package tools contains other helper functions too small to justify their own package NOTE: Subject to change, do not rely on this package from outside git-lfs source

Set is a modification of https://github.com/deckarep/golang-set The MIT License (MIT) Copyright (c) 2013 Ralph Caraveo (deckarep@gmail.com)

Index

Constants

View Source
const (
	BtrfsIocClone = C.BTRFS_IOC_CLONE
)

Variables

This section is empty.

Functions

func CleanPaths

func CleanPaths(paths, delim string) (cleaned []string)

CleanPaths splits the given `paths` argument by the delimiter argument, and then "cleans" that path according to the path.Clean function (see https://golang.org/pkg/path#Clean). Note always cleans to '/' path separators regardless of platform (git friendly)

func CloneFile added in v1.3.0

func CloneFile(writer io.Writer, reader io.Reader) (bool, error)

func CopyWithCallback added in v1.3.0

func CopyWithCallback(writer io.Writer, reader io.Reader, totalSize int64, cb progress.CopyCallback) (int64, error)

CopyWithCallback copies reader to writer while performing a progress callback

func DirExists added in v1.3.0

func DirExists(path string) bool

DirExists determines if a dir (NOT file) exists.

func FastWalkGitRepo added in v1.5.0

func FastWalkGitRepo(rootDir string, cb FastWalkCallback)

FastWalkGitRepo is a more optimal implementation of filepath.Walk for a Git repo. The callback guaranteed to be called sequentially. The function returns once all files and errors have triggered callbacks. It differs in the following ways:

  • Uses goroutines to parallelise large dirs and descent into subdirs
  • Does not provide sorted output; parents will always be before children but there are no other guarantees. Use parentDir argument in the callback to determine absolute path rather than tracking it yourself
  • Automatically ignores any .git directories
  • Respects .gitignore contents and skips ignored files/dirs

rootDir - Absolute path to the top of the repository working directory

func FileExists added in v1.3.0

func FileExists(path string) bool

FileExists determines if a file (NOT dir) exists.

func FileExistsOfSize added in v1.3.0

func FileExistsOfSize(path string, sz int64) bool

FileExistsOfSize determines if a file exists and is of a specific size.

func FileOrDirExists added in v1.3.0

func FileOrDirExists(path string) (exists bool, isDir bool)

FileOrDirExists determines if a file/dir exists, returns IsDir() results too.

func Getwd

func Getwd() (dir string, err error)

func IsExpiredAtOrIn

func IsExpiredAtOrIn(now time.Time, until time.Duration, at time.Time, in time.Duration) (time.Time, bool)

IsExpiredAtOrIn returns whether or not the result of calling TimeAtOrIn is "expired" within "until" units of time from now.

func MaxInt added in v1.5.0

func MaxInt(a, b int) int

MaxInt returns the greater of two `int`s, "a", or "b".

func MaxInt64

func MaxInt64(a, b int64) int64

MaxInt64 returns the greater of two `int`s, "a", or "b".

func MinInt added in v1.5.0

func MinInt(a, b int) int

MinInt returns the smaller of two `int`s, "a", or "b".

func MinInt64

func MinInt64(a, b int64) int64

MinInt64 returns the smaller of two `int`s, "a", or "b".

func NewLfsContentHash added in v1.3.0

func NewLfsContentHash() hash.Hash

Get a new Hash instance of the type used to hash LFS content

func NewRetriableReader added in v1.4.1

func NewRetriableReader(r io.Reader) io.Reader

func QuotedFields

func QuotedFields(s string) []string

QuotedFields is an alternative to strings.Fields (see: https://golang.org/pkg/strings#Fields) that respects spaces between matching pairs of quotation delimeters.

For instance, the quoted fields of the string "foo bar 'baz etc'" would be:

[]string{"foo", "bar", "baz etc"}

Whereas the same argument given to strings.Fields, would return:

[]string{"foo", "bar", "'baz", "etc'"}

func RenameFileCopyPermissions added in v1.3.0

func RenameFileCopyPermissions(srcfile, destfile string) error

RenameFileCopyPermissions moves srcfile to destfile, replacing destfile if necessary and also copying the permissions of destfile if it already exists

func ResolveSymlinks(path string) string

ResolveSymlinks ensures that if the path supplied is a symlink, it is resolved to the actual concrete path

func SetFileWriteFlag

func SetFileWriteFlag(path string, writeEnabled bool) error

SetFileWriteFlag changes write permissions on a file Used to make a file read-only or not. When writeEnabled = false, the write bit is removed for all roles. When writeEnabled = true, the behaviour is different per platform: On Mac & Linux, the write bit is set only on the owner as per default umask. All other bits are unaffected. On Windows, all the write bits are set since Windows doesn't support Unix permissions.

func Spool

func Spool(to io.Writer, from io.Reader, dir string) (n int64, err error)

Spool spools the contents from 'from' to 'to' by buffering the entire contents of 'from' into a temprorary file created in the directory "dir". That buffer is held in memory until the file grows to larger than 'memoryBufferLimit`, then the remaining contents are spooled to disk.

The temporary file is cleaned up after the copy is complete.

The number of bytes written to "to", as well as any error encountered are returned.

func TimeAtOrIn

func TimeAtOrIn(now, at time.Time, in time.Duration) time.Time

TimeAtOrIn returns either "at", or the "in" duration added to the current time. TimeAtOrIn prefers to add a duration rather than return the "at" parameter.

func TranslateCygwinPath

func TranslateCygwinPath(path string) (string, error)

func VerifyFileHash added in v1.3.0

func VerifyFileHash(oid, path string) error

VerifyFileHash reads a file and verifies whether the SHA is correct Returns an error if there is a problem

Types

type BaseChannelWrapper

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

Base implementation of channel wrapper to just deal with errors

func NewBaseChannelWrapper

func NewBaseChannelWrapper(errChan <-chan error) *BaseChannelWrapper

func (*BaseChannelWrapper) Wait

func (w *BaseChannelWrapper) Wait() error

type ChannelWrapper

type ChannelWrapper interface {
	// Call this after processing results channel to check for async errors
	Wait() error
}

Interface for all types of wrapper around a channel of results and an error channel Implementors will expose a type-specific channel for results Call the Wait() function after processing the results channel to catch any errors that occurred during the async processing

type FastWalkCallback added in v1.5.4

type FastWalkCallback func(parentDir string, info os.FileInfo, err error)

FastWalkCallback is the signature for the callback given to FastWalkGitRepo()

type HashingReader added in v1.3.0

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

HashingReader wraps a reader and calculates the hash of the data as it is read

func NewHashingReader added in v1.3.0

func NewHashingReader(r io.Reader) *HashingReader

func NewHashingReaderPreloadHash added in v1.3.0

func NewHashingReaderPreloadHash(r io.Reader, hash hash.Hash) *HashingReader

func (*HashingReader) Hash added in v1.3.0

func (r *HashingReader) Hash() string

func (*HashingReader) Read added in v1.3.0

func (r *HashingReader) Read(b []byte) (int, error)

type RetriableReader added in v1.4.1

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

RetriableReader wraps a error response of reader as RetriableError()

func (*RetriableReader) Read added in v1.4.1

func (r *RetriableReader) Read(b []byte) (int, error)

type StringSet added in v1.3.0

type StringSet map[string]struct{}

The primary type that represents a set

func NewStringSet added in v1.3.0

func NewStringSet() StringSet

Creates and returns a reference to an empty set.

func NewStringSetFromSlice added in v1.3.0

func NewStringSetFromSlice(s []string) StringSet

Creates and returns a reference to a set from an existing slice

func NewStringSetWithCapacity added in v1.3.0

func NewStringSetWithCapacity(capacity int) StringSet

Creates and returns a reference to an empty set with a capacity.

func (StringSet) Add added in v1.3.0

func (set StringSet) Add(i string) bool

Adds an item to the current set if it doesn't already exist in the set.

func (StringSet) Cardinality added in v1.3.0

func (set StringSet) Cardinality() int

Cardinality returns how many items are currently in the set.

func (*StringSet) Clear added in v1.3.0

func (set *StringSet) Clear()

Clears the entire set to be the empty set.

func (StringSet) Clone added in v1.3.0

func (set StringSet) Clone() StringSet

Returns a clone of the set. Does NOT clone the underlying elements.

func (StringSet) Contains added in v1.3.0

func (set StringSet) Contains(i string) bool

Determines if a given item is already in the set.

func (StringSet) ContainsAll added in v1.3.0

func (set StringSet) ContainsAll(i ...string) bool

Determines if the given items are all in the set

func (StringSet) Difference added in v1.3.0

func (set StringSet) Difference(other StringSet) StringSet

Returns a new set with items in the current set but not in the other set

func (StringSet) Equal added in v1.3.0

func (set StringSet) Equal(other StringSet) bool

Equal determines if two sets are equal to each other. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (StringSet) Intersect added in v1.3.0

func (set StringSet) Intersect(other StringSet) StringSet

Returns a new set with items that exist only in both sets.

func (StringSet) IsSubset added in v1.3.0

func (set StringSet) IsSubset(other StringSet) bool

Determines if every item in the other set is in this set.

func (StringSet) IsSuperset added in v1.3.0

func (set StringSet) IsSuperset(other StringSet) bool

Determines if every item of this set is in the other set.

func (StringSet) Iter added in v1.3.0

func (set StringSet) Iter() <-chan string

Iter() returns a channel of type string that you can range over.

func (StringSet) Remove added in v1.3.0

func (set StringSet) Remove(i string)

Allows the removal of a single item in the set.

func (StringSet) SymmetricDifference added in v1.3.0

func (set StringSet) SymmetricDifference(other StringSet) StringSet

Returns a new set with items in the current set or the other set but not in both.

func (StringSet) Union added in v1.3.0

func (set StringSet) Union(other StringSet) StringSet

Returns a new set with all items in both sets.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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