diff --git a/Cargo.toml b/Cargo.toml index 4c82032..7c9a897 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,11 +6,11 @@ edition = "2018" build = "src/build.rs" [dependencies] -users = "0.10.0" +users = "0.11.0" regex = "1.0.1" futures = "0.3" async-trait = "0.1" -tokio = { version = "0.2", features = ["process", "io-util", "rt-core", "macros", "sync"] } +tokio = { version = "0.3", features = ["rt", "process", "io-util", "macros", "sync"] } once_cell = "1.4" [dev-dependencies] diff --git a/src/async_utils.rs b/src/async_utils.rs index 2c1196a..c656c53 100644 --- a/src/async_utils.rs +++ b/src/async_utils.rs @@ -6,11 +6,15 @@ use std::{ thread, time::Duration, }; +use tokio::runtime::Builder; pub use async_trait::async_trait; pub fn run(future: F) -> F::Output { - tokio::runtime::Runtime::new().unwrap().block_on(future) + Builder::new_current_thread() + .build() + .unwrap() + .block_on(future) } pub use tokio::try_join; diff --git a/src/builder.rs b/src/builder.rs index 481096d..811c3f1 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -719,9 +719,7 @@ impl ImplementationBuilder> for DefaultBuilder { impl ImplementationBuilder> for DefaultBuilder { type Prerequisites = (); - fn prerequisites(_: &PostgresqlDatabase) -> Self::Prerequisites { - () - } + fn prerequisites(_: &PostgresqlDatabase) -> Self::Prerequisites {} type Implementation = (PostgreSQLDatabaseSymbol<'static, String, String, StdCommandRunner>,); fn create( diff --git a/src/command_runner.rs b/src/command_runner.rs index b69e7ee..0a64621 100644 --- a/src/command_runner.rs +++ b/src/command_runner.rs @@ -72,6 +72,7 @@ impl CommandRunner for StdCommandRunner { .expect("Failed to write to stdin"); let res = child.wait_with_output().await; //println!("{:?}", res); + #[allow(clippy::let_and_return)] res } } diff --git a/src/loggers.rs b/src/loggers.rs index e5c8573..dcbd0e1 100644 --- a/src/loggers.rs +++ b/src/loggers.rs @@ -80,7 +80,7 @@ pub struct FilteringLogger<'a, L> { } impl<'a, L> FilteringLogger<'a, L> { - pub fn new(logger: &'a L, max_level: Level) -> Self { + pub const fn new(logger: &'a L, max_level: Level) -> Self { Self { logger, max_level } } } @@ -104,6 +104,7 @@ pub struct StoringLogger { } impl StoringLogger { + #[must_use] pub fn new() -> Self { Self::default() } diff --git a/src/setup/mod.rs b/src/setup/mod.rs index cca4db8..a187a88 100644 --- a/src/setup/mod.rs +++ b/src/setup/mod.rs @@ -7,5 +7,6 @@ pub use symbol_runner::{ SymbolRunner, }; mod runnable; +#[allow(clippy::module_inception)] mod setup; pub use setup::SetupFacade as Setup; diff --git a/src/setup/runnable.rs b/src/setup/runnable.rs index add3f49..4e3e087 100644 --- a/src/setup/runnable.rs +++ b/src/setup/runnable.rs @@ -16,6 +16,7 @@ pub trait Runnable { } #[async_trait(?Send)] +#[allow(clippy::use_self)] impl Runnable for S where Self: Symbol + Debug, diff --git a/src/setup/setup.rs b/src/setup/setup.rs index 842152b..472d52e 100644 --- a/src/setup/setup.rs +++ b/src/setup/setup.rs @@ -242,7 +242,9 @@ mod test { fn from_artifact(_from: ()) -> Self { Self } + #[allow(clippy::unused_unit)] fn into_artifact(self) -> () { + #[allow(clippy::unused_unit)] () } } diff --git a/src/storage.rs b/src/storage.rs index a963414..aa4ce9d 100644 --- a/src/storage.rs +++ b/src/storage.rs @@ -14,6 +14,7 @@ pub trait Storage { pub struct SimpleStorage(PathBuf); impl SimpleStorage { + #[must_use] pub const fn new(base: PathBuf) -> Self { Self(base) } diff --git a/src/symbols/dir.rs b/src/symbols/dir.rs index f9fdacc..1a60af2 100644 --- a/src/symbols/dir.rs +++ b/src/symbols/dir.rs @@ -11,7 +11,7 @@ pub struct Dir

{ } impl

Dir

{ - pub fn new(path: P) -> Self { + pub const fn new(path: P) -> Self { Self { path } } } diff --git a/src/symbols/file.rs b/src/symbols/file.rs index edff275..a3763c1 100644 --- a/src/symbols/file.rs +++ b/src/symbols/file.rs @@ -12,7 +12,7 @@ pub struct File { } impl File { - pub fn new(path: D, content: C) -> Self { + pub const fn new(path: D, content: C) -> Self { Self { path, content } } } diff --git a/src/symbols/git/submodules.rs b/src/symbols/git/submodules.rs index e35eabf..5413b8d 100644 --- a/src/symbols/git/submodules.rs +++ b/src/symbols/git/submodules.rs @@ -13,7 +13,7 @@ pub struct GitSubmodules<'a, P, C> { } impl<'a, P, C> GitSubmodules<'a, P, C> { - pub fn new(target: P, command_runner: &'a C) -> Self { + pub const fn new(target: P, command_runner: &'a C) -> Self { Self { target, command_runner, diff --git a/src/symbols/mariadb/dump.rs b/src/symbols/mariadb/dump.rs index 8276532..1b503fa 100644 --- a/src/symbols/mariadb/dump.rs +++ b/src/symbols/mariadb/dump.rs @@ -34,8 +34,8 @@ impl<'a, N, C: CommandRunner, S> Dump<'a, N, C, S> { impl, C: CommandRunner, S: Storage> Symbol for Dump<'_, N, C, S> { async fn target_reached(&self) -> Result> { let dump_date = self.storage.recent_date()?; - let _modified_date = self.run_sql(&format!("select UNIX_TIMESTAMP(MAX(UPDATE_TIME)) from information_schema.tables WHERE table_schema = '{}'", self.db_name.as_ref())).await?; - let modified_date = _modified_date.trim_end(); + let output = self.run_sql(&format!("select UNIX_TIMESTAMP(MAX(UPDATE_TIME)) from information_schema.tables WHERE table_schema = '{}'", self.db_name.as_ref())).await?; + let modified_date = output.trim_end(); Ok(modified_date != "NULL" && u64::from_str(modified_date)? <= dump_date) } diff --git a/src/symbols/systemd/user_session.rs b/src/symbols/systemd/user_session.rs index 5de3342..1f41d46 100644 --- a/src/symbols/systemd/user_session.rs +++ b/src/symbols/systemd/user_session.rs @@ -11,7 +11,7 @@ pub struct UserSession<'a, U, C> { } impl<'a, U, C> UserSession<'a, U, C> { - pub fn new(user_name: U, command_runner: &'a C) -> Self { + pub const fn new(user_name: U, command_runner: &'a C) -> Self { Self { user_name, command_runner, diff --git a/src/symbols/tls/csr.rs b/src/symbols/tls/csr.rs index 3b35681..4af3683 100644 --- a/src/symbols/tls/csr.rs +++ b/src/symbols/tls/csr.rs @@ -14,7 +14,7 @@ pub struct Csr { } impl Csr { - pub fn new(command_runner: C, domain: D, key_path: K, csr_path: P) -> Self { + pub const fn new(command_runner: C, domain: D, key_path: K, csr_path: P) -> Self { Self { command_runner, domain, diff --git a/src/symbols/tls/key.rs b/src/symbols/tls/key.rs index c5287c0..720d7ab 100644 --- a/src/symbols/tls/key.rs +++ b/src/symbols/tls/key.rs @@ -8,19 +8,17 @@ use std::path::Path; pub struct Key { file_path: P, command_runner: C, + bytes: u32, } impl Key { - pub fn new(command_runner: C, file_path: P) -> Self { + pub const fn new(command_runner: C, file_path: P) -> Self { Self { file_path, command_runner, + bytes: 4096, } } - - fn get_bytes(&self) -> u32 { - 4096 - } } #[async_trait(?Send)] @@ -57,7 +55,7 @@ impl> Symbol for Key { "genrsa", "-out", self.file_path.as_ref(), - self.get_bytes().to_string(), + self.bytes.to_string(), ], ) .await diff --git a/src/symbols/user.rs b/src/symbols/user.rs index 3c67809..db784a7 100644 --- a/src/symbols/user.rs +++ b/src/symbols/user.rs @@ -15,7 +15,7 @@ pub struct User { } impl User { - pub fn new(user_name: U, command_runner: C) -> Self { + pub const fn new(user_name: U, command_runner: C) -> Self { Self { user_name, command_runner, diff --git a/src/templates/nginx/server.rs b/src/templates/nginx/server.rs index fe7aa60..9f04bbd 100644 --- a/src/templates/nginx/server.rs +++ b/src/templates/nginx/server.rs @@ -1,6 +1,7 @@ use std::fmt::Display; use std::path::Path; +#[must_use] pub fn default_server>(challenges_snippet_path: P) -> String { format!( "server {{ @@ -12,6 +13,7 @@ pub fn default_server>(challenges_snippet_path: P) -> String { ) } +#[must_use] pub fn server_config, K: AsRef, T: Display, S: AsRef>( domain: D, cert_path: C, @@ -53,6 +55,7 @@ server {{ ) } +#[must_use] pub fn php_snippet, STATIC: AsRef>( index: &'static str, socket_path: SOCKET, @@ -71,6 +74,7 @@ pub fn php_snippet, STATIC: AsRef>( ) } +#[must_use] pub fn redir_snippet(target: &str) -> String { format!( "location / {{ @@ -85,6 +89,7 @@ pub trait SocketSpec { } impl> SocketSpec for T { + #[must_use] fn to_nginx(&self) -> String { format!("unix:{}:", self.as_ref().to_str().unwrap()) } @@ -94,17 +99,20 @@ impl> SocketSpec for T { pub struct LocalTcpSocket(usize); impl LocalTcpSocket { + #[must_use] pub const fn new(x: usize) -> Self { Self(x) } } impl SocketSpec for LocalTcpSocket { + #[must_use] fn to_nginx(&self) -> String { format!("localhost:{}", self.0) } } +#[must_use] pub fn proxy_snippet>( socket_path: &S, static_path: STATIC, @@ -125,6 +133,7 @@ pub fn proxy_snippet>( ) } +#[must_use] pub fn static_snippet>(static_path: S) -> String { format!( "root {}; @@ -134,6 +143,7 @@ pub fn static_snippet>(static_path: S) -> String { ) } +#[must_use] pub fn dokuwiki_snippet() -> String { " location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; } @@ -149,6 +159,7 @@ pub fn dokuwiki_snippet() -> String { }".into() } +#[must_use] pub fn nextcloud_snippet() -> String { " client_max_body_size 500M;