{"id":18534903,"url":"https://github.com/gregorykogan/file-system","last_synced_at":"2025-07-23T05:36:09.993Z","repository":{"id":209714443,"uuid":"724192907","full_name":"GregoryKogan/file-system","owner":"GregoryKogan","description":"C++ virtual file system emulator with FAT structure, supporting directories, files, metadata, and cluster-based storage.","archived":false,"fork":false,"pushed_at":"2025-06-28T22:05:34.000Z","size":1216,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-28T23:19:28.956Z","etag":null,"topics":["cli","command-line-tool","cpp","data-storage","educational","fat","file-allocation","file-management","filesystem","filesystem-emulator","learning-project","storage-emulator"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GregoryKogan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-27T15:27:19.000Z","updated_at":"2025-06-28T22:12:26.000Z","dependencies_parsed_at":"2023-12-20T19:25:28.271Z","dependency_job_id":"44ce3f68-0b31-4c7e-9714-82ffc5407828","html_url":"https://github.com/GregoryKogan/file-system","commit_stats":null,"previous_names":["gregorykogan/file-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GregoryKogan/file-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GregoryKogan%2Ffile-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GregoryKogan%2Ffile-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GregoryKogan%2Ffile-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GregoryKogan%2Ffile-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GregoryKogan","download_url":"https://codeload.github.com/GregoryKogan/file-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GregoryKogan%2Ffile-system/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266625008,"owners_count":23958304,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line-tool","cpp","data-storage","educational","fat","file-allocation","file-management","filesystem","filesystem-emulator","learning-project","storage-emulator"],"created_at":"2024-11-06T19:17:51.394Z","updated_at":"2025-07-23T05:36:09.976Z","avatar_url":"https://github.com/GregoryKogan.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FAT File System Emulator\n\n![GitHub License](https://img.shields.io/github/license/GregoryKogan/file-system)\n![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/GregoryKogan/file-system/cmake-multi-platform.yml?logo=github\u0026label=tests)\n![](https://tokei.ekzhang.com/b1/github/GregoryKogan/file-system)\n\n## Introduction\n\nThis project is a custom-built file system emulator written in C++, simulating core file system operations like creating, reading, writing, copying, and removing files and directories. It offers a fully functional Command-Line Interface (CLI) for interacting with the virtual file system. This project provides an educational and testable environment to understand file system behaviors and operations.\n\n## Table of Contents\n\n* [Introduction](#introduction)\n* [Features](#features)\n* [Installation](#installation)\n* [Usage](#usage)\n* [Available Commands](#available-commands)\n* [Project Structure](#project-structure)\n* [Dependencies](#dependencies)\n* [Testing](#testing)\n* [Examples](#examples)\n* [Troubleshooting](#troubleshooting)\n* [License](#license)\n\n## Features\n\n✅ Custom file system with cluster-based storage  \n✅ FAT (File Allocation Table) management  \n✅ Directory structure and metadata handling  \n✅ File read/write, import/export, and copy/move functionalities  \n✅ CLI for interactive user commands  \n✅ Unit tests for critical components  \n✅ Cross-platform build via CMake and GitHub Actions  \n\n## Installation\n\n### Prerequisites\n\n* CMake (version 3.15 or later recommended)\n* C++17 compatible compiler (GCC, Clang, etc.)\n* Git\n\n### Build Steps\n\n```bash\ngit clone \u003crepository-url\u003e\ncd \u003crepository-root\u003e\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake\n```\n\nTo run tests:\n\n```bash\nctest --output-on-failure\n```\n\n## Usage\n\nAfter building, run the CLI:\n\n```bash\n./cli\n```\n\nExample interaction:\n\n```bash\nWelcome to the File System!\nType 'help' to see available commands.\n```\n\n## Available Commands\n\n* `help` — Show help message\n* `exit` — Exit the program\n* `clear` — Clear the terminal screen\n* `makefs \u003cpath\u003e \u003csize\u003e \u003ccluster_size\u003e` — Create a new file system\n* `openfs \u003cpath\u003e` — Open an existing file system\n* `fsinfo` — Display file system information\n* `pwd` — Show current working directory\n* `ls [-l] \u003cpath\u003e` — List directory contents\n* `mkdir \u003cpath\u003e` — Create a directory\n* `cd \u003cpath\u003e` — Change directory\n* `touch \u003cpath\u003e` — Create an empty file\n* `cat \u003cpath\u003e` — Print file contents\n* `stat \u003cpath\u003e` — Show file metadata\n* `rmdir \u003cpath\u003e` — Remove directory\n* `rm [-r] \u003cpath\u003e` — Remove files or directories\n* `cp [-r] \u003csrc\u003e \u003cdst\u003e` — Copy files or directories\n* `mv [-r] \u003csrc\u003e \u003cdst\u003e` — Move files or directories\n* `import \u003chost_path\u003e \u003cfs_path\u003e` — Import file from host\n* `export \u003cfs_path\u003e \u003chost_path\u003e` — Export file to host\n\n## Project Structure\n\n```\n.github/workflows/      # CI/CD configuration for multi-platform builds  \nassets/                 # Sample files for import/export testing  \nsrc/                    # Core source code  \n ├── CLI/               # Command-Line Interface implementation  \n ├── FileSystem/        # File system components (FAT, Metadata, File Handlers, etc.)  \ntests/                  # Unit and integration tests  \nCMakeLists.txt          # Build configuration  \nREADME.md               # Project documentation  \nLICENSE                 # License information  \n```\n\n## Dependencies\n\n* C++17 Standard Library\n* CMake for building\n* No external runtime dependencies required\n\n## Testing\n\nRun tests after building:\n\n```bash\nctest --output-on-failure\n```\n\nUnit tests cover:\n\n* Directory and file operations\n* FAT cluster management\n* File read/write logic\n* CLI command correctness\n\n## Examples\n\nCreate and use a file system:\n\n```bash\nmakefs myfs.fs 1048576 256\nopenfs myfs.fs\nmkdir /docs\ntouch /docs/readme.txt\nimport hostfile.txt /docs/readme.txt\nls /docs\ncat /docs/readme.txt\nexport /docs/readme.txt exported.txt\n```\n\n## Troubleshooting\n\n* **Cannot open file system**: Ensure the `.fs` file exists and is accessible\n* **Command not recognized**: Use `help` to verify command syntax\n* **Build issues**: Confirm correct compiler and CMake version installed\n\n## License\n\nThis project is licensed under the terms of the [LICENSE](LICENSE) file included in the repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorykogan%2Ffile-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregorykogan%2Ffile-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorykogan%2Ffile-system/lists"}