Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FR] Add experimental support #28

Open
werdahias opened this issue Jun 5, 2023 · 5 comments
Open

[FR] Add experimental support #28

werdahias opened this issue Jun 5, 2023 · 5 comments

Comments

@werdahias
Copy link
Contributor

werdahias commented Jun 5, 2023

Currently cargo-debstatus checks only packages in sid. While there aren't a lot of rust packages in experimental it'd be nice to check experimental too in case they are. Maybe the color could be a slightly greener shade than the one used for unstable ?

@werdahias
Copy link
Contributor Author

werdahias commented Jun 5, 2023

commit 2b14c6dc1a00e734d37bbb91bebe5607884f2bc9
Author: Matthias Geiger <[email protected]>
Date:   Mon Jun 5 17:35:03 2023 +0200

    Added exp support

diff --git a/src/db.rs b/src/db.rs
index c3cba82..878f75a 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -115,6 +115,23 @@ impl Connection {
         self.write_cache("sid", package, version, found)?;
         Ok(found)
     }
+    
+    pub fn search_exp(&mut self, package: &str, version: &str) -> Result<bool, Error> {
+        if let Some(found) = self.check_cache("exp", package, version)? {
+            return Ok(found);
+        }
+
+        // config.shell().status("Querying", format!("sid: {}", package))?;
+        info!("Querying -> exp: {}", package);
+        let found = self.search_generic(
+            "SELECT version::text FROM sources WHERE source=$1 AND release='rc-buggy';",
+            package,
+            version,
+        )?;
+
+        self.write_cache("exp", package, version, found)?;
+        Ok(found)
+    }    
 
     pub fn search_new(&mut self, package: &str, version: &str) -> Result<bool, Error> {
         if let Some(found) = self.check_cache("new", package, version)? {
diff --git a/src/debian.rs b/src/debian.rs
index 1f0959f..3f82dab 100644
--- a/src/debian.rs
+++ b/src/debian.rs
@@ -40,7 +40,7 @@ impl Pkg {
 
     pub fn in_debian(&self) -> bool {
         if let Some(deb) = &self.debinfo {
-            deb.in_unstable || deb.in_new
+            deb.in_unstable || deb.in_new || deb.in_experimental
         } else {
             false
         }
@@ -52,12 +52,14 @@ pub struct DebianInfo {
     pub in_unstable: bool,
     pub in_new: bool,
     pub outdated: bool,
+    pub in_experimental: bool,
 }
 
 fn run_task(db: &mut Connection, pkg: Pkg) -> Result<DebianInfo> {
     let mut deb = DebianInfo {
         in_unstable: false,
         in_new: false,
+	in_experimental: false,
         outdated: false,
     };
 
@@ -65,8 +67,9 @@ fn run_task(db: &mut Connection, pkg: Pkg) -> Result<DebianInfo> {
         deb.in_unstable = true;
     } else if db.search_new(&pkg.name, &pkg.version.to_string()).unwrap() {
         deb.in_new = true;
+    } else if db.search_exp(&pkg.name, &pkg.version.to_string()).unwrap() {
+	deb.in_experimental = true;
     }
-
     Ok(deb)
 }
 
diff --git a/src/format/mod.rs b/src/format/mod.rs
index b4d212a..2ec493b 100644
--- a/src/format/mod.rs
+++ b/src/format/mod.rs
@@ -59,7 +59,9 @@ impl<'a> fmt::Display for Display<'a> {
                     if let Some(deb) = &self.package.debinfo {
                         if deb.in_unstable {
                             write!(fmt, "{} (in debian)", pkg.green())?;
-                        } else if deb.in_new {
+                        } else if deb.in_experimental {
+			    write!(fmt, "{} (in debian)", pkg.green())?; //another color for exp? is there a light green?
+			} else if deb.in_new {
                             write!(fmt, "{} (in debian NEW queue)", pkg.blue())?;
                         } else if deb.outdated {
                             write!(fmt, "{} (outdated)", pkg.yellow())?;

@jamessan
Copy link
Contributor

I had been thinking of this, too. Maybe rather than using a different color, change the output from (in debian) to (in debian experimental)?

@werdahias
Copy link
Contributor Author

Yeah, that's definitely a good idea. I'd appreciate it someone more skilled in rust could take a look at this (the patch does not work for some reason).

@werdahias
Copy link
Contributor Author

updated diff:

diff --git a/src/db.rs b/src/db.rs
index 8842317..50d2fd8 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -105,6 +105,24 @@ impl Connection {
         self.write_cache("sid", package, version, found)?;
         Ok(found)
     }
+    
+    pub fn search_exp(&mut self, package: &str, version: &Version) -> Result<bool, Error> {
+         if let Some(found) = self.check_cache("exp", package, version)? {
+             return Ok(found);
+         }
+ 
+         // config.shell().status("Querying", format!("sid: {}", package))?;
+         info!("Querying -> exp: {}", package);
+         let found = self.search_generic(
+             "SELECT version::text FROM sources WHERE source in ($1, $2) AND release='rc-buggy';",
+             package,
+             version,
+         )?;
+ 
+         self.write_cache("exp", package, version, found)?;
+         Ok(found)
+     }
+
 
     pub fn search_new(&mut self, package: &str, version: &Version) -> Result<bool, Error> {
         if let Some(found) = self.check_cache("new", package, version)? {
diff --git a/src/debian.rs b/src/debian.rs
index 53f4805..6e3c5d1 100644
--- a/src/debian.rs
+++ b/src/debian.rs
@@ -40,7 +40,7 @@ impl Pkg {
 
     pub fn in_debian(&self) -> bool {
         if let Some(deb) = &self.debinfo {
-            deb.in_unstable || deb.in_new
+            deb.in_unstable || deb.in_new || deb.in_exp
         } else {
             false
         }
@@ -52,12 +52,14 @@ pub struct DebianInfo {
     pub in_unstable: bool,
     pub in_new: bool,
     pub outdated: bool,
+    pub in_exp: bool,
 }
 
 fn run_task(db: &mut Connection, pkg: Pkg) -> Result<DebianInfo> {
     let mut deb = DebianInfo {
         in_unstable: false,
         in_new: false,
+        in_exp: false,
         outdated: false,
     };
 
@@ -65,6 +67,8 @@ fn run_task(db: &mut Connection, pkg: Pkg) -> Result<DebianInfo> {
         deb.in_unstable = true;
     } else if db.search_new(&pkg.name, &pkg.version).unwrap() {
         deb.in_new = true;
+    } else if db.search_exp(&pkg.name, &pkg.version).unwrap() {
+	deb.in_exp = true;
     }
 
     Ok(deb)
diff --git a/src/format/mod.rs b/src/format/mod.rs
index b4d212a..50b83f9 100644
--- a/src/format/mod.rs
+++ b/src/format/mod.rs
@@ -59,6 +59,8 @@ impl<'a> fmt::Display for Display<'a> {
                     if let Some(deb) = &self.package.debinfo {
                         if deb.in_unstable {
                             write!(fmt, "{} (in debian)", pkg.green())?;
+                        } else if deb.in_exp {
+                            write!(fmt, "{} (in debian experimental)", pkg.bright_green())?;
                         } else if deb.in_new {
                             write!(fmt, "{} (in debian NEW queue)", pkg.blue())?;
                         } else if deb.outdated {

It still show lcms2-sys in new rather then unstable so I can't test it yet. Feel free to improve upon my code.

@werdahias
Copy link
Contributor Author

@alexanderkjall can you maybe take a look ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants