mirror of
				https://github.com/therootcompany/vfscopy
				synced 2025-10-30 20:52:50 +00:00 
			
		
		
		
	rename Copy => CopyAll, update docs
This commit is contained in:
		
							parent
							
								
									93990f5db8
								
							
						
					
					
						commit
						27eee51fbe
					
				
							
								
								
									
										38
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								README.md
									
									
									
									
									
								
							| @ -1,21 +1,49 @@ | ||||
| # vfscopy | ||||
| # [vfscopy](https://git.rootprojects.org/root/vfscopy) | ||||
| 
 | ||||
| Copy a Virtual FileSystem, such as | ||||
| Recursively copy a Virtual FileSystem, such as | ||||
| [http.FileSystem](https://golang.org/pkg/net/http/#FileSystem), | ||||
| recursively to a native file system destination. | ||||
| to a native file system destination. | ||||
| 
 | ||||
| Works with any file system that implements http.FileSystem, | ||||
| such as `vfsgen`, `fileb0x`, `gobindata`. | ||||
| including `vfsgen`, `fileb0x`, `gobindata` and most others. | ||||
| 
 | ||||
| ## Example: native file system (os) | ||||
| 
 | ||||
| ```go | ||||
| httpfs := http.Dir("/tmp/public/") | ||||
| vfs := vfscopy.NewVFS(httpfs) | ||||
| 
 | ||||
| if err := Copy(vfs, ".", "/tmp/dst/"); nil != err { | ||||
| if err := vfscopy.CopyAll(vfs, ".", "/tmp/dst/"); nil != err { | ||||
|     fmt.Fprintf(os.Stderr, "couldn't copy vfs: %v\n", err) | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## Example: vfsgen | ||||
| 
 | ||||
| **Note**: `vfsgen` does not support symlinks or file permissions. | ||||
| 
 | ||||
| ```go | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
|     "fmt" | ||||
| 
 | ||||
|     "git.rootprojects.org/root/vfscopy" | ||||
| 
 | ||||
|     // vfsgen-generated file system | ||||
|     "git.example.com/org/project/assets" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
|     vfs := vfscopy.NewVFS(assets.Assets) | ||||
| 
 | ||||
|     if err := vfscopy.CopyAll(vfs, ".", "/tmp/dst/"); nil != err { | ||||
|         fmt.Fprintf(os.Stderr, "couldn't copy vfs: %v\n", err) | ||||
|     } | ||||
|     fmt.Println("Done.") | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## Test | ||||
| 
 | ||||
| ```bash | ||||
|  | ||||
							
								
								
									
										4
									
								
								copy.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								copy.go
									
									
									
									
									
								
							| @ -13,8 +13,8 @@ const ( | ||||
| 	tmpPermissionForDirectory = os.FileMode(0755) | ||||
| ) | ||||
| 
 | ||||
| // Copy copies src to dest, doesn't matter if src is a directory or a file. | ||||
| func Copy(vfs FileSystem, src, dest string, opt ...Options) error { | ||||
| // CopyAll copies src to dest, doesn't matter if src is a directory or a file. | ||||
| func CopyAll(vfs FileSystem, src, dest string, opt ...Options) error { | ||||
| 	// FYI: os.Open does a proper lstat | ||||
| 	f, err := vfs.Open(src) | ||||
| 	if err != nil { | ||||
|  | ||||
| @ -26,7 +26,7 @@ func TestNativeRecursiveCopy(t *testing.T) { | ||||
| 			_ = os.RemoveAll(tmpDir) | ||||
| 		}() | ||||
| 
 | ||||
| 		if err := Copy(vfs, ".", tmpDir, opts); nil != err { | ||||
| 		if err := CopyAll(vfs, ".", tmpDir, opts); nil != err { | ||||
| 			t.Errorf("error: %v", err) | ||||
| 			return | ||||
| 		} | ||||
| @ -48,7 +48,7 @@ func TestVFSRecursiveCopy(t *testing.T) { | ||||
| 			_ = os.RemoveAll(tmpDir) | ||||
| 		}() | ||||
| 
 | ||||
| 		if err := Copy(vfs, ".", tmpDir, opts); nil != err { | ||||
| 		if err := CopyAll(vfs, ".", tmpDir, opts); nil != err { | ||||
| 			t.Errorf("copy error: %v", err) | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user