Opinionated Android 15+ Linux Terminal Setup
android linux command-line-tools

Merge pull request #5 from tsirysndr/feat/doppler

feat: add support for doppler secret manager

authored by tsiry-sandratraina.com and committed by

GitHub 4b9ef187 1f6c6e1e

+47 -11
+2
README.md
··· 22 22 - Pre-installed [NeoVim](https://neovim.io/) 23 23 - [Oh My Posh](https://ohmyposh.dev/) integration for a beautiful prompt 24 24 - [Oh My Tmux!](https://github.com/gpakosz/.tmux) integration for a better tmux experience 25 + - [Doppler](https://www.doppler.com/) integration for managing secrets 25 26 - Alias setup for ls: `alias ls='eza -lh'` 26 27 27 28 ![Preview](./preview.png) ··· 48 49 "ble.sh" = true 49 50 zoxide = true 50 51 tailscale = false 52 + doppler = false 51 53 52 54 [stow] 53 55 git = "github:tsirysndr/android-dotfiles"
+25
src/apply.rs
··· 24 24 Paths, 25 25 Tailscale(bool), 26 26 Neofetch(bool), 27 + Doppler(bool), 27 28 } 28 29 29 30 impl<'a> SetupStep<'a> { ··· 43 44 SetupStep::Paths => setup_paths(), 44 45 SetupStep::Tailscale(enabled) => enable_tailscale(*enabled), 45 46 SetupStep::Neofetch(enabled) => enable_neofetch(*enabled), 47 + SetupStep::Doppler(enabled) => enable_doppler(*enabled), 46 48 } 47 49 } 48 50 ··· 202 204 "{} {}\n - Enabled: {}", 203 205 "Neofetch".blue().bold(), 204 206 "(Enable Neofetch on terminal startup)".italic(), 207 + enabled.to_string().green() 208 + ) 209 + } 210 + SetupStep::Doppler(enabled) => { 211 + format!( 212 + "{} {}\n - Enabled: {}", 213 + "Doppler".blue().bold(), 214 + "(Install and configure Doppler for secrets management)".italic(), 205 215 enabled.to_string().green() 206 216 ) 207 217 } ··· 536 546 } 537 547 Ok(()) 538 548 } 549 + 550 + fn enable_doppler(enabled: bool) -> Result<(), Error> { 551 + if enabled { 552 + run_command( 553 + "bash", 554 + &[ 555 + "-c", 556 + "(curl -Ls --tlsv1.2 --proto \"=https\" --retry 3 https://cli.doppler.com/install.sh || wget -t 3 -qO- https://cli.doppler.com/install.sh) | sudo sh", 557 + ], 558 + ) 559 + .context("Failed to install Doppler")?; 560 + run_command("bash", &["-c", "doppler login"]).context("Failed to log in to Doppler")?; 561 + } 562 + Ok(()) 563 + }
+9 -11
src/cmd/setup.rs
··· 13 13 cfg = toml::from_str(&toml_str)?; 14 14 } 15 15 16 - let mut diffs = Vec::new(); 16 + let home_dir = 17 + dirs::home_dir().ok_or_else(|| anyhow::anyhow!("Failed to get home directory"))?; 18 + let diffs = match Path::new(&home_dir).join(".oh-my-droid/lock.toml").exists() { 19 + true => { 20 + let old_cfg = Configuration::load_lock_file()?; 21 + compare_configurations(&old_cfg, &cfg) 22 + } 23 + false => compare_configurations(&Configuration::empty(), &cfg), 24 + }; 17 25 18 26 if !no_confirm && !dry_run { 19 - let home_dir = 20 - dirs::home_dir().ok_or_else(|| anyhow::anyhow!("Failed to get home directory"))?; 21 - diffs = match Path::new(&home_dir).join(".oh-my-droid/lock.toml").exists() { 22 - true => { 23 - let old_cfg = Configuration::load_lock_file()?; 24 - compare_configurations(&old_cfg, &cfg) 25 - } 26 - false => compare_configurations(&Configuration::empty(), &cfg), 27 - }; 28 - 29 27 if diffs.is_empty() { 30 28 println!( 31 29 "{}",
+10
src/config.rs
··· 67 67 68 68 #[serde(skip_serializing_if = "Option::is_none")] 69 69 pub neofetch: Option<bool>, 70 + 71 + #[serde(skip_serializing_if = "Option::is_none")] 72 + pub doppler: Option<bool>, 70 73 } 71 74 72 75 impl Configuration { ··· 85 88 tailscale: None, 86 89 ssh: None, 87 90 neofetch: None, 91 + doppler: None, 88 92 } 89 93 } 90 94 ··· 271 275 steps.push(SetupStep::Neofetch(neofetch_enabled)); 272 276 } 273 277 } 278 + "doppler" => { 279 + if let Some(doppler_enabled) = self.doppler { 280 + steps.push(SetupStep::Doppler(doppler_enabled)); 281 + } 282 + } 274 283 _ => {} // Ignore unknown configuration keys 275 284 } 276 285 } ··· 341 350 authorized_keys: Some(vec![]), 342 351 }), 343 352 neofetch: Some(true), 353 + doppler: Some(false), 344 354 } 345 355 } 346 356 }
+1
src/diff.rs
··· 359 359 diffs.extend(compare_bool("zoxide", &old.zoxide, &new.zoxide)); 360 360 diffs.extend(compare_bool("tailscale", &old.tailscale, &new.tailscale)); 361 361 diffs.extend(compare_bool("neofetch", &old.neofetch, &new.neofetch)); 362 + diffs.extend(compare_bool("doppler", &old.doppler, &new.doppler)); 362 363 363 364 diffs.extend(compare_oh_my_posh(&old.oh_my_posh, &new.oh_my_posh)); 364 365 diffs.extend(compare_ssh_config(&old.ssh, &new.ssh));