summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/main.rs b/src/main.rs
index df34235..530adac 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,13 +1,13 @@
use std::env;
use std::ffi::OsString;
use std::fmt::Debug;
-use std::fs::{DirEntry, metadata, read_dir, read_to_string};
+use std::fs::{metadata, read_dir, read_to_string, DirEntry};
use std::io;
use std::path::{Path, PathBuf};
-use std::process::{Command, Stdio, ExitStatus};
+use std::process::{Command, ExitStatus, Stdio};
use std::string::FromUtf8Error;
-use clap::Clap;
+use clap::Parser;
use thiserror::Error;
/// Load environment variables from DIR (or ~/.envdir).
@@ -27,8 +27,7 @@ use thiserror::Error;
/// eval "$(envdir-helper)"
///
/// The generated output is compatible with sh, and thus with bash and zsh.
-#[derive(Clap)]
-#[clap(version=env!("CARGO_PKG_VERSION"))]
+#[derive(Parser)]
struct Opts {
/// Directory to read environment variables from [default: ~/.envdir]
envdir: Option<PathBuf>,
@@ -112,13 +111,13 @@ fn detect_env_script(path: &Path) -> Result<ExportScript, PathStringError> {
fn no_export_env_script(name: &str, content: &str) -> String {
let name = shlex::quote(name);
- let content= shlex::quote(content);
+ let content = shlex::quote(content);
format!("{}={}", name, content)
}
fn export_env_script(name: &str, content: &str) -> String {
let name = shlex::quote(name);
- let content= shlex::quote(content);
+ let content = shlex::quote(content);
format!("{}={}; export {}", name, content, name)
}
@@ -132,9 +131,9 @@ enum PathStringError {
fn path_to_string(path: &Path) -> Result<&str, PathStringError> {
use PathStringError::*;
- let file_name = path.file_name()
- .ok_or_else(|| NamelessPath(path.into()))?;
- file_name.to_str()
+ let file_name = path.file_name().ok_or_else(|| NamelessPath(path.into()))?;
+ file_name
+ .to_str()
.ok_or_else(|| NonUnicodePath(file_name.into()))
}
@@ -145,7 +144,7 @@ enum EnvContentError {
#[error("program produced non-UTF-8 output: {0}")]
NonUnicodeOutput(#[from] FromUtf8Error),
#[error("program {0:?} exited with status: {1}")]
- ProgramFailed(PathBuf, ExitStatus)
+ ProgramFailed(PathBuf, ExitStatus),
}
fn env_content(path: &Path) -> Result<String, EnvContentError> {
@@ -158,7 +157,7 @@ fn env_content(path: &Path) -> Result<String, EnvContentError> {
if content.ends_with("\n") {
content.pop();
}
-
+
Ok(content)
}
@@ -181,7 +180,7 @@ fn env_program_content(path: &Path) -> Result<String, EnvContentError> {
.stdout(Stdio::piped())
.stderr(Stdio::inherit())
.output()?;
-
+
if output.status.success() {
let output = String::from_utf8(output.stdout)?;
Ok(output)