Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# changelog

## [Unreleased]

### Fixed

- piping .env to stdin and running envset keys will now print the keys instead of writing them to .env
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ brew install schpet/tap/envset
cargo install envset
```

otherwise, grab the [latest release](https://github.com/schpet/envset/releases).
otherwise, grab the [latest release](https://github.com/schpet/envset/releases/latest).

## usage

Expand Down
10 changes: 7 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -225,14 +225,18 @@ pub fn print_lines<W: Write>(lines: &[parser::Line], writer: &mut W, use_color:

pub fn print_env_keys_to_writer<W: Write>(file_path: &str, writer: &mut W) {
if let Ok(env_vars) = read_env_vars(file_path) {
for key in env_vars.keys() {
writeln!(writer, "{}", key).unwrap();
}
print_keys_from_map(&env_vars, writer);
} else {
eprintln!("Error reading .env file");
}
}

pub fn print_keys_from_map<W: Write>(env_vars: &HashMap<String, String>, writer: &mut W) {
for key in env_vars.keys() {
writeln!(writer, "{}", key).unwrap();
}
}

pub fn delete_env_vars(
content: &str,
keys: &[String],
Expand Down
11 changes: 8 additions & 3 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ use std::process;

use envset::{
add_env_vars, parse_args, parse_stdin, print_env_file_contents, print_env_keys_to_writer,
print_env_vars, print_env_vars_as_json, print_parse_tree, read_env_file_contents,
read_env_vars,
print_env_vars, print_env_vars_as_json, print_keys_from_map, print_parse_tree,
read_env_file_contents, read_env_vars,
};

fn print_diff(old_content: &str, new_content: &str, use_color: bool) {
Expand Down Expand Up @@ -128,7 +128,12 @@ fn main() {
return; // Exit after printing
}
Some(Commands::Keys) => {
print_env_keys_to_writer(&cli.file, &mut std::io::stdout());
if !atty::is(Stream::Stdin) {
let env_vars = parse_stdin();
print_keys_from_map(&env_vars, &mut std::io::stdout());
} else {
print_env_keys_to_writer(&cli.file, &mut std::io::stdout());
}
}
Some(Commands::Delete { keys }) => match read_env_file_contents(&cli.file) {
Ok(old_content) => match envset::delete_env_vars(&old_content, keys) {
Expand Down