https://github.com/creadone/baked_file_system
https://github.com/creadone/baked_file_system
Last synced: 7 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/creadone/baked_file_system
- Owner: creadone
- License: mit
- Created: 2020-08-18T02:35:09.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-02-26T02:18:31.000Z (over 5 years ago)
- Last Synced: 2025-01-02T04:27:16.406Z (over 1 year ago)
- Language: Crystal
- Size: 104 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Baked File System
[](https://travis-ci.org/schovi/baked_file_system)
Include (bake them) static files into a binary at compile time and access them anytime you need.
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
baked_file_system:
github: schovi/baked_file_system
version: 0.9.8
```
## Usage
A custom type that extends `BakedFileSystem` is used as a file system. The macro `bake_folder` bakes all files in
a given path into the virtual file system. Both relative and absolute paths are supported, as well as baking multiple
folders.
```crystal
require "baked_file_system"
class FileStorage
extend BakedFileSystem
bake_folder "/home/my_name/work/crystal_project/public"
bake_folder "../public"
end
```
Files can be loaded using `get` and `get?` class methods.
```crystal
file = FileStorage.get("path/to/file.png")
file.gets_to_end # returns content of file
file.path # returns path of file
file.size # returns size of original file
```
When try to get missing file, `get` raises a `BakedFileSystem::NoSuchFileError` exception
while `get?` returns `nil`.
```crystal
begin
FileStorage.get "missing/file"
rescue BakedFileSystem::NoSuchFileError
puts "File #{path} is missing"
end
FileStorage.get? "missing/file" # => nil
```
## Development
TODO: Write development instructions here
## Contributing
1. Fork it ( https://github.com/schovi/baked_file_system/fork )
2. Create your feature branch (git checkout -b my-new-feature)
3. Commit your changes (git commit -am 'Add some feature')
4. Push to the branch (git push origin my-new-feature)
5. Create a new Pull Request
## Contributors
- [schovi](https://github.com/schovi) David Schovanec - creator, maintainer