fix: do not read whole file on listings
License: MIT Signed-off-by: Henrique Dias <hacdias@gmail.com> Former-commit-id: c630ed523a9f599c3dd1eda5930baa020d0b9911 [formerly f89f524d2979e43d6c2fd99903552bfe89addbc1] [formerly ba05ce7e5c730a04681910d87378dcdf3acc809b [formerly 28b326ab1df32f41234c0d48f3555f1a18e2ffeb]] Former-commit-id: cc4832f376eb2e5d5c99dfdac9b1966448b4e48f [formerly f254f221fa44f016a8f22cb3414580bb3a57750b] Former-commit-id: 66c66d82ade69e62d32e05f8350166b2cdc3bb12
This commit is contained in:
		
							parent
							
								
									1db210a24f
								
							
						
					
					
						commit
						3890a9a416
					
				| 
						 | 
					@ -76,7 +76,7 @@ func NewFileInfo(opts FileOptions) (*FileInfo, error) {
 | 
				
			||||||
			return file, file.readListing(opts.Checker)
 | 
								return file, file.readListing(opts.Checker)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		err = file.detectType(opts.Modify)
 | 
							err = file.detectType(opts.Modify, true)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -126,7 +126,7 @@ func (i *FileInfo) Checksum(algo string) error {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (i *FileInfo) detectType(modify bool) error {
 | 
					func (i *FileInfo) detectType(modify, saveContent bool) error {
 | 
				
			||||||
	reader, err := i.Fs.Open(i.Path)
 | 
						reader, err := i.Fs.Open(i.Path)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
| 
						 | 
					@ -160,18 +160,21 @@ func (i *FileInfo) detectType(modify bool) error {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		i.Type = "text"
 | 
							i.Type = "text"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if !modify {
 | 
				
			||||||
 | 
								i.Type = "textImmutable"
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if saveContent {
 | 
				
			||||||
			afs := &afero.Afero{Fs: i.Fs}
 | 
								afs := &afero.Afero{Fs: i.Fs}
 | 
				
			||||||
			content, err := afs.ReadFile(i.Path)
 | 
								content, err := afs.ReadFile(i.Path)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if !modify {
 | 
					 | 
				
			||||||
			i.Type = "textImmutable"
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			i.Content = string(content)
 | 
								i.Content = string(content)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -238,7 +241,7 @@ func (i *FileInfo) readListing(checker rules.Checker) error {
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			listing.NumFiles++
 | 
								listing.NumFiles++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			err := file.detectType(true)
 | 
								err := file.detectType(true, false)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue