diff --git a/.vale/config/vocabularies/haze/accept.txt b/.vale/config/vocabularies/haze/accept.txt index 925d628..4cd11e4 100644 --- a/.vale/config/vocabularies/haze/accept.txt +++ b/.vale/config/vocabularies/haze/accept.txt @@ -23,4 +23,3 @@ worktrees config stdin stdout -direnv diff --git a/DEVELOPING.md b/DEVELOPING.md deleted file mode 100644 index d7f9f65..0000000 --- a/DEVELOPING.md +++ /dev/null @@ -1,80 +0,0 @@ -# Developing - -## Setup - -### Nix based development environment - -The recommended way to setup the development environment is to use -[Lix](https://lix.systems/install/)/[Nix](https://nixos.org/download/). - -Once installed, you can enter the development shell using `nix develop` or, -setup [direnv](https://direnv.net/) to automatically enter the development shell -when you enter the folder. - -The development shell provides all necessary tooling to develop haze. - -### Without Nix - -The fooling tools need to be setup to develop without using Nix to manage the -development setup: - -- [`cargo`](https://doc.rust-lang.org/cargo/getting-started/installation.html) - - For building the program -- [`mdbook`](https://github.com/rust-lang/mdBook) - For building the - documentation -- [`prettier`](https://prettier.io/) - For formatting the non-rust files -- [`vale`](https://vale.sh/) - For checking documentation - -## Building - -```bash -cargo build -``` - -The binary can then be found at `target/debug/haze`. - -## Formatting - -### With Nix - -```bash -nix fmt -``` - -### Without Nix - -#### Rust code - -```bash -cargo fmt -``` - -#### Documentation - -```bash -prettier --write '**/*.md' -``` - -### Building documentation - -```bash -mdbook serve -``` - -### Checking documentation - -```bash -vale src/ book/src/ book/README.md *.md -``` - -### Run all checks - -```bash -nix flake check -``` - -### Building docker images - -```bash -nix run .#'"haze-image-php-8.4"'.copyToDockerDaemon -``` diff --git a/README.md b/README.md index 33aee03..6f17bf1 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,3 @@ Documentation for haze can be found in the - Navigate to the address that is provided in the output. See the [book](https://icewind.codeberg.page/haze/) for more details. - -## Developing - -See [DEVELOPING.md](./DEVELOPING.md) for information on how to work on `haze`. diff --git a/book/src/xdebug.md b/book/src/xdebug.md index 58079ca..11a6089 100644 --- a/book/src/xdebug.md +++ b/book/src/xdebug.md @@ -19,7 +19,7 @@ IDE debugger configuration usually looks like: This would have to be adapted for detached instances. -## Debugging all requests +### Debugging all requests By default, Xdebug is configured to only run for requests that containing the trigger (e.g. from using the Xdebug browser extension, or adding @@ -29,8 +29,3 @@ To enable Xdebug for all requests: - Un-comment the lines in `haze [cloud-id] edit /config/php.ini` - Then run `haze reload [cloud-id]` - -## Xdebug profile and trace files - -When enabling Xdebug trace or profile mode, the generated files can be found in -`//xdebug`. diff --git a/flake.nix b/flake.nix index d4c9127..5308a7a 100644 --- a/flake.nix +++ b/flake.nix @@ -69,7 +69,7 @@ ]; checks = { - vale = {vale, ...}: "${vale}/bin/vale src/ book/src/ book/README.md *.md"; + vale = {vale, ...}: "${vale}/bin/vale src/ book/src/ CHANGELOG.md README.md book/README.md"; }; homeModules = { diff --git a/src/image.rs b/src/image.rs index 26850d9..e24abfd 100644 --- a/src/image.rs +++ b/src/image.rs @@ -1,6 +1,6 @@ -use bollard::Docker; use bollard::models::CreateImageInfo; use bollard::query_parameters::CreateImageOptions; +use bollard::Docker; use futures_util::StreamExt; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use miette::{IntoDiagnostic, Result, WrapErr}; diff --git a/src/network.rs b/src/network.rs index 1ea2050..386e13c 100644 --- a/src/network.rs +++ b/src/network.rs @@ -1,6 +1,6 @@ use crate::cloud::Cloud; -use bollard::Docker; use bollard::config::NetworkCreateRequest; +use bollard::Docker; use miette::{IntoDiagnostic, Result, WrapErr}; pub async fn clear_networks(docker: &Docker, instances: &[Cloud]) -> Result<()> { @@ -12,10 +12,9 @@ pub async fn clear_networks(docker: &Docker, instances: &[Cloud]) -> Result<()> for network in networks { if let Some(name) = network.name.as_deref() && let Some(id) = name.strip_prefix("haze-") - && !instances.iter().any(|cloud| cloud.id == id) - { - docker.remove_network(name).await.ok(); - } + && !instances.iter().any(|cloud| cloud.id == id) { + docker.remove_network(name).await.ok(); + } } Ok(()) } diff --git a/src/php.rs b/src/php.rs index e56267a..f0878a5 100644 --- a/src/php.rs +++ b/src/php.rs @@ -1,13 +1,13 @@ use crate::config::ProxyConfig; use crate::database::Database; -use crate::image::{ImageVersion, image_version, pull_image}; +use crate::image::{image_version, pull_image, ImageVersion}; use crate::network::ensure_network_exists; use crate::service::Service; use crate::service::ServiceTrait; -use bollard::Docker; use bollard::config::{ContainerCreateBody, NetworkConnectRequest, NetworkingConfig}; use bollard::models::{EndpointSettings, HostConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use itertools::Itertools; use maplit::hashmap; use miette::{IntoDiagnostic, Report, Result, WrapErr}; @@ -127,16 +127,15 @@ impl PhpVersion { let image_version = image_version(docker, self.image()).await; let haze_version = ImageVersion::from_str(env!("CARGO_PKG_VERSION")); if let (Some(image_version), Ok(haze_version)) = (image_version, haze_version) - && image_version < haze_version - { - eprintln!( - "{}: image version is out of date, run {} to update.", - "Warning".red(), - "haze update".blue() - ); - eprintln!(" Haze version: {}", haze_version.bright_yellow()); - eprintln!(" Image version: {}", image_version.bright_yellow()); - } + && image_version < haze_version { + eprintln!( + "{}: image version is out of date, run {} to update.", + "Warning".red(), + "haze update".blue() + ); + eprintln!(" Haze version: {}", haze_version.bright_yellow()); + eprintln!(" Image version: {}", image_version.bright_yellow()); + } let options = Some(CreateContainerOptions { name: Some(id.to_string()), diff --git a/src/service/clam.rs b/src/service/clam.rs index d614ecd..02c72b9 100644 --- a/src/service/clam.rs +++ b/src/service/clam.rs @@ -1,12 +1,12 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::exec::exec; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::{IntoDiagnostic, WrapErr}; use tokio::fs::write; @@ -92,9 +92,7 @@ impl ServiceTrait for ClamIcap { split_cmnd("occ config:app:set files_antivirus av_host --value=clamav-icap"), split_cmnd("occ config:app:set files_antivirus av_port --value=1344"), split_cmnd("occ config:app:set files_antivirus av_icap_request_service --value=avscan"), - split_cmnd( - "occ config:app:set files_antivirus av_icap_response_header --value=X-Infection-Found", - ), + split_cmnd("occ config:app:set files_antivirus av_icap_response_header --value=X-Infection-Found"), ]) } } @@ -198,9 +196,7 @@ impl ServiceTrait for ClamIcapTls { split_cmnd("occ config:app:set files_antivirus av_host --value=clamav-icap-tls"), split_cmnd("occ config:app:set files_antivirus av_port --value=1345"), split_cmnd("occ config:app:set files_antivirus av_icap_request_service --value=avscan"), - split_cmnd( - "occ config:app:set files_antivirus av_icap_response_header --value=X-Infection-Found", - ), + split_cmnd("occ config:app:set files_antivirus av_icap_response_header --value=X-Infection-Found"), split_cmnd("occ security:certificates:import data/icap-cert.pem"), ]) } diff --git a/src/service/dav.rs b/src/service/dav.rs index 5442b3b..e0b20f3 100644 --- a/src/service/dav.rs +++ b/src/service/dav.rs @@ -1,12 +1,12 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::config::ContainerCreateBody; use bollard::models::{EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::IntoDiagnostic; diff --git a/src/service/imaginary.rs b/src/service/imaginary.rs index 65325cf..4ec4d96 100644 --- a/src/service/imaginary.rs +++ b/src/service/imaginary.rs @@ -1,12 +1,12 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::config::NetworkingConfig; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::IntoDiagnostic; diff --git a/src/service/kaspersky.rs b/src/service/kaspersky.rs index af9c654..00ec187 100644 --- a/src/service/kaspersky.rs +++ b/src/service/kaspersky.rs @@ -1,14 +1,14 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::exec::exec; use crate::image::{image_exists, pull_image}; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; -use miette::{IntoDiagnostic, bail}; +use miette::{bail, IntoDiagnostic}; use std::io::Stdout; #[derive(Debug, Clone, Eq, PartialEq)] diff --git a/src/service/ldap.rs b/src/service/ldap.rs index 0514994..4f317e6 100644 --- a/src/service/ldap.rs +++ b/src/service/ldap.rs @@ -1,12 +1,12 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::{HazeConfig, ProxyConfig}; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::config::NetworkingConfig; use bollard::models::{ContainerCreateBody, ContainerState, EndpointSettings, HostConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::{IntoDiagnostic, Report}; use std::net::IpAddr; @@ -102,9 +102,7 @@ impl ServiceTrait for Ldap { split_cmnd("occ ldap:set-config s01 ldapBase dc=example,dc=org"), split_cmnd("occ ldap:set-config s01 ldapBaseUsers dc=example,dc=org"), split_cmnd("occ ldap:set-config s01 ldapBaseGroups dc=example,dc=org"), - split_cmnd( - "occ ldap:set-config s01 ldapLoginFilter (&(&(objectclass=inetOrgPerson))(uid=%uid))", - ), + split_cmnd("occ ldap:set-config s01 ldapLoginFilter (&(&(objectclass=inetOrgPerson))(uid=%uid))"), split_cmnd("occ ldap:set-config s01 ldapUserFilter ((objectclass=inetOrgPerson))"), split_cmnd("occ ldap:set-config s01 ldapUserFilterMode 0"), split_cmnd("occ ldap:set-config s01 ldapUserDisplayName sn"), diff --git a/src/service/mail.rs b/src/service/mail.rs index 7367ffd..9dfcfcb 100644 --- a/src/service/mail.rs +++ b/src/service/mail.rs @@ -1,11 +1,11 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::IntoDiagnostic; diff --git a/src/service/oc.rs b/src/service/oc.rs index 2baac6e..296b2a5 100644 --- a/src/service/oc.rs +++ b/src/service/oc.rs @@ -1,13 +1,13 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::exec::exec; use crate::image::pull_image; use crate::service::ServiceTrait; -use bollard::Docker; +use crate::Result; use bollard::config::NetworkingConfig; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::IntoDiagnostic; use std::io::Stdout; diff --git a/src/service/office.rs b/src/service/office.rs index 8ff59fe..e7db10d 100644 --- a/src/service/office.rs +++ b/src/service/office.rs @@ -1,13 +1,13 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; use crate::service::ServiceTrait; -use bollard::Docker; +use crate::Result; use bollard::models::{ ContainerCreateBody, ContainerState, EndpointSettings, HostConfig, NetworkingConfig, }; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::{IntoDiagnostic, Report}; diff --git a/src/service/onlyoffice.rs b/src/service/onlyoffice.rs index f33251f..fa12c2c 100644 --- a/src/service/onlyoffice.rs +++ b/src/service/onlyoffice.rs @@ -1,14 +1,14 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::exec::exec; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::models::{ ContainerCreateBody, ContainerState, EndpointSettings, HostConfig, NetworkingConfig, }; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::{IntoDiagnostic, Report}; use std::net::Ipv4Addr; diff --git a/src/service/partitioning.rs b/src/service/partitioning.rs index 13425e4..f8f20b5 100644 --- a/src/service/partitioning.rs +++ b/src/service/partitioning.rs @@ -1,11 +1,11 @@ use std::io::stdout; -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::database::DatabaseFamily; use crate::exec::exec; use crate::service::ServiceTrait; +use crate::Result; use bollard::Docker; use miette::Report; diff --git a/src/service/push.rs b/src/service/push.rs index ff7d7d1..b0bbab2 100644 --- a/src/service/push.rs +++ b/src/service/push.rs @@ -2,9 +2,9 @@ use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; use crate::service::ServiceTrait; -use bollard::Docker; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use local_ip_address::list_afinet_netifas; use maplit::hashmap; use miette::{IntoDiagnostic, Result}; diff --git a/src/service/redis.rs b/src/service/redis.rs index 6771999..6d5d5e6 100644 --- a/src/service/redis.rs +++ b/src/service/redis.rs @@ -1,11 +1,11 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::IntoDiagnostic; diff --git a/src/service/sftp.rs b/src/service/sftp.rs index 8125981..1f47a40 100644 --- a/src/service/sftp.rs +++ b/src/service/sftp.rs @@ -1,11 +1,11 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::{Context, IntoDiagnostic}; use std::fs::{create_dir_all, write}; diff --git a/src/service/sharded.rs b/src/service/sharded.rs index df4e8d0..8259eeb 100644 --- a/src/service/sharded.rs +++ b/src/service/sharded.rs @@ -1,14 +1,14 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::database::DatabaseFamily; use crate::service::ServiceTrait; +use crate::Result; use bollard::Docker; use futures_util::future::try_join_all; use maplit::hashmap; use miette::Report; -use serde_json::Value; use serde_json::json; +use serde_json::Value; use std::collections::HashMap; use std::convert::identity; diff --git a/src/service/smb.rs b/src/service/smb.rs index 44fafc3..08f69bd 100644 --- a/src/service/smb.rs +++ b/src/service/smb.rs @@ -1,11 +1,11 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; -use crate::service::{ServiceTrait, split_cmnd}; -use bollard::Docker; +use crate::service::{split_cmnd, ServiceTrait}; +use crate::Result; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::IntoDiagnostic; diff --git a/src/service/webhook.rs b/src/service/webhook.rs index 8903b88..e7ebae0 100644 --- a/src/service/webhook.rs +++ b/src/service/webhook.rs @@ -1,11 +1,11 @@ -use crate::Result; use crate::cloud::CloudOptions; use crate::config::HazeConfig; use crate::image::pull_image; use crate::service::ServiceTrait; -use bollard::Docker; +use crate::Result; use bollard::models::{ContainerCreateBody, EndpointSettings, HostConfig, NetworkingConfig}; use bollard::query_parameters::CreateContainerOptions; +use bollard::Docker; use maplit::hashmap; use miette::IntoDiagnostic; diff --git a/src/sources.rs b/src/sources.rs index 0471a76..ccfe564 100644 --- a/src/sources.rs +++ b/src/sources.rs @@ -10,8 +10,8 @@ use std::io::Cursor; use std::path::{Path, PathBuf}; use std::time::Duration; use tokio::fs::create_dir_all; -use zip::ZipArchive; use zip::read::root_dir_common_filter; +use zip::ZipArchive; pub struct Sources { #[allow(dead_code)]