@@ -3,7 +3,6 @@ package commands
3
3
import (
4
4
"fmt"
5
5
"io"
6
- "os"
7
6
"path"
8
7
"strings"
9
8
@@ -98,8 +97,8 @@ remains to be implemented.
98
97
99
98
var ignoreFilePatterns []ignore.GitIgnore
100
99
101
- // Check the $ IPFS_PATH
102
- if ipfs_path := os . Getenv ( "$IPFS_PATH" ) ; len (ipfs_path ) > 0 {
100
+ // Check the IPFS_PATH
101
+ if ipfs_path := req . Context (). ConfigRoot ; len (ipfs_path ) > 0 {
103
102
baseFilePattern , err := ignore .CompileIgnoreFile (path .Join (ipfs_path , ".ipfsignore" ))
104
103
if err == nil && baseFilePattern != nil {
105
104
ignoreFilePatterns = append (ignoreFilePatterns , * baseFilePattern )
@@ -130,7 +129,7 @@ remains to be implemented.
130
129
localIgnorePatterns = checkForLocalIgnorePatterns (parentPath , ignoreFilePatterns )
131
130
}
132
131
133
- rootnd , err := addFile (n , file , outChan , progress , wrap , hidden , localIgnorePatterns )
132
+ rootnd , err := addFile (n , addParams { file , outChan , progress , wrap , hidden , localIgnorePatterns } )
134
133
if err != nil {
135
134
res .SetError (err , cmds .ErrNormal )
136
135
return
@@ -236,6 +235,15 @@ remains to be implemented.
236
235
Type : AddedObject {},
237
236
}
238
237
238
+ type addParams struct {
239
+ file files.File
240
+ out chan interface {}
241
+ progress bool
242
+ wrap bool
243
+ hidden bool
244
+ ignoreFilePatterns []ignore.GitIgnore
245
+ }
246
+
239
247
func add (n * core.IpfsNode , reader io.Reader ) (* dag.Node , error ) {
240
248
node , err := importer .BuildDagFromReader (reader , n .DAG , nil , chunk .DefaultSplitter )
241
249
if err != nil {
@@ -250,41 +258,41 @@ func add(n *core.IpfsNode, reader io.Reader) (*dag.Node, error) {
250
258
return node , nil
251
259
}
252
260
253
- func addFile (n * core.IpfsNode , file files. File , out chan interface {}, progress bool , wrap bool , hidden bool , ignoreFilePatterns []ignore. GitIgnore ) (* dag.Node , error ) {
261
+ func addFile (n * core.IpfsNode , params addParams ) (* dag.Node , error ) {
254
262
// Check if file is hidden
255
- if fileIsHidden := files .IsHidden (file ); fileIsHidden && ! hidden {
256
- log .Debugf ("%s is hidden, skipping" , file .FileName ())
257
- return nil , & hiddenFileError {file .FileName ()}
263
+ if fileIsHidden := files .IsHidden (params . file ); fileIsHidden && ! params . hidden {
264
+ log .Debugf ("%s is hidden, skipping" , params . file .FileName ())
265
+ return nil , & hiddenFileError {params . file .FileName ()}
258
266
}
259
267
260
268
// Check for ignore files matches
261
- for i := range ignoreFilePatterns {
262
- if ignoreFilePatterns [i ].MatchesPath (file .FileName ()) {
263
- log .Debugf ("%s is ignored file, skipping" , file .FileName ())
264
- return nil , & ignoreFileError {file .FileName ()}
269
+ for i := range params . ignoreFilePatterns {
270
+ if params . ignoreFilePatterns [i ].MatchesPath (params . file .FileName ()) {
271
+ log .Debugf ("%s is ignored file, skipping" , params . file .FileName ())
272
+ return nil , & ignoreFileError {params . file .FileName ()}
265
273
}
266
274
}
267
275
268
276
// Check if "file" is actually a directory
269
- if file .IsDirectory () {
270
- return addDir (n , file , out , progress , hidden , ignoreFilePatterns )
277
+ if params . file .IsDirectory () {
278
+ return addDir (n , params )
271
279
}
272
280
273
281
// if the progress flag was specified, wrap the file so that we can send
274
282
// progress updates to the client (over the output channel)
275
- var reader io.Reader = file
276
- if progress {
277
- reader = & progressReader {file : file , out : out }
283
+ var reader io.Reader = params . file
284
+ if params . progress {
285
+ reader = & progressReader {file : params . file , out : params . out }
278
286
}
279
287
280
- if wrap {
281
- p , dagnode , err := coreunix .AddWrapped (n , reader , path .Base (file .FileName ()))
288
+ if params . wrap {
289
+ p , dagnode , err := coreunix .AddWrapped (n , reader , path .Base (params . file .FileName ()))
282
290
if err != nil {
283
291
return nil , err
284
292
}
285
- out <- & AddedObject {
293
+ params . out <- & AddedObject {
286
294
Hash : p ,
287
- Name : file .FileName (),
295
+ Name : params . file .FileName (),
288
296
}
289
297
return dagnode , nil
290
298
}
@@ -294,31 +302,31 @@ func addFile(n *core.IpfsNode, file files.File, out chan interface{}, progress b
294
302
return nil , err
295
303
}
296
304
297
- log .Infof ("adding file: %s" , file .FileName ())
298
- if err := outputDagnode (out , file .FileName (), dagnode ); err != nil {
305
+ log .Infof ("adding file: %s" , params . file .FileName ())
306
+ if err := outputDagnode (params . out , params . file .FileName (), dagnode ); err != nil {
299
307
return nil , err
300
308
}
301
309
return dagnode , nil
302
310
}
303
311
304
- func addDir (n * core.IpfsNode , dir files. File , out chan interface {}, progress bool , hidden bool , ignoreFilePatterns []ignore. GitIgnore ) (* dag.Node , error ) {
312
+ func addDir (n * core.IpfsNode , params addParams ) (* dag.Node , error ) {
305
313
306
314
tree := & dag.Node {Data : ft .FolderPBData ()}
307
- log .Infof ("adding directory: %s" , dir .FileName ())
315
+ log .Infof ("adding directory: %s" , params . file .FileName ())
308
316
309
317
// Check for an .ipfsignore file that is local to this Dir and append to the incoming
310
- localIgnorePatterns := checkForLocalIgnorePatterns (dir . FileName (), ignoreFilePatterns )
318
+ localIgnorePatterns := checkForLocalIgnorePatterns (params . file . FileName (), params . ignoreFilePatterns )
311
319
312
320
for {
313
- file , err := dir .NextFile ()
321
+ file , err := params . file .NextFile ()
314
322
if err != nil && err != io .EOF {
315
323
return nil , err
316
324
}
317
325
if file == nil {
318
326
break
319
327
}
320
328
321
- node , err := addFile (n , file , out , progress , false , hidden , localIgnorePatterns )
329
+ node , err := addFile (n , addParams { file , params . out , params . progress , false , params . hidden , localIgnorePatterns } )
322
330
if _ , ok := err .(* hiddenFileError ); ok {
323
331
// hidden file error, set the node to nil for below
324
332
node = nil
@@ -339,7 +347,7 @@ func addDir(n *core.IpfsNode, dir files.File, out chan interface{}, progress boo
339
347
}
340
348
}
341
349
342
- err := outputDagnode (out , dir .FileName (), tree )
350
+ err := outputDagnode (params . out , params . file .FileName (), tree )
343
351
if err != nil {
344
352
return nil , err
345
353
}
@@ -353,12 +361,7 @@ func addDir(n *core.IpfsNode, dir files.File, out chan interface{}, progress boo
353
361
}
354
362
355
363
func checkForLocalIgnorePatterns (dir string , ignoreFilePatterns []ignore.GitIgnore ) []ignore.GitIgnore {
356
- var ignorePathname string
357
- if dir == "." {
358
- ignorePathname = ".ipfsignore"
359
- } else {
360
- ignorePathname = path .Join (dir , ".ipfsignore" )
361
- }
364
+ ignorePathname := path .Join (dir , ".ipfsignore" )
362
365
363
366
localIgnore , ignoreErr := ignore .CompileIgnoreFile (ignorePathname )
364
367
if ignoreErr == nil && localIgnore != nil {
0 commit comments