Skip to content

Instantly share code, notes, and snippets.

@kenji-miyake
Last active February 16, 2021 16:11
Show Gist options
  • Save kenji-miyake/5dddbed7e50ab15b6f1e77c80eef65ef to your computer and use it in GitHub Desktop.
Save kenji-miyake/5dddbed7e50ab15b6f1e77c80eef65ef to your computer and use it in GitHub Desktop.
check-env-diff.fish
#!/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
@kenji-miyake
Copy link
Author

Usage

curl -fsSL https://gist.github.com/kenji-miyake/5dddbed7e50ab15b6f1e77c80eef65ef/raw/b245537547648ed849b092c3719ac8a1ee034e3d/check-env-diff.fish | source && YOUR_COMMAND_ARRAY

Example

curl -fsSL https://gist.github.com/kenji-miyake/5dddbed7e50ab15b6f1e77c80eef65ef/raw/b245537547648ed849b092c3719ac8a1ee034e3d/check-env-diff.fish | source && check-env-diff bass source install/setup.bash

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment