Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ postgres = "0.19.9"
quick-xml = "0.37.1"
r2d2_postgres = "0.18.1"
rand = "0.8.5"
regex = "1.11.1"
regex-lite = "0.1.6"
reqwest = { version = "0.12.12", default-features = false }
reqwest-middleware = "0.4.0"
reqwest-retry = "0.7.0"
Expand Down
2 changes: 1 addition & 1 deletion postgresql_archive/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ liblzma = { workspace = true }
md-5 = { workspace = true, optional = true }
num-format = { workspace = true }
quick-xml = { workspace = true, features = ["serialize"], optional = true }
regex = { workspace = true }
regex-lite = { workspace = true }
reqwest = { workspace = true, default-features = false, features = ["json", "stream"] }
reqwest-middleware = { workspace = true }
reqwest-retry = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion postgresql_archive/src/archive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

use crate::error::Result;
use crate::{extractor, repository};
use regex::Regex;
use regex_lite::Regex;
use semver::{Version, VersionReq};
use std::path::{Path, PathBuf};
use tracing::instrument;
Expand Down
2 changes: 1 addition & 1 deletion postgresql_archive/src/configuration/theseus/extractor.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::extractor::{tar_gz_extract, ExtractDirectories};
use crate::Error::Unexpected;
use crate::Result;
use regex::Regex;
use regex_lite::Regex;
use std::fs::{create_dir_all, remove_dir_all, remove_file, rename};
use std::path::{Path, PathBuf};
use std::thread::sleep;
Expand Down
2 changes: 1 addition & 1 deletion postgresql_archive/src/configuration/zonky/extractor.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::extractor::{tar_xz_extract, ExtractDirectories};
use crate::Error::Unexpected;
use crate::Result;
use regex::Regex;
use regex_lite::Regex;
use std::fs::{create_dir_all, remove_dir_all, remove_file, rename};
use std::io::Cursor;
use std::path::{Path, PathBuf};
Expand Down
10 changes: 5 additions & 5 deletions postgresql_archive/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ pub enum Error {
VersionNotFound(String),
}

/// Converts a [`regex::Error`] into an [`ParseError`](Error::ParseError)
impl From<regex::Error> for Error {
fn from(error: regex::Error) -> Self {
/// Converts a [`regex_lite::Error`] into an [`ParseError`](Error::ParseError)
impl From<regex_lite::Error> for Error {
fn from(error: regex_lite::Error) -> Self {
Error::ParseError(error.to_string())
}
}
Expand Down Expand Up @@ -125,9 +125,9 @@ mod test {

#[test]
fn test_from_regex_error() {
let regex_error = regex::Error::Syntax("test".to_string());
let regex_error = regex_lite::Regex::new("(?=a)").expect_err("regex error");
let error = Error::from(regex_error);
assert_eq!(error.to_string(), "test");
assert_eq!(error.to_string(), "look-around is not supported");
}

#[tokio::test]
Expand Down
2 changes: 1 addition & 1 deletion postgresql_archive/src/extractor/model.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::{Error, Result};
use regex::Regex;
use regex_lite::Regex;
use std::fmt::Display;
use std::path::PathBuf;

Expand Down
2 changes: 1 addition & 1 deletion postgresql_archive/src/extractor/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ pub fn get(url: &str) -> Result<ExtractFn> {
#[cfg(test)]
mod tests {
use super::*;
use regex::Regex;
use regex_lite::Regex;

#[test]
fn test_register() -> Result<()> {
Expand Down
2 changes: 1 addition & 1 deletion postgresql_archive/src/repository/github/repository.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use crate::Error::{
use crate::{hasher, matcher, Result};
use async_trait::async_trait;
use futures_util::StreamExt;
use regex::Regex;
use regex_lite::Regex;
use reqwest::header::HeaderMap;
use reqwest_middleware::{ClientBuilder, ClientWithMiddleware};
use reqwest_retry::policies::ExponentialBackoff;
Expand Down
2 changes: 1 addition & 1 deletion postgresql_extensions/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ version.workspace = true
async-trait = { workspace = true }
postgresql_archive = { path = "../postgresql_archive", version = "0.17.4", default-features = false }
postgresql_commands = { path = "../postgresql_commands", version = "0.17.4", default-features = false }
regex = { workspace = true }
regex-lite = { workspace = true }
reqwest = { workspace = true, default-features = false, features = ["json"] }
semver = { workspace = true, features = ["serde"] }
serde = { workspace = true, features = ["derive"] }
Expand Down
6 changes: 3 additions & 3 deletions postgresql_extensions/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ pub enum Error {
#[error("extension not found '{0}'")]
ExtensionNotFound(String),
/// Error when an IO operation fails
#[error(transparent)]
IoError(#[from] std::io::Error),
#[error("{0}")]
IoError(String),
/// Poisoned lock
#[error("poisoned lock '{0}'")]
PoisonedLock(String),
/// Error when a regex operation fails
#[error(transparent)]
RegexError(#[from] regex::Error),
RegexError(#[from] regex_lite::Error),
/// Error when a deserialization or serialization operation fails
#[error(transparent)]
SerdeError(#[from] serde_json::Error),
Expand Down
20 changes: 11 additions & 9 deletions postgresql_extensions/src/extensions.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::model::AvailableExtension;
use crate::repository::registry;
use crate::repository::registry::get_repositories;
use crate::Error::IoError;
use crate::{InstalledConfiguration, InstalledExtension, Result};
use postgresql_commands::pg_config::PgConfigBuilder;
use postgresql_commands::postgres::PostgresBuilder;
Expand All @@ -10,7 +11,7 @@
#[cfg(not(feature = "tokio"))]
use postgresql_commands::CommandExecutor;
use postgresql_commands::Settings;
use regex::Regex;
use regex_lite::Regex;
use semver::VersionReq;
use std::path::PathBuf;
use tracing::{debug, instrument};
Expand Down Expand Up @@ -116,9 +117,12 @@
if file.exists() {
debug!("Removing file: {file:?}");
#[cfg(feature = "tokio")]
tokio::fs::remove_file(file).await?;
tokio::fs::remove_file(file)
.await
.map_err(|error| IoError(error.to_string()))?;

Check warning on line 122 in postgresql_extensions/src/extensions.rs

View check run for this annotation

Codecov / codecov/patch

postgresql_extensions/src/extensions.rs#L122

Added line #L122 was not covered by tests
#[cfg(not(feature = "tokio"))]
std::fs::remove_file(file)?;
std::fs::remove_file(file)
.map_err(|error| crate::error::Error::IoError(error.to_string()))?;
}
}
}
Expand Down Expand Up @@ -208,16 +212,14 @@
let (stdout, _stderr) = execute_command(command).await?;
let re = Regex::new(r"PostgreSQL\)\s(\d+\.\d+)")?;
let Some(captures) = re.captures(&stdout) else {
return Err(regex::Error::Syntax(format!(
return Err(IoError(format!(

Check warning on line 215 in postgresql_extensions/src/extensions.rs

View check run for this annotation

Codecov / codecov/patch

postgresql_extensions/src/extensions.rs#L215

Added line #L215 was not covered by tests
"Failed to obtain postgresql version from {stdout}"
))
.into());
)));

Check warning on line 217 in postgresql_extensions/src/extensions.rs

View check run for this annotation

Codecov / codecov/patch

postgresql_extensions/src/extensions.rs#L217

Added line #L217 was not covered by tests
};
let Some(version) = captures.get(1) else {
return Err(regex::Error::Syntax(format!(
return Err(IoError(format!(

Check warning on line 220 in postgresql_extensions/src/extensions.rs

View check run for this annotation

Codecov / codecov/patch

postgresql_extensions/src/extensions.rs#L220

Added line #L220 was not covered by tests
"Failed to match postgresql version from {stdout}"
))
.into());
)));

Check warning on line 222 in postgresql_extensions/src/extensions.rs

View check run for this annotation

Codecov / codecov/patch

postgresql_extensions/src/extensions.rs#L222

Added line #L222 was not covered by tests
};
let version = version.as_str();
debug!("Obtained PostgreSQL version from postgres command: {version}");
Expand Down
2 changes: 1 addition & 1 deletion postgresql_extensions/src/matcher.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use postgresql_archive::Result;
use regex::Regex;
use regex_lite::Regex;
use semver::Version;
use std::collections::HashMap;
use std::env::consts;
Expand Down
36 changes: 26 additions & 10 deletions postgresql_extensions/src/model.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::Error::IoError;
use crate::Result;
use semver::Version;
use serde::{Deserialize, Serialize};
Expand Down Expand Up @@ -74,17 +75,23 @@ impl InstalledConfiguration {
pub async fn read<P: Into<PathBuf>>(path: P) -> Result<Self> {
#[cfg(feature = "tokio")]
{
let mut file = tokio::fs::File::open(path.into()).await?;
let mut file = tokio::fs::File::open(path.into())
.await
.map_err(|error| IoError(error.to_string()))?;
let mut contents = vec![];
file.read_to_end(&mut contents).await?;
file.read_to_end(&mut contents)
.await
.map_err(|error| IoError(error.to_string()))?;
let config = serde_json::from_slice(&contents)?;
Ok(config)
}
#[cfg(not(feature = "tokio"))]
{
let file = std::fs::File::open(path.into())?;
let file =
std::fs::File::open(path.into()).map_err(|error| IoError(error.to_string()))?;
let reader = std::io::BufReader::new(file);
let config = serde_json::from_reader(reader)?;
let config =
serde_json::from_reader(reader).map_err(|error| IoError(error.to_string()))?;
Ok(config)
}
}
Expand All @@ -98,13 +105,19 @@ impl InstalledConfiguration {

#[cfg(feature = "tokio")]
{
let mut file = tokio::fs::File::create(path.into()).await?;
file.write_all(content.as_bytes()).await?;
let mut file = tokio::fs::File::create(path.into())
.await
.map_err(|error| IoError(error.to_string()))?;
file.write_all(content.as_bytes())
.await
.map_err(|error| IoError(error.to_string()))?;
}
#[cfg(not(feature = "tokio"))]
{
let mut file = std::fs::File::create(path.into())?;
file.write_all(content.as_bytes())?;
let mut file =
std::fs::File::create(path.into()).map_err(|error| IoError(error.to_string()))?;
file.write_all(content.as_bytes())
.map_err(|error| IoError(error.to_string()))?;
}
Ok(())
}
Expand Down Expand Up @@ -236,7 +249,8 @@ mod tests {
#[cfg(target_os = "linux")]
#[tokio::test]
async fn test_installed_configuration_io() -> Result<()> {
let temp_file = tempfile::NamedTempFile::new()?;
let temp_file =
tempfile::NamedTempFile::new().map_err(|error| IoError(error.to_string()))?;
let file = temp_file.as_ref();
let extensions = vec![InstalledExtension::new(
"namespace",
Expand All @@ -248,7 +262,9 @@ mod tests {
expected_configuration.write(file).await?;
let configuration = InstalledConfiguration::read(file).await?;
assert_eq!(expected_configuration, configuration);
tokio::fs::remove_file(file).await?;
tokio::fs::remove_file(file)
.await
.map_err(|error| IoError(error.to_string()))?;
Ok(())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use async_trait::async_trait;
use postgresql_archive::extractor::{zip_extract, ExtractDirectories};
use postgresql_archive::get_archive;
use postgresql_archive::repository::github::repository::GitHub;
use regex::Regex;
use regex_lite::Regex;
use semver::{Version, VersionReq};
use std::fmt::Debug;
use std::path::PathBuf;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use async_trait::async_trait;
use postgresql_archive::extractor::{tar_gz_extract, ExtractDirectories};
use postgresql_archive::get_archive;
use postgresql_archive::repository::github::repository::GitHub;
use regex::Regex;
use regex_lite::Regex;
use semver::{Version, VersionReq};
use std::fmt::Debug;
use std::path::PathBuf;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use async_trait::async_trait;
use postgresql_archive::extractor::{zip_extract, ExtractDirectories};
use postgresql_archive::get_archive;
use postgresql_archive::repository::github::repository::GitHub;
use regex::Regex;
use regex_lite::Regex;
use semver::{Version, VersionReq};
use std::fmt::Debug;
use std::path::PathBuf;
Expand Down
Loading