Add shell completion #68

Merged
oysteikt merged 3 commits from add-shell-completion into main 2024-08-19 02:24:46 +02:00
1 changed files with 34 additions and 30 deletions
Showing only changes of commit 94e0e5d6c7 - Show all commits

View File

@ -3,40 +3,44 @@ use anyhow::anyhow;
#[cfg(feature = "mysql-admutils-compatibility")] #[cfg(feature = "mysql-admutils-compatibility")]
use std::{env, os::unix::fs::symlink, path::PathBuf}; use std::{env, os::unix::fs::symlink, path::PathBuf};
fn main() -> anyhow::Result<()> { fn generate_mysql_admutils_symlinks() -> anyhow::Result<()> {
#[cfg(feature = "mysql-admutils-compatibility")] // NOTE: This is slightly illegal, and depends on implementation details.
{ // But it is only here for ease of testing the compatibility layer,
// NOTE: This is slightly illegal, and depends on implementation details. // and not critical in any way. Considering the code is never going
// But it is only here for ease of testing the compatibility layer, // to be used as a library, it should be fine.
// and not critical in any way. Considering the code is never going let target_profile_dir: PathBuf = PathBuf::from(env::var("OUT_DIR")?)
// to be used as a library, it should be fine. .parent()
let target_profile_dir: PathBuf = PathBuf::from(env::var("OUT_DIR")?) .and_then(|p| p.parent())
.parent() .and_then(|p| p.parent())
.and_then(|p| p.parent()) .ok_or(anyhow!("Could not resolve target profile directory"))?
.and_then(|p| p.parent()) .to_path_buf();
.ok_or(anyhow!("Could not resolve target profile directory"))?
.to_path_buf();
if !target_profile_dir.exists() { if !target_profile_dir.exists() {
std::fs::create_dir_all(&target_profile_dir)?; std::fs::create_dir_all(&target_profile_dir)?;
} }
if !target_profile_dir.join("mysql-useradm").exists() { if !target_profile_dir.join("mysql-useradm").exists() {
symlink( symlink(
target_profile_dir.join("mysqladm"), target_profile_dir.join("mysqladm"),
target_profile_dir.join("mysql-useradm"), target_profile_dir.join("mysql-useradm"),
) )
.ok(); .ok();
} }
if !target_profile_dir.join("mysql-dbadm").exists() { if !target_profile_dir.join("mysql-dbadm").exists() {
symlink( symlink(
target_profile_dir.join("mysqladm"), target_profile_dir.join("mysqladm"),
target_profile_dir.join("mysql-dbadm"), target_profile_dir.join("mysql-dbadm"),
) )
.ok(); .ok();
}
} }
Ok(()) Ok(())
} }
fn main() -> anyhow::Result<()> {
#[cfg(feature = "mysql-admutils-compatibility")]
generate_mysql_admutils_symlinks()?;
Ok(())
}