Sprites.Filesystem (Sprites v0.1.0)
View SourceFilesystem operations for sprites.
Provides file and directory operations similar to Elixir's File module,
but operating on files within a sprite container.
Usage
fs = Sprites.filesystem(sprite, "/app")
{:ok, content} = Sprites.Filesystem.read(fs, "config.json")
:ok = Sprites.Filesystem.write(fs, "output.txt", "data")Working Directory
The filesystem struct includes a working directory that serves as the base
for relative paths. Absolute paths (starting with /) are used as-is.
Summary
Functions
Represents a filesystem handle for a sprite.
Changes file permissions.
Changes file permissions, raising on error.
Copies a file or directory.
Copies a file or directory, raising on error.
Lists directory contents.
Lists directory contents, raising on error.
Creates directories recursively (like mkdir -p).
Creates directories recursively, raising on error.
Creates a new filesystem handle for a sprite.
Reads the contents of a file.
Reads the contents of a file, raising on error.
Renames a file or directory.
Renames a file or directory, raising on error.
Removes a single file (not recursive).
Removes a single file, raising on error.
Removes files or directories recursively (like rm -rf).
Removes files or directories recursively, raising on error.
Gets file or directory information.
Gets file or directory information, raising on error.
Writes data to a file.
Writes data to a file, raising on error.
Types
@type t() :: %Sprites.Filesystem{sprite: Sprites.Sprite.t(), working_dir: String.t()}
Functions
Represents a filesystem handle for a sprite.
Fields
:sprite- The sprite this filesystem operates on:working_dir- The working directory for relative paths
@spec chmod(t(), String.t(), non_neg_integer(), keyword()) :: :ok | {:error, term()}
Changes file permissions.
Options
:recursive- Apply to directory contents recursively (default: false)
Examples
:ok = Sprites.Filesystem.chmod(fs, "script.sh", 0o755)
@spec chmod!(t(), String.t(), non_neg_integer(), keyword()) :: :ok
Changes file permissions, raising on error.
Examples
Sprites.Filesystem.chmod!(fs, "script.sh", 0o755)
Copies a file or directory.
Options
:recursive- Copy directories recursively (default: false)
Examples
:ok = Sprites.Filesystem.cp(fs, "src.txt", "dst.txt")
:ok = Sprites.Filesystem.cp(fs, "src_dir", "dst_dir", recursive: true)
Copies a file or directory, raising on error.
Examples
Sprites.Filesystem.cp!(fs, "src.txt", "dst.txt")
Lists directory contents.
Examples
{:ok, entries} = Sprites.Filesystem.ls(fs, "/app")
Lists directory contents, raising on error.
Examples
entries = Sprites.Filesystem.ls!(fs, "/app")
Creates directories recursively (like mkdir -p).
Examples
:ok = Sprites.Filesystem.mkdir_p(fs, "deep/nested/path")
Creates directories recursively, raising on error.
Examples
Sprites.Filesystem.mkdir_p!(fs, "deep/nested/path")
@spec new(Sprites.Sprite.t(), String.t()) :: t()
Creates a new filesystem handle for a sprite.
Examples
fs = Sprites.Filesystem.new(sprite, "/app")
Reads the contents of a file.
Examples
{:ok, content} = Sprites.Filesystem.read(fs, "config.json")
{:error, :enoent} = Sprites.Filesystem.read(fs, "missing.txt")
Reads the contents of a file, raising on error.
Examples
content = Sprites.Filesystem.read!(fs, "config.json")
Renames a file or directory.
Examples
:ok = Sprites.Filesystem.rename(fs, "old.txt", "new.txt")
Renames a file or directory, raising on error.
Examples
Sprites.Filesystem.rename!(fs, "old.txt", "new.txt")
Removes a single file (not recursive).
Examples
:ok = Sprites.Filesystem.rm(fs, "file.txt")
Removes a single file, raising on error.
Examples
Sprites.Filesystem.rm!(fs, "file.txt")
Removes files or directories recursively (like rm -rf).
Examples
:ok = Sprites.Filesystem.rm_rf(fs, "directory")
Removes files or directories recursively, raising on error.
Examples
Sprites.Filesystem.rm_rf!(fs, "directory")
Gets file or directory information.
Returns a map with file stats including:
"name"- File/directory name"size"- Size in bytes"mode"- File permissions"isDir"- Whether it's a directory"modTime"- Modification time
Examples
{:ok, stat} = Sprites.Filesystem.stat(fs, "file.txt")
IO.inspect(stat["size"])
Gets file or directory information, raising on error.
Examples
stat = Sprites.Filesystem.stat!(fs, "file.txt")
Writes data to a file.
Creates parent directories if they don't exist.
Options
:mode- File permissions (default: 0o644)
Examples
:ok = Sprites.Filesystem.write(fs, "output.txt", "hello world")
:ok = Sprites.Filesystem.write(fs, "script.sh", "#!/bin/bash", mode: 0o755)
Writes data to a file, raising on error.
Examples
Sprites.Filesystem.write!(fs, "output.txt", "hello world")