Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
52ebaece
Commit
52ebaece
authored
Dec 09, 2013
by
skyblue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add other utils
parent
830ccb66
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
123 additions
and
0 deletions
+123
-0
file.go
utils/file.go
+68
-0
file_test.go
utils/file_test.go
+48
-0
grepe.test
utils/testdata/grepe.test
+7
-0
No files found.
utils/file.go
View file @
52ebaece
package
utils
import
(
"bufio"
"errors"
"io"
"os"
"path/filepath"
"regexp"
)
func
SelfPath
()
string
{
path
,
_
:=
filepath
.
Abs
(
os
.
Args
[
0
])
return
path
}
func
SelfDir
()
string
{
return
filepath
.
Dir
(
SelfPath
())
}
// FileExists reports whether the named file or directory exists.
func
FileExists
(
name
string
)
bool
{
if
_
,
err
:=
os
.
Stat
(
name
);
err
!=
nil
{
if
os
.
IsNotExist
(
err
)
{
return
false
}
}
return
true
}
// search a file in paths.
// this is offen used in search config file in /etc ~/
func
LookFile
(
filename
string
,
paths
...
string
)
(
fullpath
string
,
err
error
)
{
for
_
,
path
:=
range
paths
{
if
fullpath
=
filepath
.
Join
(
path
,
filename
);
FileExists
(
fullpath
)
{
return
}
}
err
=
errors
.
New
(
fullpath
+
" not found in paths"
)
return
}
// like command grep -E
// for example: GrepE(`^hello`, "hello.txt")
// \n is striped while read
func
GrepE
(
patten
string
,
filename
string
)
(
lines
[]
string
,
err
error
)
{
re
,
err
:=
regexp
.
Compile
(
patten
)
if
err
!=
nil
{
return
}
fd
,
err
:=
os
.
Open
(
filename
)
if
err
!=
nil
{
return
}
lines
=
make
([]
string
,
0
)
reader
:=
bufio
.
NewReader
(
fd
)
prefix
:=
""
for
{
byteLine
,
isPrefix
,
er
:=
reader
.
ReadLine
()
if
er
!=
nil
&&
er
!=
io
.
EOF
{
return
nil
,
er
}
line
:=
string
(
byteLine
)
if
isPrefix
{
prefix
+=
line
continue
}
line
=
prefix
+
line
if
re
.
MatchString
(
line
)
{
lines
=
append
(
lines
,
line
)
}
if
er
==
io
.
EOF
{
break
}
}
return
lines
,
nil
}
utils/file_test.go
View file @
52ebaece
package
utils
import
(
"path/filepath"
"reflect"
"testing"
)
var
noExistedFile
=
"/tmp/not_existed_file"
func
TestSelfPath
(
t
*
testing
.
T
)
{
path
:=
SelfPath
()
if
path
==
""
{
...
...
@@ -11,3 +15,47 @@ func TestSelfPath(t *testing.T) {
}
t
.
Logf
(
"SelfPath: %s"
,
path
)
}
func
TestSelfDir
(
t
*
testing
.
T
)
{
dir
:=
SelfDir
()
t
.
Logf
(
"SelfDir: %s"
,
dir
)
}
func
TestFileExists
(
t
*
testing
.
T
)
{
if
!
FileExists
(
"/bin/echo"
)
{
t
.
Errorf
(
"/bin/echo should exists, but it didn't"
)
}
if
FileExists
(
noExistedFile
)
{
t
.
Errorf
(
"Wierd, how could this file exists: %s"
,
noExistedFile
)
}
}
func
TestLookFile
(
t
*
testing
.
T
)
{
path
,
err
:=
LookFile
(
filepath
.
Base
(
SelfPath
()),
SelfDir
())
if
err
!=
nil
{
t
.
Error
(
err
)
}
t
.
Log
(
path
)
path
,
err
=
LookFile
(
noExistedFile
,
"."
)
if
err
==
nil
{
t
.
Errorf
(
"err shouldnot be nil, got path: %s"
,
SelfDir
())
}
}
func
TestGrepE
(
t
*
testing
.
T
)
{
_
,
err
:=
GrepE
(
""
,
noExistedFile
)
if
err
==
nil
{
t
.
Error
(
"expect file-not-existed error, but got nothing"
)
}
path
:=
filepath
.
Join
(
"."
,
"testdata"
,
"grepe.test"
)
lines
,
err
:=
GrepE
(
`^\s*[^#]+`
,
path
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
if
!
reflect
.
DeepEqual
(
lines
,
[]
string
{
"hello"
,
"world"
})
{
t
.
Errorf
(
"expect [hello world], but receive %v"
,
lines
)
}
}
utils/testdata/grepe.test
0 → 100644
View file @
52ebaece
# empty lines
hello
# comment
world
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment