Skip to content

Commit

Permalink
Merge branch 'topgrade-rs:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
niStee authored Jun 30, 2024
2 parents f5ca908 + 55e1bbf commit 9ece053
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 1 deletion.
7 changes: 7 additions & 0 deletions config.example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -244,3 +244,10 @@
[containers]
# Specify the containers to ignore while updating (Wildcard supported)
# ignored_containers = ["ghcr.io/rancher-sandbox/rancher-desktop/rdx-proxy:latest", "docker.io*"]

[lensfun]
# If disabled, Topgrade invokes `lensfun‑update‑data` without root priviledge,
# then the update will be only available to you. Otherwise, `sudo` is required,
# and the update will be installed system-wide, i.e., available to all users.
# (default: false)
# use_sudo = false
18 changes: 18 additions & 0 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ pub enum Step {
Helix,
Krew,
Lure,
Lensfun,
Macports,
Mamba,
Miktex,
Expand Down Expand Up @@ -396,6 +397,12 @@ pub struct Misc {
log_filters: Option<Vec<String>>,
}

#[derive(Deserialize, Default, Debug, Merge)]
#[serde(deny_unknown_fields)]
pub struct Lensfun {
use_sudo: Option<bool>,
}

#[derive(Deserialize, Default, Debug, Merge)]
#[serde(deny_unknown_fields)]
/// Configuration file
Expand Down Expand Up @@ -456,6 +463,9 @@ pub struct ConfigFile {

#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
distrobox: Option<Distrobox>,

#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
lensfun: Option<Lensfun>,
}

fn config_directory() -> PathBuf {
Expand Down Expand Up @@ -1523,6 +1533,14 @@ impl Config {

self.opt.custom_commands.iter().any(|s| s == name)
}

pub fn lensfun_use_sudo(&self) -> bool {
self.config_file
.lensfun
.as_ref()
.and_then(|lensfun| lensfun.use_sudo)
.unwrap_or(false)
}
}

#[cfg(test)]
Expand Down
3 changes: 3 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,9 @@ fn run() -> Result<()> {
runner.execute(Step::PlatformioCore, "PlatformIO Core", || {
generic::run_platform_io(&ctx)
})?;
runner.execute(Step::Lensfun, "Lensfun's database update", || {
generic::run_lensfun_update_data(&ctx)
})?;

if should_run_powershell {
runner.execute(Step::Powershell, "Powershell Modules Update", || {
Expand Down
25 changes: 25 additions & 0 deletions src/steps/generic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -977,3 +977,28 @@ pub fn run_platform_io(ctx: &ExecutionContext) -> Result<()> {

ctx.run_type().execute(bin_path).arg("upgrade").status_checked()
}

/// Run `lensfun-update-data` to update lensfun database.
///
/// `sudo` will be used if `use_sudo` configuration entry is set to true.
pub fn run_lensfun_update_data(ctx: &ExecutionContext) -> Result<()> {
const SEPARATOR: &str = "Lensfun's database update";
let lensfun_update_data = require("lensfun-update-data")?;
const EXIT_CODE_WHEN_NO_UPDATE: i32 = 1;

if ctx.config().lensfun_use_sudo() {
let sudo = require_option(ctx.sudo().as_ref(), REQUIRE_SUDO.to_string())?;
print_separator(SEPARATOR);
ctx.run_type()
.execute(sudo)
.arg(lensfun_update_data)
// `lensfun-update-data` returns 1 when there is no update available
// which should be considered success
.status_checked_with_codes(&[EXIT_CODE_WHEN_NO_UPDATE])
} else {
print_separator(SEPARATOR);
ctx.run_type()
.execute(lensfun_update_data)
.status_checked_with_codes(&[EXIT_CODE_WHEN_NO_UPDATE])
}
}
9 changes: 8 additions & 1 deletion src/steps/tmux.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,14 @@ use crate::{
use std::os::unix::process::CommandExt as _;

pub fn run_tpm(ctx: &ExecutionContext) -> Result<()> {
let tpm = HOME_DIR.join(".tmux/plugins/tpm/bin/update_plugins").require()?;
let tpm = match env::var("TMUX_PLUGIN_MANAGER_PATH") {
// If `TMUX_PLUGIN_MANAGER_PATH` is set, search for
// `$TMUX_PLUGIN_MANAGER_PATH/bin/install_plugins/tpm/bin/update_plugins`
Ok(var) => PathBuf::from(var).join("bin/install_plugins/tpm/bin/update_plugins"),
// Otherwise, use the default location `~/.tmux/plugins/tpm/bin/update_plugins`
Err(_) => HOME_DIR.join(".tmux/plugins/tpm/bin/update_plugins"),
}
.require()?;

print_separator("tmux plugins");

Expand Down

0 comments on commit 9ece053

Please sign in to comment.