Fmt: Added cargofmt config and reformatted files
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Dreaded_X 2023-11-20 23:27:48 +01:00
parent 78bb80d510
commit 73a2b077ed
Signed by: Dreaded_X
GPG Key ID: FA5F485356B0D2D4
28 changed files with 141 additions and 204 deletions

2
.rustfmt.toml Normal file
View File

@ -0,0 +1,2 @@
imports_granularity = "Module"
group_imports = "StdExternalCrate"

View File

@ -1,13 +1,11 @@
use async_trait::async_trait; use async_trait::async_trait;
use serde::Serialize; use serde::Serialize;
use crate::{ use crate::errors::{DeviceError, ErrorCode};
errors::{DeviceError, ErrorCode}, use crate::request::execute::CommandType;
request::execute::CommandType, use crate::response;
response, use crate::traits::{FanSpeed, OnOff, Scene, Trait};
traits::{FanSpeed, OnOff, Scene, Trait}, use crate::types::Type;
types::Type,
};
// TODO: Find a more elegant way to do this // TODO: Find a more elegant way to do this
pub trait AsGoogleHomeDevice { pub trait AsGoogleHomeDevice {

View File

@ -1,15 +1,14 @@
use std::{collections::HashMap, sync::Arc}; use std::collections::HashMap;
use std::sync::Arc;
use futures::future::{join_all, OptionFuture}; use futures::future::{join_all, OptionFuture};
use thiserror::Error; use thiserror::Error;
use tokio::sync::{Mutex, RwLock}; use tokio::sync::{Mutex, RwLock};
use crate::{ use crate::device::AsGoogleHomeDevice;
device::AsGoogleHomeDevice, use crate::errors::{DeviceError, ErrorCode};
errors::{DeviceError, ErrorCode}, use crate::request::{self, Intent, Request};
request::{self, Intent, Request}, use crate::response::{self, execute, query, sync, Response, ResponsePayload, State};
response::{self, execute, query, sync, Response, ResponsePayload, State},
};
#[derive(Debug)] #[derive(Debug)]
pub struct GoogleHome { pub struct GoogleHome {

View File

@ -13,7 +13,6 @@ pub mod traits;
pub mod types; pub mod types;
pub use device::GoogleHomeDevice; pub use device::GoogleHomeDevice;
pub use fullfillment::FullfillmentError; pub use fullfillment::{FullfillmentError, GoogleHome};
pub use fullfillment::GoogleHome;
pub use request::Request; pub use request::Request;
pub use response::Response; pub use response::Response;

View File

@ -1,6 +1,7 @@
use serde::Serialize; use serde::Serialize;
use crate::{errors::ErrorCode, response::State}; use crate::errors::ErrorCode;
use crate::response::State;
#[derive(Debug, Serialize, Clone)] #[derive(Debug, Serialize, Clone)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
@ -87,10 +88,8 @@ pub enum Status {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::{ use crate::errors::DeviceError;
errors::DeviceError, use crate::response::{Response, ResponsePayload, State};
response::{Response, ResponsePayload, State},
};
#[test] #[test]
fn serialize() { fn serialize() {

View File

@ -2,7 +2,8 @@ use std::collections::HashMap;
use serde::Serialize; use serde::Serialize;
use crate::{errors::ErrorCode, response::State}; use crate::errors::ErrorCode;
use crate::response::State;
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]

View File

@ -69,11 +69,9 @@ impl Device {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::{ use crate::response::{Response, ResponsePayload};
response::{Response, ResponsePayload}, use crate::traits::Trait;
traits::Trait, use crate::types::Type;
types::Type,
};
#[test] #[test]
fn serialize() { fn serialize() {

View File

@ -1,6 +1,7 @@
use proc_macro::TokenStream; use proc_macro::TokenStream;
use quote::{format_ident, quote, ToTokens}; use quote::{format_ident, quote, ToTokens};
use syn::{parse::Parse, parse_macro_input, Ident, ItemTrait, Path, Token, TypeParamBound}; use syn::parse::Parse;
use syn::{parse_macro_input, Ident, ItemTrait, Path, Token, TypeParamBound};
struct Attr { struct Attr {
name: Ident, name: Ident,

View File

@ -1,8 +1,7 @@
use axum::{ use axum::async_trait;
async_trait, use axum::extract::{FromRef, FromRequestParts};
extract::{FromRef, FromRequestParts}, use axum::http::request::Parts;
http::{request::Parts, StatusCode}, use axum::http::StatusCode;
};
use serde::Deserialize; use serde::Deserialize;
use crate::error::{ApiError, ApiErrorJson}; use crate::error::{ApiError, ApiErrorJson};

View File

@ -1,8 +1,6 @@
use std::{ use std::fs;
fs, use std::net::{Ipv4Addr, SocketAddr};
net::{Ipv4Addr, SocketAddr}, use std::time::Duration;
time::Duration,
};
use indexmap::IndexMap; use indexmap::IndexMap;
use regex::{Captures, Regex}; use regex::{Captures, Regex};
@ -10,13 +8,11 @@ use rumqttc::{MqttOptions, Transport};
use serde::{Deserialize, Deserializer}; use serde::{Deserialize, Deserializer};
use tracing::debug; use tracing::debug;
use crate::{ use crate::auth::OpenIDConfig;
auth::OpenIDConfig, use crate::device_manager::DeviceConfigs;
device_manager::DeviceConfigs, use crate::devices::PresenceConfig;
devices::PresenceConfig, use crate::error::{ConfigParseError, MissingEnv};
error::{ConfigParseError, MissingEnv}, use crate::schedule::Schedule;
schedule::Schedule,
};
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
pub struct Config { pub struct Config {

View File

@ -11,19 +11,14 @@ use tokio::sync::{RwLock, RwLockReadGuard};
use tokio_cron_scheduler::{Job, JobScheduler}; use tokio_cron_scheduler::{Job, JobScheduler};
use tracing::{debug, error, instrument, trace}; use tracing::{debug, error, instrument, trace};
use crate::{ use crate::devices::{
devices::{
AirFilterConfig, As, AudioSetupConfig, ContactSensorConfig, DebugBridgeConfig, Device, AirFilterConfig, As, AudioSetupConfig, ContactSensorConfig, DebugBridgeConfig, Device,
HueBridgeConfig, HueGroupConfig, IkeaOutletConfig, KasaOutletConfig, LightSensorConfig, HueBridgeConfig, HueGroupConfig, IkeaOutletConfig, KasaOutletConfig, LightSensorConfig,
WakeOnLANConfig, WasherConfig, WakeOnLANConfig, WasherConfig,
},
error::DeviceConfigError,
event::OnDarkness,
event::OnNotification,
event::OnPresence,
event::{Event, EventChannel, OnMqtt},
schedule::{Action, Schedule},
}; };
use crate::error::DeviceConfigError;
use crate::event::{Event, EventChannel, OnDarkness, OnMqtt, OnNotification, OnPresence};
use crate::schedule::{Action, Schedule};
pub struct ConfigExternal<'a> { pub struct ConfigExternal<'a> {
pub client: &'a AsyncClient, pub client: &'a AsyncClient,

View File

@ -3,17 +3,13 @@ use google_home::traits::OnOff;
use serde::Deserialize; use serde::Deserialize;
use tracing::{debug, error, trace, warn}; use tracing::{debug, error, trace, warn};
use crate::{
config::MqttDeviceConfig,
device_manager::{ConfigExternal, DeviceConfig, WrappedDevice},
devices::As,
error::DeviceConfigError,
event::OnMqtt,
event::OnPresence,
messages::{RemoteAction, RemoteMessage},
};
use super::Device; use super::Device;
use crate::config::MqttDeviceConfig;
use crate::device_manager::{ConfigExternal, DeviceConfig, WrappedDevice};
use crate::devices::As;
use crate::error::DeviceConfigError;
use crate::event::{OnMqtt, OnPresence};
use crate::messages::{RemoteAction, RemoteMessage};
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct AudioSetupConfig { pub struct AudioSetupConfig {

View File

@ -8,18 +8,14 @@ use serde_with::{serde_as, DurationSeconds};
use tokio::task::JoinHandle; use tokio::task::JoinHandle;
use tracing::{debug, error, trace, warn}; use tracing::{debug, error, trace, warn};
use crate::{
config::MqttDeviceConfig,
device_manager::{ConfigExternal, DeviceConfig, WrappedDevice},
devices::{As, DEFAULT_PRESENCE},
error::DeviceConfigError,
event::OnMqtt,
event::OnPresence,
messages::{ContactMessage, PresenceMessage},
traits::Timeout,
};
use super::Device; use super::Device;
use crate::config::MqttDeviceConfig;
use crate::device_manager::{ConfigExternal, DeviceConfig, WrappedDevice};
use crate::devices::{As, DEFAULT_PRESENCE};
use crate::error::DeviceConfigError;
use crate::event::{OnMqtt, OnPresence};
use crate::messages::{ContactMessage, PresenceMessage};
use crate::traits::Timeout;
// NOTE: If we add more presence devices we might need to move this out of here // NOTE: If we add more presence devices we might need to move this out of here
#[serde_as] #[serde_as]

View File

@ -3,16 +3,12 @@ use rumqttc::AsyncClient;
use serde::Deserialize; use serde::Deserialize;
use tracing::warn; use tracing::warn;
use crate::device_manager::ConfigExternal; use crate::config::MqttDeviceConfig;
use crate::device_manager::DeviceConfig; use crate::device_manager::{ConfigExternal, DeviceConfig};
use crate::devices::Device; use crate::devices::Device;
use crate::error::DeviceConfigError; use crate::error::DeviceConfigError;
use crate::event::OnDarkness; use crate::event::{OnDarkness, OnPresence};
use crate::event::OnPresence; use crate::messages::{DarknessMessage, PresenceMessage};
use crate::{
config::MqttDeviceConfig,
messages::{DarknessMessage, PresenceMessage},
};
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
pub struct DebugBridgeConfig { pub struct DebugBridgeConfig {

View File

@ -4,13 +4,10 @@ use async_trait::async_trait;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use tracing::{error, trace, warn}; use tracing::{error, trace, warn};
use crate::{ use crate::device_manager::{ConfigExternal, DeviceConfig};
device_manager::{ConfigExternal, DeviceConfig}, use crate::devices::Device;
devices::Device, use crate::error::DeviceConfigError;
error::DeviceConfigError, use crate::event::{OnDarkness, OnPresence};
event::OnDarkness,
event::OnPresence,
};
#[derive(Debug)] #[derive(Debug)]
pub enum Flag { pub enum Flag {

View File

@ -1,25 +1,21 @@
use std::{ use std::net::{Ipv4Addr, SocketAddr};
net::{Ipv4Addr, SocketAddr}, use std::time::Duration;
time::Duration,
};
use anyhow::{anyhow, Context, Result}; use anyhow::{anyhow, Context, Result};
use async_trait::async_trait; use async_trait::async_trait;
use google_home::{errors::ErrorCode, traits::OnOff}; use google_home::errors::ErrorCode;
use google_home::traits::OnOff;
use rumqttc::Publish; use rumqttc::Publish;
use serde::Deserialize; use serde::Deserialize;
use tracing::{debug, error, warn}; use tracing::{debug, error, warn};
use crate::{
config::MqttDeviceConfig,
device_manager::{ConfigExternal, DeviceConfig},
error::DeviceConfigError,
event::OnMqtt,
messages::{RemoteAction, RemoteMessage},
traits::Timeout,
};
use super::Device; use super::Device;
use crate::config::MqttDeviceConfig;
use crate::device_manager::{ConfigExternal, DeviceConfig};
use crate::error::DeviceConfigError;
use crate::event::OnMqtt;
use crate::messages::{RemoteAction, RemoteMessage};
use crate::traits::Timeout;
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct HueGroupConfig { pub struct HueGroupConfig {
@ -229,7 +225,8 @@ impl Timeout for HueGroup {
mod message { mod message {
use std::time::Duration; use std::time::Duration;
use serde::{ser::SerializeStruct, Deserialize, Serialize}; use serde::ser::SerializeStruct;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
pub struct Action { pub struct Action {

View File

@ -1,17 +1,14 @@
use std::time::Duration;
use anyhow::Result; use anyhow::Result;
use async_trait::async_trait; use async_trait::async_trait;
use google_home::errors::ErrorCode; use google_home::errors::ErrorCode;
use google_home::{ use google_home::traits::{self, OnOff};
device, use google_home::types::Type;
traits::{self, OnOff}, use google_home::{device, GoogleHomeDevice};
types::Type,
GoogleHomeDevice,
};
use rumqttc::{matches, AsyncClient, Publish}; use rumqttc::{matches, AsyncClient, Publish};
use serde::Deserialize; use serde::Deserialize;
use serde_with::serde_as; use serde_with::{serde_as, DurationSeconds};
use serde_with::DurationSeconds;
use std::time::Duration;
use tokio::task::JoinHandle; use tokio::task::JoinHandle;
use tracing::{debug, error, trace, warn}; use tracing::{debug, error, trace, warn};
@ -19,8 +16,7 @@ use crate::config::{InfoConfig, MqttDeviceConfig};
use crate::device_manager::{ConfigExternal, DeviceConfig}; use crate::device_manager::{ConfigExternal, DeviceConfig};
use crate::devices::Device; use crate::devices::Device;
use crate::error::DeviceConfigError; use crate::error::DeviceConfigError;
use crate::event::OnMqtt; use crate::event::{OnMqtt, OnPresence};
use crate::event::OnPresence;
use crate::messages::{OnOffMessage, RemoteAction, RemoteMessage}; use crate::messages::{OnOffMessage, RemoteAction, RemoteMessage};
use crate::traits::Timeout; use crate::traits::Timeout;

View File

@ -1,28 +1,19 @@
use std::{ use std::net::{Ipv4Addr, SocketAddr};
net::{Ipv4Addr, SocketAddr}, use std::str::Utf8Error;
str::Utf8Error,
};
use async_trait::async_trait; use async_trait::async_trait;
use bytes::{Buf, BufMut}; use bytes::{Buf, BufMut};
use google_home::{ use google_home::errors::{self, DeviceError};
errors::{self, DeviceError}, use google_home::traits;
traits,
};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use thiserror::Error; use thiserror::Error;
use tokio::{ use tokio::io::{AsyncReadExt, AsyncWriteExt};
io::{AsyncReadExt, AsyncWriteExt}, use tokio::net::TcpStream;
net::TcpStream,
};
use tracing::trace; use tracing::trace;
use crate::{
device_manager::{ConfigExternal, DeviceConfig},
error::DeviceConfigError,
};
use super::Device; use super::Device;
use crate::device_manager::{ConfigExternal, DeviceConfig};
use crate::error::DeviceConfigError;
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct KasaOutletConfig { pub struct KasaOutletConfig {

View File

@ -3,15 +3,12 @@ use rumqttc::Publish;
use serde::Deserialize; use serde::Deserialize;
use tracing::{debug, trace, warn}; use tracing::{debug, trace, warn};
use crate::{ use crate::config::MqttDeviceConfig;
config::MqttDeviceConfig, use crate::device_manager::{ConfigExternal, DeviceConfig};
device_manager::{ConfigExternal, DeviceConfig}, use crate::devices::Device;
devices::Device, use crate::error::DeviceConfigError;
error::DeviceConfigError, use crate::event::{self, Event, OnMqtt};
event::OnMqtt, use crate::messages::BrightnessMessage;
event::{self, Event},
messages::BrightnessMessage,
};
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct LightSensorConfig { pub struct LightSensorConfig {

View File

@ -12,6 +12,9 @@ mod presence;
mod wake_on_lan; mod wake_on_lan;
mod washer; mod washer;
use google_home::device::AsGoogleHomeDevice;
use google_home::traits::OnOff;
pub use self::air_filter::AirFilterConfig; pub use self::air_filter::AirFilterConfig;
pub use self::audio_setup::AudioSetupConfig; pub use self::audio_setup::AudioSetupConfig;
pub use self::contact_sensor::ContactSensorConfig; pub use self::contact_sensor::ContactSensorConfig;
@ -25,11 +28,8 @@ pub use self::ntfy::{Notification, Ntfy};
pub use self::presence::{Presence, PresenceConfig, DEFAULT_PRESENCE}; pub use self::presence::{Presence, PresenceConfig, DEFAULT_PRESENCE};
pub use self::wake_on_lan::WakeOnLANConfig; pub use self::wake_on_lan::WakeOnLANConfig;
pub use self::washer::WasherConfig; pub use self::washer::WasherConfig;
use crate::event::{OnDarkness, OnMqtt, OnNotification, OnPresence};
use google_home::{device::AsGoogleHomeDevice, traits::OnOff};
use crate::traits::Timeout; use crate::traits::Timeout;
use crate::{event::OnDarkness, event::OnMqtt, event::OnNotification, event::OnPresence};
#[impl_cast::device(As: OnMqtt + OnPresence + OnDarkness + OnNotification + OnOff + Timeout)] #[impl_cast::device(As: OnMqtt + OnPresence + OnDarkness + OnNotification + OnOff + Timeout)]
pub trait Device: AsGoogleHomeDevice + std::fmt::Debug + Sync + Send { pub trait Device: AsGoogleHomeDevice + std::fmt::Debug + Sync + Send {

View File

@ -5,12 +5,9 @@ use serde::Serialize;
use serde_repr::*; use serde_repr::*;
use tracing::{debug, error, warn}; use tracing::{debug, error, warn};
use crate::{ use crate::config::NtfyConfig;
config::NtfyConfig, use crate::devices::Device;
devices::Device, use crate::event::{self, Event, EventChannel, OnNotification, OnPresence};
event::{self, Event, EventChannel},
event::{OnNotification, OnPresence},
};
#[derive(Debug)] #[derive(Debug)]
pub struct Ntfy { pub struct Ntfy {

View File

@ -5,13 +5,10 @@ use rumqttc::Publish;
use serde::Deserialize; use serde::Deserialize;
use tracing::{debug, warn}; use tracing::{debug, warn};
use crate::{ use crate::config::MqttDeviceConfig;
config::MqttDeviceConfig, use crate::devices::Device;
devices::Device, use crate::event::{self, Event, EventChannel, OnMqtt};
event::OnMqtt, use crate::messages::PresenceMessage;
event::{self, Event, EventChannel},
messages::PresenceMessage,
};
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
pub struct PresenceConfig { pub struct PresenceConfig {

View File

@ -2,26 +2,20 @@ use std::net::Ipv4Addr;
use async_trait::async_trait; use async_trait::async_trait;
use eui48::MacAddress; use eui48::MacAddress;
use google_home::{ use google_home::errors::ErrorCode;
device, use google_home::traits::{self, Scene};
errors::ErrorCode, use google_home::types::Type;
traits::{self, Scene}, use google_home::{device, GoogleHomeDevice};
types::Type,
GoogleHomeDevice,
};
use rumqttc::Publish; use rumqttc::Publish;
use serde::Deserialize; use serde::Deserialize;
use tracing::{debug, error, trace}; use tracing::{debug, error, trace};
use crate::{
config::{InfoConfig, MqttDeviceConfig},
device_manager::{ConfigExternal, DeviceConfig},
error::DeviceConfigError,
event::OnMqtt,
messages::ActivateMessage,
};
use super::Device; use super::Device;
use crate::config::{InfoConfig, MqttDeviceConfig};
use crate::device_manager::{ConfigExternal, DeviceConfig};
use crate::error::DeviceConfigError;
use crate::event::OnMqtt;
use crate::messages::ActivateMessage;
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct WakeOnLANConfig { pub struct WakeOnLANConfig {

View File

@ -3,15 +3,13 @@ use rumqttc::Publish;
use serde::Deserialize; use serde::Deserialize;
use tracing::{debug, error, warn}; use tracing::{debug, error, warn};
use crate::{ use super::ntfy::Priority;
config::MqttDeviceConfig, use super::{Device, Notification};
device_manager::{ConfigExternal, DeviceConfig}, use crate::config::MqttDeviceConfig;
error::DeviceConfigError, use crate::device_manager::{ConfigExternal, DeviceConfig};
event::{Event, EventChannel, OnMqtt}, use crate::error::DeviceConfigError;
messages::PowerMessage, use crate::event::{Event, EventChannel, OnMqtt};
}; use crate::messages::PowerMessage;
use super::{ntfy::Priority, Device, Notification};
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct WasherConfig { pub struct WasherConfig {

View File

@ -1,6 +1,7 @@
use std::{error, fmt, result}; use std::{error, fmt, result};
use axum::{http::status::InvalidStatusCode, response::IntoResponse}; use axum::http::status::InvalidStatusCode;
use axum::response::IntoResponse;
use bytes::Bytes; use bytes::Bytes;
use rumqttc::ClientError; use rumqttc::ClientError;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View File

@ -1,9 +1,8 @@
use async_trait::async_trait; use async_trait::async_trait;
use impl_cast::device_trait;
use rumqttc::Publish; use rumqttc::Publish;
use tokio::sync::mpsc; use tokio::sync::mpsc;
use impl_cast::device_trait;
use crate::devices::Notification; use crate::devices::Notification;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]

View File

@ -1,23 +1,22 @@
#![feature(async_closure)] #![feature(async_closure)]
use std::process; use std::process;
use axum::{ use automation::auth::{OpenIDConfig, User};
extract::FromRef, http::StatusCode, response::IntoResponse, routing::post, Json, Router, use automation::config::Config;
}; use automation::device_manager::DeviceManager;
use automation::devices::{Ntfy, Presence};
use automation::error::ApiError;
use automation::mqtt;
use axum::extract::FromRef;
use axum::http::StatusCode;
use axum::response::IntoResponse;
use axum::routing::post;
use axum::{Json, Router};
use dotenvy::dotenv; use dotenvy::dotenv;
use google_home::{GoogleHome, Request};
use rumqttc::AsyncClient; use rumqttc::AsyncClient;
use tracing::{debug, error, info}; use tracing::{debug, error, info};
use automation::{
auth::{OpenIDConfig, User},
config::Config,
device_manager::DeviceManager,
devices::{Ntfy, Presence},
error::ApiError,
mqtt,
};
use google_home::{GoogleHome, Request};
#[derive(Clone)] #[derive(Clone)]
struct AppState { struct AppState {
pub openid: OpenIDConfig, pub openid: OpenIDConfig,

View File

@ -1,6 +1,5 @@
use tracing::{debug, warn};
use rumqttc::{Event, EventLoop, Incoming}; use rumqttc::{Event, EventLoop, Incoming};
use tracing::{debug, warn};
use crate::event::{self, EventChannel}; use crate::event::{self, EventChannel};