-
-
Notifications
You must be signed in to change notification settings - Fork 1k
/
environment-convertor
executable file
·74 lines (60 loc) · 1.73 KB
/
environment-convertor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env bash
# Usage: $rvm_path/scripts/environment-convertor <shell> <environment>
unset GREP_COLOR
unset GREP_OPTIONS
source "$rvm_path/scripts/base"
convert_path_to_fish()
{
local parts path_parts
path_part="$1"
parts="$(echo "$path_part" | sed -e 's#:\$PATH##' -e "s#:#\" \"#g" -e "s#^export \\([^[:space:]]*\\)=##")"
printf "\
for path_part in $parts
if test -d $path_part
set PATH $path_parth $PATH
end
end
"
return 0
}
convert_unset_to_fish()
{
sed 's#^unset #set -e #'
}
convert_exports_to_fish()
{
sed -e "s#:#' '#g" -e "s#^\\(export \\)\\{0,1\\}\\([^[:space:]]*\\)=#set -x \\2 #"
}
contents_of_environment_file()
{
cat "$rvm_path/environments/$(__rvm_environment_identifier)"
}
convert_to_shell()
{
convert_path_to_fish "$(contents_of_environment_file | \grep '^export PATH=')"
while read -r shell_line; do
if echo "$shell_line" | \grep -q '^unset '; then
echo "$shell_line" | convert_unset_to_fish
else
echo "$shell_line" | convert_exports_to_fish
fi
done < <(contents_of_environment_file | \grep -v '^export [^=]*$' | \grep -v '^export PATH=')
unset shell_line
}
ensure_has_shell()
{
for item in "path" "unset" "exports"; do
command -v "convert_${item}_to_${1}" >/dev/null || return 1
done; unset item
}
args=($*)
shell_name="${args[0]}"
environment_name="${args[1]:-"$(__rvm_environment_identifier)"}"
args="$(echo ${args[@]:2}) " # Strip trailing / leading / extra spacing.
[[ -n "$shell_name" && -n "$environment_name" ]] || exit 1
ensure_has_shell "$shell_name" || exit 1
# Check we're loading a different shell.
if [[ "$(__rvm_environment_identifier)" != "$environment_name" ]]; then
__rvm_become "$environment_name" || exit 1
fi
convert_to_shell