Skip to content

Commit 8010b7f

Browse files
authored
feat: use single crate arch (#461)
- Uses single crate architecture - Implements file server as a `handler` and leaves UI in its own crate (non published to crates.io)
1 parent 9ffa604 commit 8010b7f

File tree

41 files changed

+733
-1002
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+733
-1002
lines changed

Cargo.lock

+560-425
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
[workspace]
22
members = [
3-
"crates/file-explorer",
4-
"crates/file-explorer-plugin",
5-
"crates/file-explorer-proto",
63
"crates/file-explorer-ui",
74
"crates/http-server",
8-
"crates/http-server-plugin",
95
]
106
default-members = ["crates/http-server"]
117
resolver = "1"
@@ -50,9 +46,3 @@ tower-layer = "0.3.3"
5046
tracing = "0.1.40"
5147
tracing-subscriber = "0.3.18"
5248
web-sys = "0.3.72"
53-
54-
# Workspace Crates
55-
file-explorer = { path = "crates/file-explorer" }
56-
file-explorer-proto = { path = "crates/file-explorer-proto" }
57-
file-explorer-ui = { path = "crates/file-explorer-ui" }
58-
http-server-plugin = { path = "crates/http-server-plugin" }

Makefile

+1-10
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,8 @@
33
default:
44
@echo No default target.
55

6-
dev: ui-build plugin-build
7-
cargo b --all && cargo r
8-
9-
release: plugin-build
10-
make -C ./crates/file-explorer-plugin release
11-
12-
plugin-build: ui-release
13-
make -C ./crates/file-explorer-plugin release
14-
156
ui-build:
16-
make -C ./crates/file-explorer-ui build
7+
make -C ./crates/file-explorer-ui release
178

189
ui-dev:
1910
@echo Starting File Explorer UI…

crates/file-explorer-plugin/Cargo.toml

-35
This file was deleted.

crates/file-explorer-plugin/Makefile

-9
This file was deleted.

crates/file-explorer-proto/Cargo.toml

-10
This file was deleted.

crates/file-explorer-ui/Cargo.toml

+1-3
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,9 @@ leptos = { workspace = true, features = ["csr"] }
2323
leptos_meta = { workspace = true, features = ["csr"] }
2424
leptos_router = { workspace = true, features = ["csr"] }
2525
reqwest = { workspace = true, features = ["json"] }
26-
rust-embed = { workspace = true }
26+
serde = { workspace = true, features = ["derive"] }
2727
web-sys = { workspace = true, features = ["FileList", "HtmlInputElement"] }
2828

29-
file-explorer-proto = { workspace = true }
30-
3129
[dev-dependencies]
3230
web-sys = { workspace = true }
3331

crates/file-explorer-ui/Makefile

-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
default:
44
@echo No default target.
55

6-
build:
7-
trunk build --locked --config ./Trunk.toml
8-
96
dev:
107
trunk serve --config ./Trunk.toml
118

crates/file-explorer-ui/src/api.rs crates/file-explorer-ui/src/api/mod.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
pub mod proto;
2+
13
use anyhow::Result;
24
use gloo::utils::window;
35
use reqwest::{header::CONTENT_TYPE, Url};
46
use web_sys::FormData;
57

6-
use file_explorer_proto::DirectoryIndex;
8+
use self::proto::DirectoryIndex;
79

810
pub struct FileDownload {
911
pub bytes: Vec<u8>,
File renamed without changes.

crates/file-explorer-ui/src/components/organisms/navigation_bar.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use leptos::{component, view, For, IntoView, Signal, SignalGet};
22

3-
use file_explorer_proto::BreadcrumbItem;
4-
3+
use crate::api::proto::BreadcrumbItem;
54
use crate::components::atoms::icons::House;
65

76
#[component]

crates/file-explorer-ui/src/components/pages/explorer.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ use leptos::{
33
component, create_memo, create_signal, spawn_local, view, IntoView, SignalGet, SignalSet,
44
};
55

6-
use file_explorer_proto::DirectoryIndex;
7-
6+
use crate::api::proto::DirectoryIndex;
87
use crate::api::Api;
98
use crate::components::organisms::action_bar::ActionBar;
109
use crate::components::organisms::navigation_bar::NavigationBar;

crates/file-explorer-ui/src/components/templates/file_list/entry.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use chrono::{DateTime, Local};
22
use leptos::{component, view, IntoView, View};
33

4-
use file_explorer_proto::EntryType;
4+
use crate::api::proto::EntryType;
55

66
use super::download_button::DownloadButton;
77
use super::entry_icon::EntryIcon;

crates/file-explorer-ui/src/components/templates/file_list/entry_icon.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use leptos::{component, view, IntoView};
22

3-
use file_explorer_proto::EntryType;
4-
3+
use crate::api::proto::EntryType;
54
use crate::components::atoms::icons::{File, Folder, Git, Justfile, Markdown, Rust, Toml};
65

76
#[component]

crates/file-explorer-ui/src/components/templates/file_list/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ mod entry_icon;
44

55
use leptos::{component, view, For, IntoView, Signal, SignalGet};
66

7-
use file_explorer_proto::DirectoryEntry;
7+
use crate::api::proto::DirectoryEntry;
88

99
use self::entry::Entry;
1010

crates/file-explorer-ui/src/lib.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,8 @@ mod components;
33

44
use leptos::{component, view, IntoView};
55
use leptos_meta::provide_meta_context;
6-
use rust_embed::Embed;
76

8-
use crate::components::pages::explorer::Explorer;
9-
10-
#[derive(Embed)]
11-
#[folder = "public/dist"]
12-
pub struct Assets;
7+
use self::components::pages::explorer::Explorer;
138

149
#[component]
1510
pub fn App() -> impl IntoView {

crates/file-explorer/Cargo.toml

-12
This file was deleted.

crates/http-server-plugin/Cargo.toml

-25
This file was deleted.

crates/http-server-plugin/build.rs

-4
This file was deleted.

crates/http-server-plugin/src/config.rs

-18
This file was deleted.

crates/http-server-plugin/src/lib.rs

-50
This file was deleted.

crates/http-server/Cargo.toml

+8-10
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,13 @@ keywords = ["configurable", "http", "server", "serve", "static"]
1010
license = "MIT OR Apache-2.0"
1111
readme = "README.md"
1212

13-
[[bin]]
14-
name = "http-server"
15-
path = "src/bin/main.rs"
16-
17-
[lib]
18-
name = "http_server_rs"
19-
path = "src/lib.rs"
20-
2113
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
2214

2315
[dependencies]
2416
anyhow = { workspace = true }
2517
async-trait = { workspace = true }
2618
bytes = { workspace = true }
19+
chrono = { workspace = true, features = ["serde"] }
2720
clap = { workspace = true, features = ["env", "derive", "std"] }
2821
dirs = { workspace = true }
2922
http = { workspace = true }
@@ -32,11 +25,16 @@ hyper = { workspace = true }
3225
hyper-util = { workspace = true, features = ["full"] }
3326
libloading = { workspace = true }
3427
local-ip-address = { workspace = true }
28+
mime_guess = { workspace = true }
29+
multer = { workspace = true }
30+
rust-embed = { workspace = true }
31+
percent-encoding = { workspace = true }
32+
serde = { workspace = true, features = ["derive"] }
33+
serde_json = { workspace = true }
3534
tokio = { workspace = true, features = ["fs", "rt-multi-thread", "signal", "macros"] }
35+
tokio-util = { workspace = true }
3636
tower-http = { workspace = true, features = ["cors"] }
3737
tower = { workspace = true, features = ["util"] }
3838
tower-layer = { workspace = true }
3939
tracing = { workspace = true }
4040
tracing-subscriber = { workspace = true, features = ["env-filter"] }
41-
42-
http-server-plugin = { workspace = true }

crates/http-server/Makefile

-7
This file was deleted.

crates/http-server/inline/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)