summaryrefslogtreecommitdiff
path: root/src/package_manager/package_manager.rs
diff options
context:
space:
mode:
authorShaun Taheri <shaun@advancedtelematic.com>2016-08-19 10:12:07 +0200
committerShaun Taheri <shaun@advancedtelematic.com>2016-08-23 18:00:28 +0200
commitba122a6fa07fed1eca61d2fc6c4fd5eebf50449e (patch)
tree31646764e34532f2c616ded6c577d4b5328a41f9 /src/package_manager/package_manager.rs
parent5debba21cc671d19c176369b849b5cad9c611071 (diff)
downloadrvi_sota_client-ba122a6fa07fed1eca61d2fc6c4fd5eebf50449e.tar.gz
Add documentation to public functions
Diffstat (limited to 'src/package_manager/package_manager.rs')
-rw-r--r--src/package_manager/package_manager.rs36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/package_manager/package_manager.rs b/src/package_manager/package_manager.rs
index 3d2972f..e0ddbe7 100644
--- a/src/package_manager/package_manager.rs
+++ b/src/package_manager/package_manager.rs
@@ -1,56 +1,58 @@
use rustc_serialize::{Decoder, Decodable};
-use std::env::temp_dir;
use std::str::FromStr;
use datatype::{Error, Package, UpdateResultCode};
use package_manager::{deb, otb, rpm, tpm};
-use tempfile::NamedTempFile;
+/// The outcome when installing a package as a tuple of the `UpdateResultCode`
+/// and any stdout/stderr output.
pub type InstallOutcome = (UpdateResultCode, String);
+/// An enumeration of the available package managers for querying and installing
+/// new packages.
#[derive(Debug, PartialEq, Eq, Clone)]
pub enum PackageManager {
Deb,
Rpm,
File { filename: String, succeeds: bool },
- OstreeBasic { repodir: String }
+ OSTree { repodir: String }
}
impl PackageManager {
- pub fn new_file(succeeds: bool) -> Self {
- PackageManager::File {
- filename: NamedTempFile::new_in(temp_dir()).expect("couldn't create temporary file")
- .path().file_name().expect("couldn't get file name")
- .to_str().expect("couldn't parse file name").to_string(),
- succeeds: succeeds
- }
- }
-
+ /// Delegates to the package manager specific function for returning a list
+ /// of installed packages.
pub fn installed_packages(&self) -> Result<Vec<Package>, Error> {
match *self {
PackageManager::Deb => deb::installed_packages(),
PackageManager::Rpm => rpm::installed_packages(),
PackageManager::File { ref filename, .. } => tpm::installed_packages(filename),
- PackageManager::OstreeBasic { ref repodir } => otb::installed_packages(repodir),
+ PackageManager::OSTree { ref repodir } => otb::installed_packages(repodir),
}
}
+ /// Delegates to the package manager specific function for installing a new
+ /// package on the device.
pub fn install_package(&self, path: &str) -> Result<InstallOutcome, InstallOutcome> {
match *self {
PackageManager::Deb => deb::install_package(path),
PackageManager::Rpm => rpm::install_package(path),
- PackageManager::File { ref filename, succeeds } => tpm::install_package(filename, path, succeeds),
- PackageManager::OstreeBasic { ref repodir } => otb::install_package(repodir, path),
+ PackageManager::File { ref filename, succeeds } => {
+ tpm::install_package(filename, path, succeeds)
+ }
+ PackageManager::OSTree { ref repodir } => {
+ otb::install_package(repodir, path)
+ }
}
}
+ /// Returns a string representation of the package manager's extension.
pub fn extension(&self) -> String {
match *self {
PackageManager::Deb => "deb".to_string(),
PackageManager::Rpm => "rpm".to_string(),
PackageManager::File { ref filename, .. } => filename.to_string(),
- PackageManager::OstreeBasic {..} => "otb".to_string(),
+ PackageManager::OSTree {..} => "otb".to_string(),
}
}
}
@@ -68,7 +70,7 @@ impl FromStr for PackageManager {
},
repo if repo.len() > 4 && repo[..4].as_bytes() == b"otb:" => {
- Ok(PackageManager::OstreeBasic { repodir: repo[4..].to_string() })
+ Ok(PackageManager::OSTree { repodir: repo[4..].to_string() })
}
_ => Err(Error::Parse(format!("unknown package manager: {}", s)))