dotfiles/manual/rust/rust-configure
DuckDuckWhale c772724cac
Misc: Rust, Helix, tmux underline, bash, rg, ...
Add:
- Rust and Helix install/configure scripts
- tmux curly underline with colors
- Rocky SSH & Mosh setup
- `asciinema` and `rg`
- Mosh PPA for old Ubuntu systems
- VirtualBox USB devices group
- Add `~/.local/bin/` to path in .bashrc

Update:
- Use `~/.bash_login` instead of `~/.profile` for tmux on login and exec it
- Rename `gnome-todo` to `endeavour`
- Use new sshd alias
- Reload instead of restarting sshd

Remove:
- Vim colorschemes and plugins
- `.sh` extensions on executable scripts
2023-03-19 22:58:35 -07:00

65 lines
1.6 KiB
Rust
Executable File

#!/usr/bin/env rust-script
//! ```cargo
//! [dependencies]
//! anyhow = "1.0.69"
//! dirs = "4.0.0"
//! ```
use anyhow::Context;
use std::{
fs::{self, File},
io::{BufRead, BufReader},
};
const ENV: &str = r#". "$HOME/.cargo/env""#;
fn main() -> anyhow::Result<()> {
let home = dirs::home_dir().context("can't find home directory")?;
let mut login_path = home.clone();
login_path.push(".bash_login");
let login = BufReader::new(File::open(&login_path).context("failed to read ~/.bash_login")?);
let mut bashrc_path = home.clone();
bashrc_path.push(".bashrc");
let bashrc = BufReader::new(File::open(&bashrc_path).context("failed to read ~/.bashrc")?);
let mut empty = false;
let mut new_bashrc = String::new();
for line in bashrc.lines() {
let line = line.context("failed to read line in ~/.bashrc")?;
if line.is_empty() && empty {
continue;
}
empty = line.is_empty();
if line != ENV {
new_bashrc.push_str(&line);
new_bashrc.push('\n');
}
}
let mut empty = false;
let mut new_login = String::new();
for line in login.lines() {
let line = line.context("failed to read line in ~/.bash_login")?;
if line.is_empty() && empty {
continue;
}
empty = line.is_empty();
if line != ENV {
new_login.push_str(&line);
new_login.push('\n');
}
if line == "# custom" {
new_login.push('\n');
new_login.push_str(ENV);
new_login.push_str("\n\n");
empty = true;
}
}
fs::write(bashrc_path, &new_bashrc).context("failed to write new .bashrc")?;
fs::write(login_path, &new_login).context("failed to write new .bash_login")?;
Ok(())
}