/
io.go
executable file
·126 lines (111 loc) · 2.69 KB
/
io.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*/
package utils
import (
"encoding/base64"
"io"
"net"
"os"
"path/filepath"
)
// DirMissingOrEmpty checks is a directory is missin or empty
func DirMissingOrEmpty(path string) (bool, error) {
dirExists, err := DirExists(path)
if err != nil {
return false, err
}
if !dirExists {
return true, nil
}
dirEmpty, err := DirEmpty(path)
if err != nil {
return false, err
}
if dirEmpty {
return true, nil
}
return false, nil
}
// DirExists checks if a directory exists
func DirExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
// DirEmpty checks if a directory is empty
func DirEmpty(path string) (bool, error) {
f, err := os.Open(path)
if err != nil {
return false, err
}
defer f.Close()
_, err = f.Readdir(1)
if err == io.EOF {
return true, nil
}
return false, err
}
// FileMissing checks if a file is missing
func FileMissing(path string, name string) (bool, error) {
_, err := os.Stat(filepath.Join(path, name))
if err != nil {
return true, err
}
return false, nil
}
// FilePathMissing returns true if the path is missing, false otherwise.
func FilePathMissing(path string) (bool, error) {
_, err := os.Stat(path)
if err != nil {
return true, err
}
return false, nil
}
// DecodeBase64 decodes from Base64
func DecodeBase64(in string) ([]byte, error) {
return base64.StdEncoding.DecodeString(in)
}
// EncodeBase64 encodes to Base64
func EncodeBase64(in []byte) string {
return base64.StdEncoding.EncodeToString(in)
}
// IntArrayEquals checks if the arrays of ints are the same
func IntArrayEquals(a []int, b []int) bool {
if len(a) != len(b) {
return false
}
for i, v := range a {
if v != b[i] {
return false
}
}
return true
}
// IsTCPPortOpen checks the tcp port is open
func IsTCPPortOpen(laddr string) error {
lis, err := net.Listen("tcp", laddr)
if err != nil {
return err
}
lis.Close()
return nil
}