@@ -53,6 +53,11 @@ func main() {
53
53
Value : "." ,
54
54
Usage : "Path to watch files from" ,
55
55
},
56
+ cli.StringSliceFlag {
57
+ Name : "excludeDir,x" ,
58
+ Value : & cli.StringSlice {},
59
+ Usage : "Relative directories to exclude" ,
60
+ },
56
61
cli.BoolFlag {
57
62
Name : "immediate,i" ,
58
63
Usage : "run the server immediately after it's built" ,
@@ -119,7 +124,7 @@ func MainAction(c *cli.Context) {
119
124
build (builder , runner , logger )
120
125
121
126
// scan for changes
122
- scanChanges (c .GlobalString ("path" ), func (path string ) {
127
+ scanChanges (c .GlobalString ("path" ), c . GlobalStringSlice ( "excludeDir" ), func (path string ) {
123
128
runner .Kill ()
124
129
build (builder , runner , logger )
125
130
})
@@ -160,12 +165,17 @@ func build(builder gin.Builder, runner gin.Runner, logger *log.Logger) {
160
165
161
166
type scanCallback func (path string )
162
167
163
- func scanChanges (watchPath string , cb scanCallback ) {
168
+ func scanChanges (watchPath string , excludeDirs [] string , cb scanCallback ) {
164
169
for {
165
170
filepath .Walk (watchPath , func (path string , info os.FileInfo , err error ) error {
166
171
if path == ".git" {
167
172
return filepath .SkipDir
168
173
}
174
+ for _ , x := range excludeDirs {
175
+ if x == path {
176
+ return filepath .SkipDir
177
+ }
178
+ }
169
179
170
180
// ignore hidden files
171
181
if filepath .Base (path )[0 ] == '.' {
0 commit comments