9 Commits

7 changed files with 43 additions and 34 deletions

6
Cargo.lock generated
View File

@@ -410,7 +410,7 @@ dependencies = [
[[package]]
name = "artix-gitea"
version = "0.1.2"
version = "0.1.4"
dependencies = [
"actix-web",
"awc",
@@ -420,7 +420,7 @@ dependencies = [
[[package]]
name = "artix-pkglib"
version = "0.1.2"
version = "0.1.4"
dependencies = [
"alpm",
"alpm-utils",
@@ -430,7 +430,7 @@ dependencies = [
[[package]]
name = "artixweb_packages"
version = "0.1.2"
version = "0.1.4"
dependencies = [
"actix-files",
"actix-identity",

View File

@@ -8,7 +8,7 @@ homepage = "https://packages.artixlinux.org"
keywords = ["artix", "packages", "gitea"]
license = "MIT OR Apache-2.0"
edition = "2021"
version = "0.1.2"
version = "0.1.4"
[lib]
name = "artix_gitea"

View File

@@ -8,7 +8,7 @@ homepage = "https://packages.artixlinux.org"
keywords = ["artix", "packages"]
license = "MIT OR Apache-2.0"
edition = "2021"
version = "0.1.2"
version = "0.1.4"
[lib]
name = "artix_pkglib"

View File

@@ -7,7 +7,7 @@ repository = "gitea.artixlinux.org/artix/artixweb_packages"
keywords = ["artix", "packages"]
license = "MIT OR Apache-2.0"
edition = "2021"
version = "0.1.2"
version = "0.1.4"
[[bin]]
name = "artixweb_packages"
@@ -15,8 +15,8 @@ test = false
bench = false
[dependencies]
artix-gitea = { path = "../artix-gitea", version = "=0.1.2" }
artix-pkglib = { path = "../artix-pkglib", version = "=0.1.2" }
artix-gitea = { path = "../artix-gitea", version = "=0.1.4" }
artix-pkglib = { path = "../artix-pkglib", version = "=0.1.4" }
actix-files = "0.6.0"
actix-identity = "0.4"

View File

@@ -121,33 +121,31 @@ pub async fn index(
repos.join(":")
};
let s = if let Ok(result) =
let mut s = PackagesNavigation {
user_email,
packages: Vec::new(),
repos,
total: 0,
query: query_url.join("&"),
total_pages: 1,
generation_time: 0,
offset,
limit
};
if let Ok(result) =
get_packages_inner(&repos_criteria, limit, offset, search_criteria, Some(&pool)).await
{
PackagesNavigation {
user_email,
packages: result.0,
repos,
total: result.1,
query: query_url.join("&"),
total_pages: if limit > 0 {
(result.1 as f64 / limit as f64).ceil() as usize
} else {
1
},
generation_time: start_time.elapsed().as_millis(),
offset,
limit,
}
.render()
.unwrap()
} else {
return Ok(HttpResponse::NotFound()
.content_type("text/html")
.body("<html><body>404 - Page Not Found!</body></html>"));
};
s.packages = result.0;
s.total = result.1;
s.total_pages = if limit > 0 {
(result.1 as f64 / limit as f64).ceil() as usize
} else {
1
};
}
s.generation_time = start_time.elapsed().as_millis();
Ok(HttpResponse::Ok().content_type("text/html").body(s))
Ok(HttpResponse::Ok().content_type("text/html").body(s.render().unwrap()))
}
#[allow(clippy::unnecessary_wraps)]

View File

@@ -110,6 +110,7 @@ pub(crate) struct ResponseDetail {
pub required_by: Vec<String>,
pub contents: Vec<String>,
pub maintainers: Vec<String>,
pub packaged_by: String,
pub flagged: bool,
pub flagged_on: i64,
pub flagged_by: Vec<String>,
@@ -457,7 +458,7 @@ pub(crate) async fn get_packages_details_inner(
.iter()
.map(std::string::ToString::to_string)
.collect(),
gitea_url: String::new(),
gitea_url: format!("{}/packages/{}", SETTINGS.gitea_url, pkg.name().to_string()),
dependencies: get_depends_from_package(
&handle,
pkg.arch().unwrap_or("any"),
@@ -506,6 +507,7 @@ pub(crate) async fn get_packages_details_inner(
pkg.replaces(),
&DependencyKind::Misc,
),
packaged_by: format_packager(pkg.packager().unwrap_or("").to_string()),
flagged: false,
flagged_on: 0,
flagged_by: Vec::new(),
@@ -517,7 +519,6 @@ pub(crate) async fn get_packages_details_inner(
web::block(move || get_package_metadata(&pkg_name_version, &pool)).await
{
result.last_updated = metadata.last_update.timestamp();
result.gitea_url = metadata.gitea_url;
result.flagged = metadata.flagged;
if let Some(flagged_on) = metadata.flag_on {
result.flagged_on = flagged_on.timestamp_millis();
@@ -566,6 +567,14 @@ pub(crate) async fn get_packages_details_inner(
Err(ArtixWebPackageError::NotFound)
}
// removes email address from the packager string
fn format_packager(mut input: String) -> String {
if let Some(pos) = input.find('<') {
input.truncate(pos - 1);
}
input
}
// adds package metadata into the local postgres database
fn add_package_metadata(metadata: &PackageMeta, pool: &web::Data<Pool>) {
use crate::schema::packages::dsl::packages;

View File

@@ -72,6 +72,8 @@
<section role="value">{{ pkg.installed_size|human_readable }} MB</section>
<section role="key">Build Date:</section>
<section role="value">{{ pkg.build_date|show_date }}</section>
<section role="key">Packaged By:</section>
<section role="value">{{ pkg.packaged_by }}</section>
{% if pkg.flagged && !pkg.flagged_by.is_empty() %}
<section role="key">Flagged By:</section>
<section role="value">{{ pkg.flagged_by|join(", ") }}</section>