Compare commits
No commits in common. "main" and "notashelf/push-wsulzmvymvxq" have entirely different histories.
main
...
notashelf/
403 changed files with 53193 additions and 57223 deletions
|
|
@ -1,32 +0,0 @@
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
end_of_line = lf
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[*.rs]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[justfile]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[*.toml]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
|
|
||||||
[*.nix]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[*.scss]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
BIN
Cargo.lock
generated
BIN
Cargo.lock
generated
Binary file not shown.
52
Cargo.toml
52
Cargo.toml
|
|
@ -1,5 +1,5 @@
|
||||||
[workspace]
|
[workspace]
|
||||||
members = ["crates/*", "packages/*", "xtask"]
|
members = ["crates/*", "xtask"]
|
||||||
exclude = ["crates/pinakes-core/tests/fixtures/test-plugin"]
|
exclude = ["crates/pinakes-core/tests/fixtures/test-plugin"]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
|
|
||||||
|
|
@ -11,44 +11,35 @@ readme = true
|
||||||
rust-version = "1.95.0" # follows nightly Rust
|
rust-version = "1.95.0" # follows nightly Rust
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
# Crate components for Pinakes. Those are the internal dependencies that are built
|
# Crate components for Pinakes.
|
||||||
# while building any package.
|
|
||||||
pinakes-core = { path = "./crates/pinakes-core" }
|
pinakes-core = { path = "./crates/pinakes-core" }
|
||||||
|
pinakes-server = { path = "./crates/pinakes-server" }
|
||||||
pinakes-plugin-api = { path = "./crates/pinakes-plugin-api" }
|
pinakes-plugin-api = { path = "./crates/pinakes-plugin-api" }
|
||||||
|
pinakes-ui = { path = "./crates/pinakes-ui" }
|
||||||
|
pinakes-tui = { path = "./crates/pinakes-tui" }
|
||||||
|
|
||||||
# Pinakes itself is a REST API server. UI and TUI are official visual components
|
tokio = { version = "1.49.0", features = ["full"] }
|
||||||
# that connect to the server. Using the API documentation, the user can write
|
|
||||||
# their own clients, but we separate "crates" and "packages" to establish the
|
|
||||||
# distinction properly.
|
|
||||||
pinakes-server = { path = "./packages/pinakes-server" }
|
|
||||||
pinakes-ui = { path = "./packages/pinakes-ui" }
|
|
||||||
pinakes-tui = { path = "./packages/pinakes-tui" }
|
|
||||||
|
|
||||||
# Other dependencies. Declaring them in the virtual manifests lets use reuse the crates
|
|
||||||
# without having to track individual crate version across different types of crates. This
|
|
||||||
# also includes *dev* dependencies.
|
|
||||||
tokio = { version = "1.50.0", features = ["full"] }
|
|
||||||
tokio-util = { version = "0.7.18", features = ["rt"] }
|
tokio-util = { version = "0.7.18", features = ["rt"] }
|
||||||
serde = { version = "1.0.228", features = ["derive"] }
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
serde_json = "1.0.149"
|
serde_json = "1.0.149"
|
||||||
toml = "1.0.7"
|
toml = "1.0.3"
|
||||||
clap = { version = "4.6.0", features = ["derive", "env"] }
|
clap = { version = "4.5.60", features = ["derive", "env"] }
|
||||||
chrono = { version = "0.4.44", features = ["serde"] }
|
chrono = { version = "0.4.44", features = ["serde"] }
|
||||||
uuid = { version = "1.22.0", features = ["v7", "serde"] }
|
uuid = { version = "1.21.0", features = ["v7", "serde"] }
|
||||||
thiserror = "2.0.18"
|
thiserror = "2.0.18"
|
||||||
anyhow = "1.0.102"
|
anyhow = "1.0.102"
|
||||||
tracing = "0.1.44"
|
tracing = "0.1.44"
|
||||||
tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json"] }
|
tracing-subscriber = { version = "0.3.22", features = ["env-filter", "json"] }
|
||||||
blake3 = "1.8.3"
|
blake3 = "1.8.3"
|
||||||
rustc-hash = "2.1.1"
|
rustc-hash = "2.1.1"
|
||||||
ed25519-dalek = { version = "2.2.0", features = ["std"] }
|
ed25519-dalek = { version = "2.1.1", features = ["std"] }
|
||||||
lofty = "0.23.3"
|
lofty = "0.23.2"
|
||||||
lopdf = "0.40.0"
|
lopdf = "0.39.0"
|
||||||
epub = "2.1.5"
|
epub = "2.1.5"
|
||||||
matroska = "0.30.0"
|
matroska = "0.30.0"
|
||||||
gray_matter = "0.3.2"
|
gray_matter = "0.3.2"
|
||||||
kamadak-exif = "0.6.1"
|
kamadak-exif = "0.6.1"
|
||||||
rusqlite = { version = "0.37.0", features = ["bundled", "column_decltype"] }
|
rusqlite = { version = "=0.37.0", features = ["bundled", "column_decltype"] }
|
||||||
tokio-postgres = { version = "0.7.16", features = [
|
tokio-postgres = { version = "0.7.16", features = [
|
||||||
"with-uuid-1",
|
"with-uuid-1",
|
||||||
"with-chrono-0_4",
|
"with-chrono-0_4",
|
||||||
|
|
@ -61,7 +52,7 @@ native-tls = "0.2.18"
|
||||||
refinery = { version = "0.9.0", features = ["rusqlite", "tokio-postgres"] }
|
refinery = { version = "0.9.0", features = ["rusqlite", "tokio-postgres"] }
|
||||||
walkdir = "2.5.0"
|
walkdir = "2.5.0"
|
||||||
notify = { version = "8.2.0", features = ["macos_fsevent"] }
|
notify = { version = "8.2.0", features = ["macos_fsevent"] }
|
||||||
winnow = "1.0.0"
|
winnow = "0.7.14"
|
||||||
axum = { version = "0.8.8", features = ["macros", "multipart"] }
|
axum = { version = "0.8.8", features = ["macros", "multipart"] }
|
||||||
axum-server = { version = "0.8.0" }
|
axum-server = { version = "0.8.0" }
|
||||||
tower = "0.5.3"
|
tower = "0.5.3"
|
||||||
|
|
@ -76,7 +67,7 @@ dioxus = { version = "0.7.3", features = ["desktop", "router"] }
|
||||||
dioxus-core = { version = "0.7.3" }
|
dioxus-core = { version = "0.7.3" }
|
||||||
async-trait = "0.1.89"
|
async-trait = "0.1.89"
|
||||||
futures = "0.3.32"
|
futures = "0.3.32"
|
||||||
image = { version = "0.25.10", default-features = false, features = [
|
image = { version = "0.25.9", default-features = false, features = [
|
||||||
"jpeg",
|
"jpeg",
|
||||||
"png",
|
"png",
|
||||||
"webp",
|
"webp",
|
||||||
|
|
@ -84,7 +75,7 @@ image = { version = "0.25.10", default-features = false, features = [
|
||||||
"tiff",
|
"tiff",
|
||||||
"bmp",
|
"bmp",
|
||||||
] }
|
] }
|
||||||
pulldown-cmark = "0.13.3"
|
pulldown-cmark = "0.13.1"
|
||||||
ammonia = "4.1.2"
|
ammonia = "4.1.2"
|
||||||
argon2 = { version = "0.5.3", features = ["std"] }
|
argon2 = { version = "0.5.3", features = ["std"] }
|
||||||
mime_guess = "2.0.5"
|
mime_guess = "2.0.5"
|
||||||
|
|
@ -93,18 +84,17 @@ dioxus-free-icons = { version = "0.10.0", features = ["font-awesome-solid"] }
|
||||||
rfd = "0.17.2"
|
rfd = "0.17.2"
|
||||||
gloo-timers = { version = "0.3.0", features = ["futures"] }
|
gloo-timers = { version = "0.3.0", features = ["futures"] }
|
||||||
rand = "0.10.0"
|
rand = "0.10.0"
|
||||||
moka = { version = "0.12.15", features = ["future"] }
|
moka = { version = "0.12.14", features = ["future"] }
|
||||||
urlencoding = "2.1.3"
|
urlencoding = "2.1.3"
|
||||||
image_hasher = "3.1.1"
|
image_hasher = "3.1.1"
|
||||||
percent-encoding = "2.3.2"
|
percent-encoding = "2.3.2"
|
||||||
http = "1.4.0"
|
http = "1.4.0"
|
||||||
wasmtime = { version = "43.0.0", features = ["component-model"] }
|
wasmtime = { version = "42.0.1", features = ["component-model"] }
|
||||||
wit-bindgen = "0.54.0"
|
wit-bindgen = "0.53.1"
|
||||||
tempfile = "3.27.0"
|
tempfile = "3.26.0"
|
||||||
utoipa = { version = "5.4.0", features = ["axum_extras", "uuid", "chrono"] }
|
utoipa = { version = "5.4.0", features = ["axum_extras", "uuid", "chrono"] }
|
||||||
utoipa-axum = { version = "0.2.0" }
|
utoipa-axum = { version = "0.2.0" }
|
||||||
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
||||||
http-body-util = "0.1.3"
|
|
||||||
|
|
||||||
# See:
|
# See:
|
||||||
# <https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html>
|
# <https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html>
|
||||||
|
|
|
||||||
32
HACKING.md
Normal file
32
HACKING.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Hacking Pinakes
|
||||||
|
|
||||||
|
Pinakes is a lot of things. One of the things it aims to be is _complete_. To be
|
||||||
|
complete in features, to be complete in documentation and to be complete in
|
||||||
|
hackability. This document covers, very comprehensively, how you may:
|
||||||
|
|
||||||
|
- Build Pinakes
|
||||||
|
- Develop Pinakes
|
||||||
|
- Contribute to Pinakes
|
||||||
|
|
||||||
|
for developers as well as:
|
||||||
|
|
||||||
|
- Distribute Pinakes
|
||||||
|
|
||||||
|
for Pinakes maintainers and packagers.
|
||||||
|
|
||||||
|
## Building Pinakes
|
||||||
|
|
||||||
|
Pinakes is built with Rust (nightly edition) and various crates. The most
|
||||||
|
_notable_ crate among those is Dioxus, which provides its own toolkit. The UI
|
||||||
|
for Pinakes is usually _not_ built with the Dioxus CLI but instead with
|
||||||
|
`cargo build`. This also applies to distributable build results.
|
||||||
|
|
||||||
|
[Direnv]: https://direnv.net
|
||||||
|
|
||||||
|
To build Pinakes, simply pick the components you want and build them with
|
||||||
|
`cargo build --release --package <component>`. A Nix shell is provided for
|
||||||
|
reproducible developer environments and you may obtain all build dependencies by
|
||||||
|
simply running `nix develop` or `direnv allow` if you use [Direnv]. Nix is a
|
||||||
|
cross-platform build tool and works on most Linux distributions as well as
|
||||||
|
Darwin. While distro-specific package managers _might_ work, Nix is the only
|
||||||
|
supported one.
|
||||||
BIN
LICENSE
BIN
LICENSE
Binary file not shown.
|
|
@ -4,9 +4,6 @@ edition.workspace = true
|
||||||
version.workspace = true
|
version.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|
||||||
[features]
|
|
||||||
ffmpeg-tests = []
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tokio = { workspace = true }
|
tokio = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
|
|
@ -46,13 +43,18 @@ moka = { workspace = true }
|
||||||
urlencoding = { workspace = true }
|
urlencoding = { workspace = true }
|
||||||
image_hasher = { workspace = true }
|
image_hasher = { workspace = true }
|
||||||
rustc-hash = { workspace = true }
|
rustc-hash = { workspace = true }
|
||||||
pinakes-plugin-api = { workspace = true }
|
|
||||||
wasmtime = { workspace = true }
|
# Plugin system
|
||||||
ed25519-dalek = { workspace = true }
|
pinakes-plugin-api.workspace = true
|
||||||
|
wasmtime.workspace = true
|
||||||
|
ed25519-dalek.workspace = true
|
||||||
|
|
||||||
|
[features]
|
||||||
|
ffmpeg-tests = []
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = { workspace = true }
|
tempfile = { workspace = true }
|
||||||
rand = { workspace = true }
|
rand = { workspace = true }
|
||||||
|
|
||||||
[lints]
|
|
||||||
workspace = true
|
|
||||||
|
|
|
||||||
|
|
@ -4,25 +4,32 @@ version.workspace = true
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|
||||||
[features]
|
|
||||||
default = []
|
|
||||||
wasm = ["wit-bindgen"]
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
# Core dependencies
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
thiserror = { workspace = true }
|
thiserror = { workspace = true }
|
||||||
async-trait = { workspace = true }
|
async-trait = { workspace = true }
|
||||||
tracing = { workspace = true }
|
tracing = { workspace = true }
|
||||||
|
|
||||||
|
# For plugin manifest parsing
|
||||||
toml = { workspace = true }
|
toml = { workspace = true }
|
||||||
|
|
||||||
|
# For media types and identifiers
|
||||||
uuid = { workspace = true }
|
uuid = { workspace = true }
|
||||||
chrono = { workspace = true }
|
chrono = { workspace = true }
|
||||||
mime_guess = { workspace = true }
|
mime_guess = { workspace = true }
|
||||||
rustc-hash = { workspace = true }
|
rustc-hash = { workspace = true }
|
||||||
wit-bindgen = { workspace = true, optional = true }
|
|
||||||
|
|
||||||
[dev-dependencies]
|
# WASM bridge types
|
||||||
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros"] }
|
wit-bindgen = { workspace = true, optional = true }
|
||||||
|
|
||||||
[lints]
|
[lints]
|
||||||
workspace = true
|
workspace = true
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
wasm = ["wit-bindgen"]
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros"] }
|
||||||
|
|
|
||||||
|
|
@ -36,10 +36,10 @@ utoipa = { workspace = true }
|
||||||
utoipa-axum = { workspace = true }
|
utoipa-axum = { workspace = true }
|
||||||
utoipa-swagger-ui = { workspace = true }
|
utoipa-swagger-ui = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
|
||||||
http-body-util = { workspace = true }
|
|
||||||
reqwest = { workspace = true }
|
|
||||||
tempfile = { workspace = true }
|
|
||||||
|
|
||||||
[lints]
|
[lints]
|
||||||
workspace = true
|
workspace = true
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
http-body-util = "0.1.3"
|
||||||
|
reqwest = { workspace = true }
|
||||||
|
tempfile = { workspace = true }
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue