-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscswitch
More file actions
executable file
·97 lines (82 loc) · 2.4 KB
/
scswitch
File metadata and controls
executable file
·97 lines (82 loc) · 2.4 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash
TITLE="Scala Switch Script\n-------------------\nhttps://github.com/lieldulev/brew-scala-switcher"
DISCLAMER="\nDISCLAMER: This script assumes you've installed scala versions using brew install scala/scala210/scala29."
HELP="Usage: scswitch [VERSION]\n\nVERSION - Supports versions 2.9.*, 2.10.* and 2.11.*\n\nInstalled Versions:\n"
SWITCHING="Switchd to: "
NOT_FOUND="Version %s not found.\n"
VERSION=$1
function list_versions () {
list_211
list_210
list_29
}
function list_ver {
local main_scala_version="$1"
local compare="$2"
IFS='.' read -a array <<< "$main_scala_version"
if [ "${array[1]}" = "$compare" ]; then
printf "${array[0]}.${array[1]}.${array[2]} - Type 'scswitch 2.$compare' to switch to this version.\n"
fi
}
function list_211 () {
local ls_res=`ls /usr/local/Cellar/scala/ 2>/dev/null`
list_ver "${ls_res#\n}" "11"
}
function list_210 () {
local ls_res=`ls /usr/local/Cellar/scala210/ 2>/dev/null`
list_ver "${ls_res#\n}" "10"
}
function list_29 () {
local ls_res=`ls /usr/local/Cellar/scala29/ 2>/dev/null`
list_ver "${ls_res#\n}" "9"
}
function switch_to {
local base_path="$1"
rm "/usr/local/bin/scala"
rm "/usr/local/bin/scalac"
rm "/usr/local/bin/scaladoc"
rm "/usr/local/bin/scalap"
ln -s "$base_path/bin/scala" "/usr/local/bin/scala"
ln -s "$base_path/bin/scalac" "/usr/local/bin/scalac"
ln -s "$base_path/bin/scaladoc" "/usr/local/bin/scaladoc"
ln -s "$base_path/bin/scalap" "/usr/local/bin/scalap"
printf "$SWITCHING $base_path\n"
}
function switchto_x {
local clean="$1"
if [ "$clean" != "" ]; then
switch_to "/usr/local/Cellar/$2/$clean"
else
printf "$NOT_FOUND\n" "$3"
fi
}
function switchto_211 {
local ls_res=`ls /usr/local/Cellar/scala/ 2>/dev/null`
switchto_x "${ls_res#\n}" "scala" "2.11"
}
function switchto_210 {
local ls_res=`ls /usr/local/Cellar/scala210/ 2>/dev/null`
switchto_x "${ls_res#\n}" "scala210" "2.10"
}
function switchto_29 {
local ls_res=`ls /usr/local/Cellar/scala29/ 2>/dev/null`
switchto_x "${ls_res#\n}" "scala29" "2.9"
}
# EXCEUTING STARTS HERE:
# Help / List
if [ "$VERSION" = "" ]; then
printf "\n$TITLE\n"
printf "\n$HELP\n"
list_versions
printf "$DISCLAMER\n"
else # Switch
if [ "$VERSION" = "2.11" ]; then
switchto_211
elif [ "$VERSION" = "2.10" ]; then
switchto_210
elif [ "$VERSION" = "2.9" ]; then
switchto_29
else
echo "Unknown version."
fi
fi