Passed
Push — master ( fa43e1...831c24 )
by Valentin
02:08
created

util.RootDir   A

Complexity

Conditions 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
package util
2
3
import (
4
	"encoding/csv"
5
	"log"
6
	"os"
7
	"path/filepath"
8
	"strings"
9
)
10
11
func RootDir() (string, error) {
12
	path, err := os.Executable()
13
	if err != nil {
14
		return "", err
15
	}
16
17
	return filepath.Dir(path), nil
18
}
19
20
func MustOpenReadonlyFile(filename string) *os.File {
21
	file, err := os.OpenFile(filename, os.O_RDONLY, os.ModePerm)
22
	if err != nil {
23
		log.Fatalln(err)
24
	}
25
26
	return file
27
}
28
29
func GetCSVReader(file *os.File, sep rune) *csv.Reader {
30
	reader := csv.NewReader(file)
31
	reader.Comma = sep
32
	reader.FieldsPerRecord = -1
33
34
	return reader
35
}
36
37
func FileExists(filename string) bool {
38
	_, err := os.Stat(filename)
39
40
	return err == nil
41
}
42
43
func Extension(filename string) string {
44
	return strings.Trim(filepath.Ext(filename), ".")
45
}
46
47
func Abs(path string) string {
48
	abs, err := filepath.Abs(path)
49
	if err == nil {
50
		return abs
51
	}
52
53
	return path
54
}
55
56
func PathsEqual(p1, p2 string) bool {
57
	p1 = strings.TrimRight(p1, "/\\")
58
	p2 = strings.TrimRight(p2, "/\\")
59
60
	if p1 == p2 {
61
		return true
62
	}
63
64
	p1 = strings.Replace(p1, "/", string(os.PathSeparator), -1)
65
	p1 = strings.Replace(p1, "\\", string(os.PathSeparator), -1)
66
	p2 = strings.Replace(p2, "/", string(os.PathSeparator), -1)
67
	p2 = strings.Replace(p2, "\\", string(os.PathSeparator), -1)
68
69
	return p1 == p2
70
}
71