🍱 Añade gestión de recursos estáticos de PageTop

This commit is contained in:
Manuel Cillero 2025-07-28 18:33:50 +02:00
parent 0f9daa7403
commit 7d7920237f
6 changed files with 39 additions and 9 deletions

3
Cargo.lock generated
View file

@ -1569,7 +1569,7 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]] [[package]]
name = "pagetop" name = "pagetop"
version = "0.0.13" version = "0.0.14"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-session", "actix-session",
@ -1582,6 +1582,7 @@ dependencies = [
"figlet-rs", "figlet-rs",
"fluent-templates", "fluent-templates",
"itoa", "itoa",
"pagetop-build",
"pagetop-macros", "pagetop-macros",
"parking_lot", "parking_lot",
"pastey", "pastey",

View file

@ -1,6 +1,6 @@
[package] [package]
name = "pagetop" name = "pagetop"
version = "0.0.13" version = "0.0.14"
edition = "2021" edition = "2021"
description = """\ description = """\
@ -42,7 +42,7 @@ static-files.workspace = true
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
pagetop-macros = { version = "0.0", path = "helpers/pagetop-macros" } pagetop-macros.workspace = true
[features] [features]
default = [] default = []
@ -51,6 +51,8 @@ testing = []
[dev-dependencies] [dev-dependencies]
tempfile = "3.20.0" tempfile = "3.20.0"
[build-dependencies]
pagetop-build.workspace = true
[workspace] [workspace]
@ -68,3 +70,6 @@ authors = ["Manuel Cillero <manuel@cillero.es>"]
[workspace.dependencies] [workspace.dependencies]
static-files = "0.2.5" static-files = "0.2.5"
pagetop-build = { version = "0.0", path = "helpers/pagetop-build" }
pagetop-macros = { version = "0.0", path = "helpers/pagetop-macros" }

7
build.rs Normal file
View file

@ -0,0 +1,7 @@
use pagetop_build::StaticFilesBundle;
fn main() -> std::io::Result<()> {
StaticFilesBundle::from_dir("./static", None)
.with_name("assets")
.build()
}

View file

@ -1,7 +1,7 @@
use crate::core::action::add_action; use crate::core::action::add_action;
use crate::core::extension::ExtensionRef; use crate::core::extension::ExtensionRef;
use crate::core::theme::all::THEMES; use crate::core::theme::all::THEMES;
use crate::{/*global, include_files, include_files_service, */ service, trace}; use crate::{global, include_files, include_files_service, service, trace};
use parking_lot::RwLock; use parking_lot::RwLock;
@ -125,13 +125,13 @@ pub fn initialize_extensions() {
// CONFIGURA LOS SERVICIOS ************************************************************************* // CONFIGURA LOS SERVICIOS *************************************************************************
//include_files!(assets); include_files!(assets);
pub fn configure_services(scfg: &mut service::web::ServiceConfig) { pub fn configure_services(scfg: &mut service::web::ServiceConfig) {
for extension in ENABLED_EXTENSIONS.read().iter() { for extension in ENABLED_EXTENSIONS.read().iter() {
extension.configure_service(scfg); extension.configure_service(scfg);
} }
/*include_files_service!( include_files_service!(
scfg, assets => "/", [&global::SETTINGS.dev.pagetop_project_dir, "static"] scfg, assets => "/", [&global::SETTINGS.dev.pagetop_project_dir, "static"]
);*/ );
} }

View file

@ -12,6 +12,9 @@ include_config!(SETTINGS: Settings => [
"app.language" => "en-US", "app.language" => "en-US",
"app.startup_banner" => "Slant", "app.startup_banner" => "Slant",
// [dev]
"dev.pagetop_project_dir" => "",
// [log] // [log]
"log.enabled" => true, "log.enabled" => true,
"log.tracing" => "Info", "log.tracing" => "Info",
@ -27,10 +30,11 @@ include_config!(SETTINGS: Settings => [
]); ]);
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
/// Ajustes para las secciones globales [`[app]`](App), [`[log]`](Log) y [`[server]`](Server) de /// Ajustes para las secciones globales [`[app]`](App), [`[dev]`](Dev), [`[log]`](Log) y
/// [`SETTINGS`]. /// [`[server]`](Server) de [`SETTINGS`].
pub struct Settings { pub struct Settings {
pub app: App, pub app: App,
pub dev: Dev,
pub log: Log, pub log: Log,
pub server: Server, pub server: Server,
} }
@ -54,6 +58,16 @@ pub struct App {
pub run_mode: String, pub run_mode: String,
} }
#[derive(Debug, Deserialize)]
/// Sección `[Dev]` de la configuración. Forma parte de [`Settings`].
pub struct Dev {
/// Los archivos estáticos requeridos por `PageTop` se integran por defecto en el binario
/// ejecutable. Sin embargo, durante el desarrollo puede resultar útil servirlos desde su propio
/// directorio para evitar recompilar cada vez que se modifican. En ese caso, este ajuste debe
/// indicar la ruta absoluta al directorio raíz del proyecto.
pub pagetop_project_dir: String,
}
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
/// Sección `[log]` de la configuración. Forma parte de [`Settings`]. /// Sección `[log]` de la configuración. Forma parte de [`Settings`].
pub struct Log { pub struct Log {

View file

@ -9,6 +9,9 @@ pub use actix_web::dev::ServiceResponse as Response;
pub use actix_web::{cookie, http, rt, web}; pub use actix_web::{cookie, http, rt, web};
pub use actix_web::{App, Error, HttpMessage, HttpRequest, HttpResponse, HttpServer}; pub use actix_web::{App, Error, HttpMessage, HttpRequest, HttpResponse, HttpServer};
pub use actix_web_files::Files as ActixFiles;
pub use actix_web_static_files::ResourceFiles;
#[doc(hidden)] #[doc(hidden)]
pub use actix_web::test; pub use actix_web::test;