module BakedFileSystem

Overview

A BakedFileSystem allows to include ("bake") static files into a compiled binary and make them accessible at runtime using their path.

Usage

# Using BakedFileSystem.load
class MyFileSystem
  extend BakedFileSystem
  bake_folder "path/to/root/folder"
end

# Creating a file manually
class MyFileSystem
  extend BakedFileSystem
  bake_file "hello-world.txt", "Hello World\n"
end

Defined in:

baked_file_system.cr
baked_file_system/version.cr
loader/loader.cr

Constant Summary

VERSION = "0.9.0"

Macro Summary

Instance Method Summary

Macro Detail

macro bake_folder(path, dir = __DIR__, allow_empty = false) #

Bakes all files in path into this baked file system. If path is relative, it will be based on dir which defaults to __DIR__. It will raise if there are no files found in path unless allow_empty is set to true.


[View source]
macro load(path, dir = __DIR__, allow_empty = false) #

Creates a baked file system and loads contents of files in path. If path is relative, it will be based on dir which defaults to __DIR__. It will raise if there are no files found in path unless allow_empty is set to true.

DEPRECATED Use extend BakedFileSystem and bake_folder instead.


[View source]

Instance Method Detail

def bake_file(path : String, content) #

Creates a BakedFile at path with content content and adds it to this file system.


[View source]
def bake_file(file : BakedFile) #

Adds a baked file to this file system.


[View source]
def files : Array(BakedFileSystem::BakedFile) #

Returns all virtual files in this file system.


[View source]
def get(path : String) : BakedFile #

Returns a BakedFile at path.

Raises NoSuchFileError if the virtual file does not exist.


[View source]
def get?(path : String) : BakedFile | Nil #

Returns a BakedFile at path or nil if the virtual file does not exist.


[View source]