Last active
February 16, 2021 16:11
-
-
Save kenji-miyake/5dddbed7e50ab15b6f1e77c80eef65ef to your computer and use it in GitHub Desktop.
check-env-diff.fish
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env fish | |
function check-env-diff | |
# Check arguments | |
if test (count $argv) -lt 1 | |
echo "Please input command as the 1st argument." | |
return | |
end | |
set cmd $argv[1..-1] | |
# Save env before command | |
env | sort >/tmp/before.env | |
# Execute command | |
eval "$cmd" >/dev/null 2>&1 | |
# Save env after command | |
env | sort >/tmp/after.env | |
# Compare env | |
set env_diff_lines (diff /tmp/before.env /tmp/after.env) | |
# Get different key names | |
set different_key_names | |
for env_diff_line in $env_diff_lines | |
set -l pattern "^[<>] (\w+).*" | |
if not string match -q -r -- $pattern "$env_diff_line" | |
continue | |
end | |
set different_key_name (string replace -r -- $pattern "\$1" "$env_diff_line") | |
if not contains $different_key_name $different_key_names | |
set different_key_names $different_key_names $different_key_name | |
end | |
end | |
# Show different key names | |
printf "%s\n" $different_key_names | |
end | |
if test (count $argv) -ge 1 | |
check-env-diff $argv | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage
Example