cli/docs/services/io.md
Snider 5d4e081143 Refactor core tests and improve mock implementations
Signed-off-by: Snider <snider@lt.hn>
2025-11-04 13:12:09 +00:00

64 lines
2 KiB
Markdown

---
title: io
---
# Service: `io`
The `io` service provides a standardized interface for interacting with different storage backends, such as the local disk, S3, or SFTP.
## Types
### `type Medium`
`Medium` defines the standard interface for a storage backend.
```go
type Medium interface {
// Read retrieves the content of a file as a string.
Read(path string) (string, error)
// Write saves the given content to a file, overwriting it if it exists.
Write(path, content string) error
// EnsureDir makes sure a directory exists, creating it if necessary.
EnsureDir(path string) error
// IsFile checks if a path exists and is a regular file.
IsFile(path string) bool
// FileGet is a convenience function that reads a file from the medium.
FileGet(path string) (string, error)
// FileSet is a convenience function that writes a file to the medium.
FileSet(path, content string) error
}
```
### `type MockMedium`
`MockMedium` implements the `Medium` interface for testing purposes.
```go
type MockMedium struct {
Files map[string]string
Dirs map[string]bool
}
```
#### Methods
- `EnsureDir(path string) error`: Mocks creating a directory.
- `FileGet(path string) (string, error)`: Mocks reading a file.
- `FileSet(path, content string) error`: Mocks writing a file.
- `IsFile(path string) bool`: Mocks checking if a path is a file.
- `Read(path string) (string, error)`: Mocks reading a file.
- `Write(path, content string) error`: Mocks writing a file.
## Functions
- `Copy(sourceMedium Medium, sourcePath string, destMedium Medium, destPath string) error`: Copies a file from a source medium to a destination medium.
- `EnsureDir(m Medium, path string) error`: Ensures a directory exists on the given medium.
- `IsFile(m Medium, path string) bool`: Checks if a path is a file on the given medium.
- `Read(m Medium, path string) (string, error)`: Retrieves the content of a file from the given medium.
- `Write(m Medium, path, content string) error`: Saves content to a file on the given medium.
Would you like to see some examples of how to use this service?