62057485195982348dfef71bbd6c26d40d911735
虚拟Tree操作命令扩展: - Tree管理:create/list/import/delete(已有) - Folder操作:create/delete/rename(新增) - 文件操作:ls/cp/mv(新增) Folder操作命令: ✅ folder create: 创建文件夹(path/name/tree_type) markbase interface tree folder create --user accusys --path / --name NewFolder --tree-type categories ✅ folder delete: 删除文件夹(path/name/tree_type) markbase interface tree folder delete --user accusys --path / --name OldFolder --tree-type categories ✅ folder rename: 重命名文件夹(path/old_name/new_name/tree_type) markbase interface tree folder rename --user accusys --path / --old-name OldName --new-name NewName --tree-type categories 文件操作命令: ✅ ls: 列出文件夹内容(path/tree_type) markbase interface tree ls --user accusys --path /Downloads --tree-type categories 输出:📁文件夹 📄文件,带文件大小显示 ✅ cp: 复制文件/文件夹(source/target/tree_type) markbase interface tree cp --user accusys --source /Downloads/File.txt --target /Backup --tree-type categories 生成新node_id,保持原文件属性 ✅ mv: 移动/重命名文件/文件夹(source/target/tree_type) markbase interface tree mv --user accusys --source /Downloads/File.txt --target /Archive --tree-type categories 更新parent_id,不生成新node_id 技术实现: - 使用SQLite数据库(file_nodes表) - Path解析:支持多级路径(/path/to/folder) - Node查找:递归查找parent_id - UUID生成:Uuid::new_v4() - 时间戳:chrono::Utc::now().to_rfc3339() 数据表结构: - node_id: TEXT PRIMARY KEY(UUID) - label: TEXT NOT NULL(文件夹/文件名) - parent_id: TEXT(父文件夹ID) - node_type: TEXT(folder/file) - tree_type: TEXT(categories/series) - file_uuid: TEXT(文件UUID) - file_size: INTEGER(文件大小) - created_at/updated_at: TEXT(时间戳) 代码统计: - tree.rs: 330行(新增263行) - 编译成功:151警告,0错误 - 修改文件:1个(tree.rs) Git提交: - 文件变更:markbase-core/src/cli/interface/tree.rs - 新增代码:263行功能实现 - 编译状态:成功
fuse-backend-rs-fork
@ e92233933e
MarkBase
Momentry Display Engine - Markdown渲染與檔案樹管理系統
功能特色
- Markdown渲染(支援表格、footnote、tasklist) -檔案樹管理(SQLite持久化)
- REST API(18+路由)
- macOS音訊控制(音訊裝置切換、音量控制) -多種顯示模式(tree, list, grid_sm, grid_lg)
##安裝
###必要條件
- Rust 1.92+
- macOS(音訊功能需 macOS)
- SwitchAudioSource(音訊裝置切換)
#安裝 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#安裝 SwitchAudioSource(macOS)
brew install switchaudio-source
###建構
cargo build
##使用
###啟動伺服器
cargo run -- display #預設 port 11438
cargo run -- display -p8080 #自訂 port
cargo run -- display README.md #顯示指定檔案
###渲染 Markdown
cargo run -- render README.md #輸出到 stdout
cargo run -- render README.md -o output.html
##測試
cargo test #執行所有測試
cargo test test_insert #執行特定測試
File Tree功能
REST API
| 路由 | 方法 | 功能 |
|---|---|---|
/api/v2/tree/:user_id |
GET | 取得檔案樹 |
/api/v2/tree/:user_id/node |
POST | 建立節點 |
/api/v2/tree/:user_id/node/:node_id |
PUT/DELETE | 更新/刪除節點 |
/api/v2/tree/:user_id/node/:node_id/move |
PUT | 移動節點 |
/api/v2/tree/:user_id/node/:node_id/alias |
PATCH | 更新別名 |
###顯示模式
tree- 樹狀顯示list- 列表顯示grid_sm- 小格狀顯示grid_lg- 大格狀顯示
###範例
curl http://localhost:11438/api/v2/tree/demo?mode=tree
curl http://localhost:11438/api/v2/tree/demo?mode=list
Demo資料
data/users/demo.sqlite- 50節點範例資料data/cache/-範例檔案
##開發
見 AGENTS.md詳細開發指南。
CI/CD
使用 Gitea Actions:https://gitea.momentry.ddns.net
License
MIT
Description
Languages
C
43.6%
Rust
20.1%
D
15.6%
Assembly
8.9%
Swift
3.3%
Other
8.3%