Extra options for distrobox (#83)

This commit is contained in:
LeSnake04
2022-10-28 00:29:35 +02:00
committed by GitHub
parent 6a3de81f1f
commit bf7f9a64ee
3 changed files with 47 additions and 9 deletions

View File

@@ -107,3 +107,7 @@
[flatpak] [flatpak]
# Use sudo for updating the system-wide installation # Use sudo for updating the system-wide installation
#use_sudo = true #use_sudo = true
[distrobox]
#use_root = false
#containers = ["archlinux-latest"]

View File

@@ -172,6 +172,14 @@ pub struct Windows {
enable_winget: Option<bool>, enable_winget: Option<bool>,
} }
#[derive(Deserialize, Default, Debug)]
#[serde(deny_unknown_fields)]
#[allow(clippy::upper_case_acronyms)]
pub struct Distrobox {
use_root: Option<bool>,
containers: Option<Vec<String>>,
}
#[derive(Deserialize, Default, Debug)] #[derive(Deserialize, Default, Debug)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
#[allow(clippy::upper_case_acronyms)] #[allow(clippy::upper_case_acronyms)]
@@ -293,6 +301,7 @@ pub struct ConfigFile {
firmware: Option<Firmware>, firmware: Option<Firmware>,
vagrant: Option<Vagrant>, vagrant: Option<Vagrant>,
flatpak: Option<Flatpak>, flatpak: Option<Flatpak>,
distrobox: Option<Distrobox>,
} }
fn config_directory(base_dirs: &BaseDirs) -> PathBuf { fn config_directory(base_dirs: &BaseDirs) -> PathBuf {
@@ -615,7 +624,6 @@ impl Config {
} }
/// Extra Tmux arguments /// Extra Tmux arguments
pub fn tmux_arguments(&self) -> &Option<String> { pub fn tmux_arguments(&self) -> &Option<String> {
&self.config_file.tmux_arguments &self.config_file.tmux_arguments
} }
@@ -809,6 +817,20 @@ impl Config {
.and_then(|linux| linux.dnf_arguments.as_deref()) .and_then(|linux| linux.dnf_arguments.as_deref())
} }
/// Distrobox use root
pub fn distrobox_root(&self) -> bool {
self.config_file
.distrobox
.as_ref()
.and_then(|r| r.use_root)
.unwrap_or(false)
}
/// Distrobox containers
pub fn distrobox_containers(&self) -> Option<&Vec<String>> {
self.config_file.distrobox.as_ref().and_then(|r| r.containers.as_ref())
}
/// Concurrency limit for git /// Concurrency limit for git
pub fn git_concurrency_limit(&self) -> Option<usize> { pub fn git_concurrency_limit(&self) -> Option<usize> {
self.config_file.git.as_ref().and_then(|git| git.max_concurrency) self.config_file.git.as_ref().and_then(|git| git.max_concurrency)

View File

@@ -607,14 +607,26 @@ pub fn run_protonup_update(ctx: &ExecutionContext) -> Result<()> {
} }
pub fn run_distrobox_update(ctx: &ExecutionContext) -> Result<()> { pub fn run_distrobox_update(ctx: &ExecutionContext) -> Result<()> {
let distrobox = require("distrobox")?; print_separator("Distrobox");
match (
print_separator("distrobox"); match (
ctx.run_type().execute("distrobox").arg("upgrade"),
ctx.run_type() ctx.config().distrobox_containers(),
.execute(distrobox) ) {
.args(&["upgrade", "--all"]) (r, Some(c)) => {
.check_run() if c.is_empty() {
return Err(SkipStep("You need to specify at least one container".to_string()).into());
}
r.args(c)
}
(r, None) => r.arg("--all"),
},
ctx.config().distrobox_root(),
) {
(r, true) => r.arg("--root"),
(r, false) => r,
}
.check_run()
} }
pub fn run_config_update(ctx: &ExecutionContext) -> Result<()> { pub fn run_config_update(ctx: &ExecutionContext) -> Result<()> {