stick/utils.go

72 lines
1.1 KiB
Go
Raw Permalink Normal View History

2019-03-15 00:48:15 +00:00
package main
import (
2019-03-15 01:31:59 +00:00
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
2019-04-18 11:09:07 +00:00
"log"
2019-03-15 00:48:15 +00:00
"os"
"strings"
2019-03-15 13:07:20 +00:00
"time"
2019-03-15 00:48:15 +00:00
)
var stickSalt []byte
2019-04-16 12:48:32 +00:00
2019-03-15 00:48:15 +00:00
func expandPath(path string) (string, error) {
if !strings.HasPrefix(path, "~") {
return path, nil
}
homedir, err := os.UserHomeDir()
if err != nil {
return "", err
}
return homedir + path[1:], nil
}
2019-03-15 01:31:59 +00:00
func uniqueInts(input []int) []int {
u := make([]int, 0, len(input))
m := make(map[int]bool)
for _, val := range input {
if _, ok := m[val]; !ok {
m[val] = true
u = append(u, val)
}
}
return u
}
func stripLeadingCheckbox(line string) string {
line = strings.ToLower(line)
if startsWithCheckbox.MatchString(line) {
line = line[3:]
}
return line
}
2019-04-16 12:48:32 +00:00
func hashWithSalt(str string, salt []byte) string {
h := hmac.New(sha256.New, salt)
2019-03-15 01:31:59 +00:00
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}
2019-03-15 13:07:20 +00:00
2019-04-16 12:48:32 +00:00
func hash(str string) string {
return hashWithSalt(str, stickSalt)
2019-04-16 12:48:32 +00:00
}
2019-03-15 13:07:20 +00:00
func elapsed(what string) func() {
start := time.Now()
return func() {
2019-04-18 11:09:07 +00:00
log.Printf("%s: %v\n", what, time.Since(start))
2019-03-15 13:07:20 +00:00
}
}
2019-03-20 09:50:07 +00:00
func checkError(err error) {
2019-03-20 09:50:07 +00:00
if err != nil {
panic(err)
}
}