moved repo fallback into a helper function

This commit is contained in:
Valerie Wolfe 2024-02-28 17:55:33 -05:00
parent 2ede502884
commit e0ea051bf4
2 changed files with 15 additions and 13 deletions

View file

@ -24,10 +24,7 @@ pub fn attach(pargs: &mut Arguments) {
let window: Option<&OsString>;
if args.len() < 1 {
// missing name will attempt to fall back to repository
let repo = util::repo_root(current_dir().unwrap());
if repo.is_none() { error::missing_target(); }
target = repo.unwrap().file_name().unwrap().to_string_lossy().to_string();
target = util::repo_fallback();
if !util::session_exists(target.clone()) { error::missing_target(); }
window = None;
} else {
@ -87,10 +84,7 @@ pub fn has(pargs: &mut Arguments) {
let target: String;
if args.len() < 1 {
// missing name will attempt to fall back to repository
let repo = util::repo_root(current_dir().unwrap());
if repo.is_none() { error::missing_target(); }
target = repo.unwrap().file_name().unwrap().to_string_lossy().to_string();
target = util::repo_fallback();
} else {
target = args.get(0).unwrap().to_string_lossy().to_string();
}
@ -153,10 +147,7 @@ pub fn new(pargs: &mut Arguments) {
let command: Option<&OsString>;
if args.len() < 1 {
// missing name will attempt to fall back to repository
let repo = util::repo_root(current_dir().unwrap());
if repo.is_none() { error::missing_target(); }
title = repo.unwrap().file_name().unwrap().to_string_lossy().to_string();
title = util::repo_fallback();
command = None;
} else {
title = args.get(0).unwrap().to_string_lossy().to_string();

View file

@ -1,5 +1,5 @@
use std::{
env::var,
env::{ current_dir, var },
path::PathBuf,
process::exit
};
@ -9,6 +9,8 @@ use tmux_interface::{
variables::session::session::SESSION_ALL
};
use crate::error;
/// return a Vec of all sessions or None
pub fn get_sessions() -> Option<Vec<Session>> {
let i_sessions = Sessions::get(SESSION_ALL);
@ -37,6 +39,15 @@ pub fn session_exists<S: Into<String>>(target: S) -> bool {
.success()
}
/// attempt to return the repo name or exit
pub fn repo_fallback() -> String {
let repo = repo_root(current_dir().unwrap());
if repo.is_none() { error::missing_target(); }
let target = repo.unwrap().file_name().unwrap().to_string_lossy().to_string();
target
}
/// recursively attempt to find a git root directory
pub fn repo_root(path: PathBuf) -> Option<PathBuf> {
// if .git dir is found, return