Skip to content

Commit

Permalink
Prefer PWD environment variable over cwd if available to better suppo…
Browse files Browse the repository at this point in the history
…rt symbolic links (#783)
  • Loading branch information
pdecat authored Mar 14, 2023
1 parent 88deec3 commit efd2230
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 12 deletions.
6 changes: 2 additions & 4 deletions atuin-client/src/database.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use std::{env, path::Path, str::FromStr};

use async_trait::async_trait;
use atuin_common::utils;
use chrono::{prelude::*, Utc};
use fs_err as fs;
use itertools::Itertools;
Expand Down Expand Up @@ -31,10 +32,7 @@ pub fn current_context() -> Context {
std::process::exit(1);
};
let hostname = format!("{}:{}", whoami::hostname(), whoami::username());
let cwd = match env::current_dir() {
Ok(dir) => dir.display().to_string(),
Err(_) => String::from(""),
};
let cwd = utils::get_current_dir();

Context {
session,
Expand Down
12 changes: 12 additions & 0 deletions atuin-common/src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use std::env;
use std::path::PathBuf;

use chrono::NaiveDate;
Expand Down Expand Up @@ -36,6 +37,17 @@ pub fn data_dir() -> PathBuf {
data_dir.join("atuin")
}

pub fn get_current_dir() -> String {
// Prefer PWD environment variable over cwd if available to better support symbolic links
match env::var("PWD") {
Ok(v) => v,
Err(_) => match env::current_dir() {
Ok(dir) => dir.display().to_string(),
Err(_) => String::from(""),
},
}
}

pub fn get_days_from_month(year: i32, month: u32) -> i64 {
NaiveDate::from_ymd(
match month {
Expand Down
6 changes: 3 additions & 3 deletions src/command/client/history.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use std::{
time::Duration,
};

use atuin_common::utils;
use clap::Subcommand;
use eyre::Result;
use runtime_format::{FormatKey, FormatKeyError, ParsedFmt};
Expand Down Expand Up @@ -181,8 +182,7 @@ impl Cmd {

// It's better for atuin to silently fail here and attempt to
// store whatever is ran, than to throw an error to the terminal
let cwd = env::current_dir()
.map_or_else(|_| String::new(), |dir| dir.display().to_string());
let cwd = utils::get_current_dir();

let h = History::new(chrono::Utc::now(), command, cwd, -1, -1, None, None);

Expand Down Expand Up @@ -240,7 +240,7 @@ impl Cmd {
None
};
let cwd = if *cwd {
Some(env::current_dir()?.display().to_string())
Some(utils::get_current_dir())
} else {
None
};
Expand Down
7 changes: 2 additions & 5 deletions src/command/client/search.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use atuin_common::utils;
use chrono::Utc;
use clap::Parser;
use eyre::Result;
Expand Down Expand Up @@ -137,11 +138,7 @@ async fn run_non_interactive(
db: &mut impl Database,
) -> Result<usize> {
let dir = if cwd.as_deref() == Some(".") {
let current = std::env::current_dir()?;
let current = current.as_os_str();
let current = current.to_str().unwrap();

Some(current.to_owned())
Some(utils::get_current_dir())
} else {
cwd
};
Expand Down

1 comment on commit efd2230

@vercel
Copy link

@vercel vercel bot commented on efd2230 Mar 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

atuin – ./

atuin-git-main-ellieh.vercel.app
atuin.sh
atuin-ellieh.vercel.app

Please sign in to comment.