util.go 2.04 KB
Newer Older
Juan Batiz-Benet's avatar
key  
Juan Batiz-Benet committed
1
package util
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
2 3

import (
Jeromy's avatar
Jeromy committed
4
	"errors"
5
	"fmt"
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
6
	"os"
7 8
	"os/user"
	"strings"
9 10 11

	b58 "github.com/jbenet/go-base58"
	mh "github.com/jbenet/go-multihash"
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
12 13
)

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
14
// Debug is a global flag for debugging.
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
15 16
var Debug bool

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
17
// ErrNotImplemented signifies a function has not been implemented yet.
Jeromy's avatar
Jeromy committed
18
var ErrNotImplemented = errors.New("Error: not implemented yet.")
Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
19

20
// ErrTimeout implies that a timeout has been triggered
Jeromy's avatar
Jeromy committed
21 22 23 24 25
var ErrTimeout = errors.New("Error: Call timed out.")

// ErrSeErrSearchIncomplete implies that a search type operation didnt
// find the expected node, but did find 'a' node.
var ErrSearchIncomplete = errors.New("Error: Search Incomplete.")
26

27 28 29
// ErrNotFound is returned when a search fails to find anything
var ErrNotFound = errors.New("Error: Not Found.")

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
30
// Key is a string representation of multihash for use with maps.
Juan Batiz-Benet's avatar
key  
Juan Batiz-Benet committed
31 32
type Key string

33
func (k Key) Pretty() string {
34
	return b58.Encode([]byte(k))
35 36
}

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
37
// Hash is the global IPFS hash function. uses multihash SHA2_256, 256 bits
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
38 39 40 41
func Hash(data []byte) (mh.Multihash, error) {
	return mh.Sum(data, mh.SHA2_256, -1)
}

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
42
// TildeExpansion expands a filename, which may begin with a tilde.
43 44 45 46 47 48 49 50 51 52 53 54 55
func TildeExpansion(filename string) (string, error) {
	if strings.HasPrefix(filename, "~/") {
		usr, err := user.Current()
		if err != nil {
			return "", err
		}

		dir := usr.HomeDir + "/"
		filename = strings.Replace(filename, "~/", dir, 1)
	}
	return filename, nil
}

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
56
// PErr is a shorthand printing function to output to Stderr.
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
57
func PErr(format string, a ...interface{}) {
58
	fmt.Fprintf(os.Stderr, format+"\n", a...)
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
59 60
}

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
61
// POut is a shorthand printing function to output to Stdout.
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
62
func POut(format string, a ...interface{}) {
63
	fmt.Fprintf(os.Stdout, format+"\n", a...)
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
64 65
}

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
66 67
// DErr is a shorthand debug printing function to output to Stderr.
// Will only print if Debug is true.
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
68 69 70 71 72 73
func DErr(format string, a ...interface{}) {
	if Debug {
		PErr(format, a...)
	}
}

Juan Batiz-Benet's avatar
go lint  
Juan Batiz-Benet committed
74 75
// DOut is a shorthand debug printing function to output to Stdout.
// Will only print if Debug is true.
Juan Batiz-Benet's avatar
util  
Juan Batiz-Benet committed
76 77 78 79 80
func DOut(format string, a ...interface{}) {
	if Debug {
		POut(format, a...)
	}
}