ladycarbonfiber / Ephie

In memory file system learning project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ephie -- An in memeory file system

In memory file system mostly as a playground for async rust

Features

(When possible commands mirror gnu utils for discoverability)

  • Terminal Client

    • Interactive

    • Multi-user Concurrent Support

    • Auto clear

    • Help

  • List with ls

    • Working Directory

    • absolute path

    • relative path

    • parent path

  • Change working directory with cd

    • absolute path

    • parent path

    • relative path

  • Create a new directory with mkdir

    • absolute path

    • parent path

    • relative path

    • auto mkdir

  • Remove directory or "file" with rm

    • absolute path

    • parent path

    • relative path

  • Create a new file with touch

  • Write to file with write

  • Read out file with read

  • Search working directory with find

  • cp

    • Files

    • Directories

  • mv

    • Files

    • Directories

  • AuthZ

    • Assign users and groups to directories/files

    • create new

      • users

      • groups

    • assign/remove users to groups

    • switch users

    • Restrict access based on user/group membership

  • CI

    • Build on PR
    • Test on PR

Current Scope Limitiations

  • Relative parent directory (ie ../.. or foo/../bar)

  • Client file writes are overwrite

  • Only support unix; windows paths are awful

Requirements

Build

  • rust (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) to install the tool chain comes with cargo
  • cargo

Tests

cargo test in relevant folders

Build

bash build.sh

Release

bash release.sh

Run

bash run-server.sh

bash run-client.sh

About

In memory file system learning project


Languages

Language:Rust 99.6%Language:Shell 0.4%